Index: chrome/browser/views/frame/browser_view.cc |
=================================================================== |
--- chrome/browser/views/frame/browser_view.cc (revision 5722) |
+++ chrome/browser/views/frame/browser_view.cc (working copy) |
@@ -25,6 +25,7 @@ |
#include "chrome/browser/views/frame/browser_frame.h" |
#include "chrome/browser/views/html_dialog_view.h" |
#include "chrome/browser/views/importer_view.h" |
+#include "chrome/browser/views/infobars/infobar_container.h" |
#include "chrome/browser/views/keyword_editor_view.h" |
#include "chrome/browser/views/password_manager_view.h" |
#include "chrome/browser/views/status_bubble.h" |
@@ -338,6 +339,9 @@ |
toolbar_->Init(browser_->profile()); |
toolbar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_TOOLBAR)); |
+ infobar_container_ = new InfoBarContainer(this); |
+ AddChildView(infobar_container_); |
+ |
contents_container_ = new TabContentsContainerView; |
set_contents_view(contents_container_); |
AddChildView(contents_container_); |
@@ -645,7 +649,9 @@ |
if (old_contents) |
old_contents->StoreFocus(); |
- // Tell the frame what happened so that the TabContents gets resized, etc. |
+ // Update various elements that are interested in knowing the current |
+ // TabContents. |
+ infobar_container_->ChangeTabContents(new_contents); |
contents_container_->SetTabContents(new_contents); |
// TODO(beng): This should be called automatically by SetTabContents, but I |
// am striving for parity now rather than cleanliness. This is |
@@ -1055,7 +1061,7 @@ |
// the Bookmark bar isn't visible on all tabs, then we need to show the |
// Info bar _above_ the Bookmark bar, since the Bookmark bar is styled to |
// look like it's part of the New Tab Page... |
- if (active_info_bar_ && active_bookmark_bar_ && |
+ if (active_bookmark_bar_ && |
bookmark_bar_view_->IsNewTabPage() && |
!bookmark_bar_view_->IsAlwaysShown()) { |
top = LayoutInfoBar(top); |
@@ -1078,13 +1084,21 @@ |
return top; |
} |
int BrowserView::LayoutInfoBar(int top) { |
- if (SupportsWindowFeature(FEATURE_INFOBAR) && active_info_bar_) { |
- gfx::Size ps = active_info_bar_->GetPreferredSize(); |
- active_info_bar_->SetBounds(0, top, width(), ps.height()); |
+ if (SupportsWindowFeature(FEATURE_INFOBAR)) { |
+ // Layout the new infobar. |
+ gfx::Size ps = infobar_container_->GetPreferredSize(); |
+ infobar_container_->SetBounds(0, top, width(), ps.height()); |
top += ps.height(); |
- if (SupportsWindowFeature(FEATURE_BOOKMARKBAR) && active_bookmark_bar_ && |
- !show_bookmark_bar_pref_.GetValue()) { |
- top -= kSeparationLineHeight; |
+ |
+ if (active_info_bar_) { |
+ // Layout the old infobar. |
+ ps = active_info_bar_->GetPreferredSize(); |
+ active_info_bar_->SetBounds(0, top, width(), ps.height()); |
+ top += ps.height(); |
+ if (SupportsWindowFeature(FEATURE_BOOKMARKBAR) && active_bookmark_bar_ && |
+ !show_bookmark_bar_pref_.GetValue()) { |
+ top -= kSeparationLineHeight; |
+ } |
} |
} |
return top; |
@@ -1131,7 +1145,10 @@ |
if (contents && contents->AsWebContents() && |
contents->AsWebContents()->view()->IsInfoBarVisible()) |
new_info_bar = contents->AsWebContents()->view()->GetInfoBarView(); |
- return UpdateChildViewAndLayout(new_info_bar, &active_info_bar_); |
+ UpdateChildViewAndLayout(new_info_bar, &active_info_bar_); |
+ |
+ // TODO(beng): remove this function once the InfoBar rejiggering is complete. |
+ return true; |
} |
bool BrowserView::MaybeShowDownloadShelf(TabContents* contents) { |