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