Index: chrome/browser/ui/views/toolbar/toolbar_view.cc |
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc |
index 2263be873795c7faa5e0f8866b971c54a6d397b1..fe4c2ad03d27bf8641c20769cba56b4e6cf6cf95 100644 |
--- a/chrome/browser/ui/views/toolbar/toolbar_view.cc |
+++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc |
@@ -13,6 +13,7 @@ |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/command_updater.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/search/search.h" |
#include "chrome/browser/themes/theme_service.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_command_controller.h" |
@@ -36,6 +37,7 @@ |
#include "chrome/browser/ui/views/toolbar/button_dropdown.h" |
#include "chrome/browser/ui/views/toolbar/home_button.h" |
#include "chrome/browser/ui/views/toolbar/reload_button.h" |
+#include "chrome/browser/ui/views/toolbar/site_chip_view.h" |
#include "chrome/browser/ui/views/toolbar/wrench_menu.h" |
#include "chrome/browser/ui/views/toolbar/wrench_toolbar_button.h" |
#include "chrome/browser/upgrade_detector.h" |
@@ -119,6 +121,7 @@ ToolbarView::ToolbarView(Browser* browser) |
reload_(NULL), |
home_(NULL), |
location_bar_(NULL), |
+ site_chip_view_(NULL), |
browser_actions_(NULL), |
app_menu_(NULL), |
browser_(browser) { |
@@ -223,6 +226,11 @@ void ToolbarView::Init() { |
AddChildView(reload_); |
AddChildView(home_); |
AddChildView(location_bar_); |
+ if (chrome::ShouldDisplayOriginChip()) { |
+ // use --force-fieldtrials=EmbeddedSearch/Group1 origin_chip:1/ to force |
Peter Kasting
2013/11/19 02:47:32
Nit: I would prefer not to document this here.
Greg Billock
2013/11/20 01:27:35
Done.
|
+ site_chip_view_ = new SiteChipView(this); |
Peter Kasting
2013/11/19 02:47:32
Nit: Instead of conditionally creating this, consi
Greg Billock
2013/11/20 01:28:48
Good point. Will do that in another patch.
|
+ AddChildView(site_chip_view_); |
+ } |
AddChildView(browser_actions_); |
AddChildView(app_menu_); |
@@ -234,6 +242,8 @@ void ToolbarView::Init() { |
UpdateAppMenuState(); |
location_bar_->Init(); |
+ if (site_chip_view_) |
+ site_chip_view_->Init(); |
show_home_button_.Init(prefs::kShowHomeButton, |
browser_->profile()->GetPrefs(), |
base::Bind(&ToolbarView::OnShowHomeButtonChanged, |
@@ -254,6 +264,8 @@ void ToolbarView::Init() { |
void ToolbarView::Update(WebContents* tab) { |
if (location_bar_) |
location_bar_->Update(tab); |
+ if (site_chip_view_) |
+ site_chip_view_->Update(tab); |
if (browser_actions_) |
browser_actions_->RefreshBrowserActionViews(); |
@@ -475,6 +487,7 @@ gfx::Size ToolbarView::GetPreferredSize() { |
(show_home_button_.GetValue() ? |
(home_->GetPreferredSize().width() + button_spacing) : 0) + |
location_bar_->GetPreferredSize().width() + |
+ (site_chip_view_ ? site_chip_view_->GetPreferredSize().width() : 0) + |
browser_actions_->GetPreferredSize().width() + |
app_menu_->GetPreferredSize().width() + kRightEdgeSpacing; |
gfx::ImageSkia* normal_background = |
@@ -541,18 +554,31 @@ void ToolbarView::Layout() { |
} |
int browser_actions_width = browser_actions_->GetPreferredSize().width(); |
+ int site_chip_width = |
+ site_chip_view_ ? site_chip_view_->GetPreferredSize().width() : 0; |
int app_menu_width = app_menu_->GetPreferredSize().width(); |
int location_x = home_->x() + home_->width() + kStandardSpacing; |
int available_width = std::max(0, width() - kRightEdgeSpacing - |
app_menu_width - browser_actions_width - location_x); |
+ // Cap site chip width at 1/2 the size available to the location bar. |
+ site_chip_width = std::min(site_chip_width, available_width/2); |
Peter Kasting
2013/11/19 02:47:32
Nit: Spaces around operators
Be careful in your s
Greg Billock
2013/11/20 01:27:35
Yeah, that's a regression -- it will currently shr
|
+ available_width -= site_chip_width; |
+ |
int location_height = location_bar_->GetPreferredSize().height(); |
int location_y = (height() - location_height + 1) / 2; |
location_bar_->SetBounds(location_x, location_y, std::max(available_width, 0), |
location_height); |
- browser_actions_->SetBounds(location_bar_->x() + location_bar_->width(), 0, |
+ int browser_actions_x = location_bar_->x() + location_bar_->width(); |
+ if (site_chip_view_) { |
+ site_chip_view_->SetBounds(location_bar_->x() + location_bar_->width(), |
+ child_y, site_chip_width, child_height); |
+ browser_actions_x += site_chip_width; |
+ } |
+ browser_actions_->SetBounds(browser_actions_x, 0, |
browser_actions_width, height()); |
+ |
// The browser actions need to do a layout explicitly, because when an |
// extension is loaded/unloaded/changed, BrowserActionContainer removes and |
// re-adds everything, regardless of whether it has a page action. For a |