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

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

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