1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file. 4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/views/infobars/infobar_container_view.h" 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/view_ids.h" 8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/ui/views/infobars/infobar_view.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "grit/generated_resources.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ui/base/accessibility/accessible_view_state.h" 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ui/base/l10n/l10n_util.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenInfoBarContainerView::InfoBarContainerView(Delegate* delegate) 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen : InfoBarContainer(delegate) { 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen SetID(VIEW_ID_INFO_BAR_CONTAINER); 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian MonsenInfoBarContainerView::~InfoBarContainerView() { 19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen RemoveAllInfoBarsForDestruction(); 20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsengfx::Size InfoBarContainerView::GetPreferredSize() { 23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // We do not have a preferred width (we will expand to fit the available width 24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // of the delegate). 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int total_height; 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen GetVerticalOverlap(&total_height); 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen return gfx::Size(0, total_height); 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid InfoBarContainerView::Layout() { 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int top = GetVerticalOverlap(NULL); 32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen for (int i = 0; i < child_count(); ++i) { 34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen InfoBarView* child = static_cast<InfoBarView*>(GetChildViewAt(i)); 35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen top -= child->arrow_height(); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen int child_height = child->total_height(); 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen child->SetBounds(0, top, width(), child_height); 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen top += child_height; 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen } 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid InfoBarContainerView::GetAccessibleState(ui::AccessibleViewState* state) { 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen state->role = ui::AccessibilityTypes::ROLE_GROUPING; 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen state->name = l10n_util::GetStringUTF16(IDS_ACCNAME_INFOBAR_CONTAINER); 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid InfoBarContainerView::PlatformSpecificAddInfoBar(InfoBar* infobar) { 48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen AddChildView(static_cast<InfoBarView*>(infobar)); 49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid InfoBarContainerView::PlatformSpecificRemoveInfoBar(InfoBar* infobar) { 52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen RemoveChildView(static_cast<InfoBarView*>(infobar)); 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} 54