Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: chrome/browser/ui/views/toolbar/toolbar_view.cc

Issue 1654223002: Views - init less stuff in tabless browsers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: self review Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/views/toolbar/toolbar_view.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 5 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/i18n/number_formatting.h" 10 #include "base/i18n/number_formatting.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "base/trace_event/trace_event.h" 12 #include "base/trace_event/trace_event.h"
13 #include "build/build_config.h" 13 #include "build/build_config.h"
14 #include "chrome/app/chrome_command_ids.h" 14 #include "chrome/app/chrome_command_ids.h"
15 #include "chrome/browser/chrome_notification_types.h" 15 #include "chrome/browser/chrome_notification_types.h"
16 #include "chrome/browser/command_updater.h" 16 #include "chrome/browser/command_updater.h"
17 #include "chrome/browser/extensions/extension_commands_global_registry.h"
18 #include "chrome/browser/extensions/extension_util.h" 17 #include "chrome/browser/extensions/extension_util.h"
19 #include "chrome/browser/profiles/profile.h" 18 #include "chrome/browser/profiles/profile.h"
20 #include "chrome/browser/themes/theme_properties.h" 19 #include "chrome/browser/themes/theme_properties.h"
21 #include "chrome/browser/ui/browser.h" 20 #include "chrome/browser/ui/browser.h"
22 #include "chrome/browser/ui/browser_command_controller.h" 21 #include "chrome/browser/ui/browser_command_controller.h"
23 #include "chrome/browser/ui/browser_commands.h" 22 #include "chrome/browser/ui/browser_commands.h"
24 #include "chrome/browser/ui/browser_content_setting_bubble_model_delegate.h" 23 #include "chrome/browser/ui/browser_content_setting_bubble_model_delegate.h"
25 #include "chrome/browser/ui/browser_tabstrip.h" 24 #include "chrome/browser/ui/browser_tabstrip.h"
26 #include "chrome/browser/ui/browser_window.h" 25 #include "chrome/browser/ui/browser_window.h"
27 #include "chrome/browser/ui/global_error/global_error_service.h" 26 #include "chrome/browser/ui/global_error/global_error_service.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 114
116 } // namespace 115 } // namespace
117 116
118 // static 117 // static
119 const char ToolbarView::kViewClassName[] = "ToolbarView"; 118 const char ToolbarView::kViewClassName[] = "ToolbarView";
120 119
121 //////////////////////////////////////////////////////////////////////////////// 120 ////////////////////////////////////////////////////////////////////////////////
122 // ToolbarView, public: 121 // ToolbarView, public:
123 122
124 ToolbarView::ToolbarView(Browser* browser) 123 ToolbarView::ToolbarView(Browser* browser)
125 : back_(NULL), 124 : back_(nullptr),
126 forward_(NULL), 125 forward_(nullptr),
127 reload_(NULL), 126 reload_(nullptr),
128 home_(NULL), 127 home_(nullptr),
129 location_bar_(NULL), 128 location_bar_(nullptr),
130 browser_actions_(NULL), 129 browser_actions_(nullptr),
131 app_menu_button_(NULL), 130 app_menu_button_(nullptr),
132 browser_(browser), 131 browser_(browser),
133 badge_controller_(browser->profile(), this) { 132 badge_controller_(browser->profile(), this),
133 display_mode_(browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP)
134 ? DISPLAYMODE_NORMAL
135 : DISPLAYMODE_LOCATION) {
134 set_id(VIEW_ID_TOOLBAR); 136 set_id(VIEW_ID_TOOLBAR);
135 137
136 SetEventTargeter( 138 SetEventTargeter(
137 scoped_ptr<views::ViewTargeter>(new views::ViewTargeter(this))); 139 scoped_ptr<views::ViewTargeter>(new views::ViewTargeter(this)));
138 140
139 chrome::AddCommandObserver(browser_, IDC_BACK, this); 141 chrome::AddCommandObserver(browser_, IDC_BACK, this);
140 chrome::AddCommandObserver(browser_, IDC_FORWARD, this); 142 chrome::AddCommandObserver(browser_, IDC_FORWARD, this);
141 chrome::AddCommandObserver(browser_, IDC_RELOAD, this); 143 chrome::AddCommandObserver(browser_, IDC_RELOAD, this);
142 chrome::AddCommandObserver(browser_, IDC_HOME, this); 144 chrome::AddCommandObserver(browser_, IDC_HOME, this);
143 chrome::AddCommandObserver(browser_, IDC_LOAD_NEW_TAB_PAGE, this); 145 chrome::AddCommandObserver(browser_, IDC_LOAD_NEW_TAB_PAGE, this);
144 146
145 display_mode_ = DISPLAYMODE_LOCATION;
146 if (browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP))
147 display_mode_ = DISPLAYMODE_NORMAL;
148
149 if (OutdatedUpgradeBubbleView::IsAvailable()) { 147 if (OutdatedUpgradeBubbleView::IsAvailable()) {
150 registrar_.Add(this, chrome::NOTIFICATION_OUTDATED_INSTALL, 148 registrar_.Add(this, chrome::NOTIFICATION_OUTDATED_INSTALL,
151 content::NotificationService::AllSources()); 149 content::NotificationService::AllSources());
152 registrar_.Add(this, chrome::NOTIFICATION_OUTDATED_INSTALL_NO_AU, 150 registrar_.Add(this, chrome::NOTIFICATION_OUTDATED_INSTALL_NO_AU,
153 content::NotificationService::AllSources()); 151 content::NotificationService::AllSources());
154 } 152 }
155 #if defined(OS_WIN) 153 #if defined(OS_WIN)
156 registrar_.Add(this, chrome::NOTIFICATION_CRITICAL_UPGRADE_INSTALLED, 154 registrar_.Add(this, chrome::NOTIFICATION_CRITICAL_UPGRADE_INSTALLED,
157 content::NotificationService::AllSources()); 155 content::NotificationService::AllSources());
158 #endif 156 #endif
159 } 157 }
160 158
161 ToolbarView::~ToolbarView() { 159 ToolbarView::~ToolbarView() {
162 // NOTE: Don't remove the command observers here. This object gets destroyed 160 // NOTE: Don't remove the command observers here. This object gets destroyed
163 // after the Browser (which owns the CommandUpdater), so the CommandUpdater is 161 // after the Browser (which owns the CommandUpdater), so the CommandUpdater is
164 // already gone. 162 // already gone.
165 } 163 }
166 164
167 void ToolbarView::Init() { 165 void ToolbarView::Init() {
168 GetWidget()->AddObserver(this); 166 location_bar_ =
167 new LocationBarView(browser_, browser_->profile(),
168 browser_->command_controller()->command_updater(),
169 this, !is_display_mode_normal());
170
171 if (!is_display_mode_normal()) {
172 AddChildView(location_bar_);
173 location_bar_->Init();
174 return;
175 }
169 176
170 back_ = new BackButton( 177 back_ = new BackButton(
171 browser_->profile(), this, 178 browser_->profile(), this,
172 new BackForwardMenuModel(browser_, BackForwardMenuModel::BACKWARD_MENU)); 179 new BackForwardMenuModel(browser_, BackForwardMenuModel::BACKWARD_MENU));
173 back_->set_triggerable_event_flags( 180 back_->set_triggerable_event_flags(
174 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON); 181 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON);
175 back_->set_tag(IDC_BACK); 182 back_->set_tag(IDC_BACK);
176 back_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK)); 183 back_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_BACK));
177 back_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK)); 184 back_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_BACK));
178 back_->set_id(VIEW_ID_BACK_BUTTON); 185 back_->set_id(VIEW_ID_BACK_BUTTON);
179 back_->Init(); 186 back_->Init();
180 187
181 forward_ = new ToolbarButton( 188 forward_ = new ToolbarButton(
182 browser_->profile(), this, 189 browser_->profile(), this,
183 new BackForwardMenuModel(browser_, BackForwardMenuModel::FORWARD_MENU)); 190 new BackForwardMenuModel(browser_, BackForwardMenuModel::FORWARD_MENU));
184 forward_->set_triggerable_event_flags( 191 forward_->set_triggerable_event_flags(
185 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON); 192 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON);
186 forward_->set_tag(IDC_FORWARD); 193 forward_->set_tag(IDC_FORWARD);
187 forward_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_FORWARD)); 194 forward_->SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_FORWARD));
188 forward_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FORWARD)); 195 forward_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FORWARD));
189 forward_->set_id(VIEW_ID_FORWARD_BUTTON); 196 forward_->set_id(VIEW_ID_FORWARD_BUTTON);
190 forward_->Init(); 197 forward_->Init();
191 198
192 location_bar_ = new LocationBarView(
193 browser_, browser_->profile(),
194 browser_->command_controller()->command_updater(), this,
195 display_mode_ == DISPLAYMODE_LOCATION);
196
197 reload_ = new ReloadButton(browser_->profile(), 199 reload_ = new ReloadButton(browser_->profile(),
198 browser_->command_controller()->command_updater()); 200 browser_->command_controller()->command_updater());
199 reload_->set_triggerable_event_flags( 201 reload_->set_triggerable_event_flags(
200 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON); 202 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_MIDDLE_MOUSE_BUTTON);
201 reload_->set_tag(IDC_RELOAD); 203 reload_->set_tag(IDC_RELOAD);
202 reload_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_RELOAD)); 204 reload_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_RELOAD));
203 reload_->set_id(VIEW_ID_RELOAD_BUTTON); 205 reload_->set_id(VIEW_ID_RELOAD_BUTTON);
204 reload_->Init(); 206 reload_->Init();
205 207
206 home_ = new HomeButton(this, browser_); 208 home_ = new HomeButton(this, browser_);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 // Accessibility specific tooltip text. 269 // Accessibility specific tooltip text.
268 if (content::BrowserAccessibilityState::GetInstance()-> 270 if (content::BrowserAccessibilityState::GetInstance()->
269 IsAccessibleBrowser()) { 271 IsAccessibleBrowser()) {
270 back_->SetTooltipText( 272 back_->SetTooltipText(
271 l10n_util::GetStringUTF16(IDS_ACCNAME_TOOLTIP_BACK)); 273 l10n_util::GetStringUTF16(IDS_ACCNAME_TOOLTIP_BACK));
272 forward_->SetTooltipText( 274 forward_->SetTooltipText(
273 l10n_util::GetStringUTF16(IDS_ACCNAME_TOOLTIP_FORWARD)); 275 l10n_util::GetStringUTF16(IDS_ACCNAME_TOOLTIP_FORWARD));
274 } 276 }
275 } 277 }
276 278
277 void ToolbarView::OnWidgetActivationChanged(views::Widget* widget,
278 bool active) {
279 extensions::ExtensionCommandsGlobalRegistry* registry =
280 extensions::ExtensionCommandsGlobalRegistry::Get(browser_->profile());
281 if (active) {
282 registry->set_registry_for_active_window(
283 browser_actions_->extension_keybinding_registry());
284 } else if (registry->registry_for_active_window() ==
285 browser_actions_->extension_keybinding_registry()) {
286 registry->set_registry_for_active_window(nullptr);
287 }
288 }
289
290 void ToolbarView::Update(WebContents* tab) { 279 void ToolbarView::Update(WebContents* tab) {
291 if (location_bar_) 280 if (location_bar_)
292 location_bar_->Update(tab); 281 location_bar_->Update(tab);
293 if (browser_actions_) 282 if (browser_actions_)
294 browser_actions_->RefreshToolbarActionViews(); 283 browser_actions_->RefreshToolbarActionViews();
295 if (reload_) 284 if (reload_)
296 reload_->set_menu_enabled(chrome::IsDebuggerAttachedToCurrentTab(browser_)); 285 reload_->set_menu_enabled(chrome::IsDebuggerAttachedToCurrentTab(browser_));
297 } 286 }
298 287
299 void ToolbarView::ResetTabState(WebContents* tab) { 288 void ToolbarView::ResetTabState(WebContents* tab) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 views::Widget* bubble_widget) { 322 views::Widget* bubble_widget) {
334 if (bubble_widget && 323 if (bubble_widget &&
335 (anchor_view == location_bar()->star_view() || 324 (anchor_view == location_bar()->star_view() ||
336 anchor_view == location_bar()->save_credit_card_icon_view() || 325 anchor_view == location_bar()->save_credit_card_icon_view() ||
337 anchor_view == location_bar()->translate_icon_view())) { 326 anchor_view == location_bar()->translate_icon_view())) {
338 DCHECK(anchor_view); 327 DCHECK(anchor_view);
339 bubble_widget->AddObserver(static_cast<BubbleIconView*>(anchor_view)); 328 bubble_widget->AddObserver(static_cast<BubbleIconView*>(anchor_view));
340 } 329 }
341 } 330 }
342 331
343 void ToolbarView::ExecuteExtensionCommand(
344 const extensions::Extension* extension,
345 const extensions::Command& command) {
346 browser_actions_->ExecuteExtensionCommand(extension, command);
347 }
348
349 int ToolbarView::GetMaxBrowserActionsWidth() const { 332 int ToolbarView::GetMaxBrowserActionsWidth() const {
350 // The browser actions container is allowed to grow, but only up until the 333 // The browser actions container is allowed to grow, but only up until the
351 // omnibox reaches its minimum size. So its maximum allowed width is its 334 // omnibox reaches its minimum size. So its maximum allowed width is its
352 // current size, plus any that the omnibox could give up. 335 // current size, plus any that the omnibox could give up.
353 return browser_actions_->width() + 336 return browser_actions_->width() +
354 (location_bar_->width() - location_bar_->GetMinimumSize().width()); 337 (location_bar_->width() - location_bar_->GetMinimumSize().width());
355 } 338 }
356 339
357 //////////////////////////////////////////////////////////////////////////////// 340 ////////////////////////////////////////////////////////////////////////////////
358 // ToolbarView, AccessiblePaneView overrides: 341 // ToolbarView, AccessiblePaneView overrides:
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 gfx::Size ToolbarView::GetPreferredSize() const { 476 gfx::Size ToolbarView::GetPreferredSize() const {
494 return GetSizeInternal(&View::GetPreferredSize); 477 return GetSizeInternal(&View::GetPreferredSize);
495 } 478 }
496 479
497 gfx::Size ToolbarView::GetMinimumSize() const { 480 gfx::Size ToolbarView::GetMinimumSize() const {
498 return GetSizeInternal(&View::GetMinimumSize); 481 return GetSizeInternal(&View::GetMinimumSize);
499 } 482 }
500 483
501 void ToolbarView::Layout() { 484 void ToolbarView::Layout() {
502 // If we have not been initialized yet just do nothing. 485 // If we have not been initialized yet just do nothing.
503 if (back_ == NULL) 486 if (!location_bar_)
504 return; 487 return;
505 488
506 if (!is_display_mode_normal()) { 489 if (!is_display_mode_normal()) {
507 location_bar_->SetBounds(0, PopupTopSpacing(), width(), 490 location_bar_->SetBounds(0, PopupTopSpacing(), width(),
508 location_bar_->GetPreferredSize().height()); 491 location_bar_->GetPreferredSize().height());
509 return; 492 return;
510 } 493 }
511 494
512 // We assume all child elements except the location bar are the same height. 495 // We assume all child elements except the location bar are the same height.
513 // Set child_y such that buttons appear vertically centered. 496 // Set child_y such that buttons appear vertically centered.
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 // Extend the app menu to the screen's right edge in maximized mode just like 585 // Extend the app menu to the screen's right edge in maximized mode just like
603 // we extend the back button to the left edge. 586 // we extend the back button to the left edge.
604 if (maximized) 587 if (maximized)
605 app_menu_width += insets.right(); 588 app_menu_width += insets.right();
606 app_menu_button_->SetBounds(next_element_x, child_y, app_menu_width, 589 app_menu_button_->SetBounds(next_element_x, child_y, app_menu_width,
607 child_height); 590 child_height);
608 app_menu_button_->SetTrailingMargin(maximized ? insets.right() : 0); 591 app_menu_button_->SetTrailingMargin(maximized ? insets.right() : 0);
609 } 592 }
610 593
611 void ToolbarView::OnThemeChanged() { 594 void ToolbarView::OnThemeChanged() {
612 LoadImages(); 595 if (is_display_mode_normal())
596 LoadImages();
613 } 597 }
614 598
615 const char* ToolbarView::GetClassName() const { 599 const char* ToolbarView::GetClassName() const {
616 return kViewClassName; 600 return kViewClassName;
617 } 601 }
618 602
619 bool ToolbarView::AcceleratorPressed(const ui::Accelerator& accelerator) { 603 bool ToolbarView::AcceleratorPressed(const ui::Accelerator& accelerator) {
620 const views::View* focused_view = focus_manager()->GetFocusedView(); 604 const views::View* focused_view = focus_manager()->GetFocusedView();
621 if (focused_view && (focused_view->id() == VIEW_ID_OMNIBOX)) 605 if (focused_view && (focused_view->id() == VIEW_ID_OMNIBOX))
622 return false; // Let the omnibox handle all accelerator events. 606 return false; // Let the omnibox handle all accelerator events.
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 void ToolbarView::OnShowHomeButtonChanged() { 806 void ToolbarView::OnShowHomeButtonChanged() {
823 Layout(); 807 Layout();
824 SchedulePaint(); 808 SchedulePaint();
825 } 809 }
826 810
827 int ToolbarView::content_shadow_height() const { 811 int ToolbarView::content_shadow_height() const {
828 return GetLayoutConstant( 812 return GetLayoutConstant(
829 (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) ? 813 (browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH) ?
830 TOOLBAR_CONTENT_SHADOW_HEIGHT_ASH : TOOLBAR_CONTENT_SHADOW_HEIGHT); 814 TOOLBAR_CONTENT_SHADOW_HEIGHT_ASH : TOOLBAR_CONTENT_SHADOW_HEIGHT);
831 } 815 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/toolbar_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698