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

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

Issue 561023002: Use the wrench menu as a reference view for overflowed extension actions' popups (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master for CQ Created 6 years, 3 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/browser_actions_container.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/browser_actions_container.h" 5 #include "chrome/browser/ui/views/toolbar/browser_actions_container.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "chrome/browser/extensions/extension_action_manager.h" 9 #include "chrome/browser/extensions/extension_action_manager.h"
10 #include "chrome/browser/extensions/extension_util.h" 10 #include "chrome/browser/extensions/extension_util.h"
11 #include "chrome/browser/extensions/extension_view_host.h" 11 #include "chrome/browser/extensions/extension_view_host.h"
12 #include "chrome/browser/extensions/tab_helper.h" 12 #include "chrome/browser/extensions/tab_helper.h"
13 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/profiles/profile.h"
14 #include "chrome/browser/ui/browser.h" 14 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/browser_window.h" 15 #include "chrome/browser/ui/browser_window.h"
16 #include "chrome/browser/ui/tabs/tab_strip_model.h" 16 #include "chrome/browser/ui/tabs/tab_strip_model.h"
17 #include "chrome/browser/ui/view_ids.h" 17 #include "chrome/browser/ui/view_ids.h"
18 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" 18 #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h"
19 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h" 19 #include "chrome/browser/ui/views/extensions/extension_keybinding_registry_views .h"
20 #include "chrome/browser/ui/views/extensions/extension_popup.h" 20 #include "chrome/browser/ui/views/extensions/extension_popup.h"
21 #include "chrome/browser/ui/views/frame/browser_view.h"
21 #include "chrome/browser/ui/views/toolbar/browser_actions_container_observer.h" 22 #include "chrome/browser/ui/views/toolbar/browser_actions_container_observer.h"
22 #include "chrome/browser/ui/views/toolbar/toolbar_view.h" 23 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
23 #include "chrome/common/extensions/command.h" 24 #include "chrome/common/extensions/command.h"
24 #include "chrome/grit/generated_resources.h" 25 #include "chrome/grit/generated_resources.h"
25 #include "extensions/browser/extension_registry.h" 26 #include "extensions/browser/extension_registry.h"
26 #include "extensions/browser/extension_system.h" 27 #include "extensions/browser/extension_system.h"
27 #include "extensions/browser/runtime_data.h" 28 #include "extensions/browser/runtime_data.h"
28 #include "extensions/common/feature_switch.h" 29 #include "extensions/common/feature_switch.h"
29 #include "grit/theme_resources.h" 30 #include "grit/theme_resources.h"
30 #include "third_party/skia/include/core/SkColor.h" 31 #include "third_party/skia/include/core/SkColor.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 void BrowserActionsContainer::OnBrowserActionViewDragDone() { 277 void BrowserActionsContainer::OnBrowserActionViewDragDone() {
277 // We notify here as well as in OnPerformDrop because the dragged view is 278 // We notify here as well as in OnPerformDrop because the dragged view is
278 // removed in OnPerformDrop, so it will never get its OnDragDone() call. 279 // removed in OnPerformDrop, so it will never get its OnDragDone() call.
279 // TODO(devlin): we should see about fixing that. 280 // TODO(devlin): we should see about fixing that.
280 FOR_EACH_OBSERVER(BrowserActionsContainerObserver, 281 FOR_EACH_OBSERVER(BrowserActionsContainerObserver,
281 observers_, 282 observers_,
282 OnBrowserActionDragDone()); 283 OnBrowserActionDragDone());
283 } 284 }
284 285
285 views::View* BrowserActionsContainer::GetOverflowReferenceView() { 286 views::View* BrowserActionsContainer::GetOverflowReferenceView() {
286 // We should only need an overflow reference when using the traditional 287 // With traditional overflow, the reference is the chevron. With the
287 // chevron overflow. 288 // redesign, we use the wrench menu instead.
288 DCHECK(chevron_); 289 return chevron_ ?
289 return chevron_; 290 chevron_ :
291 BrowserView::GetBrowserViewForBrowser(browser_)->toolbar()->app_menu();
290 } 292 }
291 293
292 void BrowserActionsContainer::SetPopupOwner(BrowserActionView* popup_owner) { 294 void BrowserActionsContainer::SetPopupOwner(BrowserActionView* popup_owner) {
293 // We should never be setting a popup owner when one already exists. 295 // We should never be setting a popup owner when one already exists.
294 DCHECK(!popup_owner_ || !popup_owner); 296 DCHECK(!popup_owner_ || !popup_owner);
295 popup_owner_ = popup_owner; 297 popup_owner_ = popup_owner;
296 } 298 }
297 299
298 void BrowserActionsContainer::HideActivePopup() { 300 void BrowserActionsContainer::HideActivePopup() {
299 if (popup_owner_) 301 if (popup_owner_)
300 popup_owner_->view_controller()->HidePopup(); 302 popup_owner_->view_controller()->HidePopup();
301 } 303 }
302 304
305 BrowserActionView* BrowserActionsContainer::GetMainViewForExtension(
306 const Extension* extension) {
307 return in_overflow_mode() ?
308 main_container_->GetViewForExtension(extension) :
309 GetViewForExtension(extension);
310 }
311
303 void BrowserActionsContainer::AddObserver( 312 void BrowserActionsContainer::AddObserver(
304 BrowserActionsContainerObserver* observer) { 313 BrowserActionsContainerObserver* observer) {
305 observers_.AddObserver(observer); 314 observers_.AddObserver(observer);
306 } 315 }
307 316
308 void BrowserActionsContainer::RemoveObserver( 317 void BrowserActionsContainer::RemoveObserver(
309 BrowserActionsContainerObserver* observer) { 318 BrowserActionsContainerObserver* observer) {
310 observers_.RemoveObserver(observer); 319 observers_.RemoveObserver(observer);
311 } 320 }
312 321
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 size_t absolute_model_size = 1083 size_t absolute_model_size =
1075 model_size == -1 ? extensions.size() : model_size; 1084 model_size == -1 ? extensions.size() : model_size;
1076 1085
1077 // The main container will try to show |model_size| icons, but reduce if there 1086 // The main container will try to show |model_size| icons, but reduce if there
1078 // aren't enough displayable icons to do so. 1087 // aren't enough displayable icons to do so.
1079 size_t main_displayed = std::min(displayable_icon_count, absolute_model_size); 1088 size_t main_displayed = std::min(displayable_icon_count, absolute_model_size);
1080 // The overflow will display the extras, if any. 1089 // The overflow will display the extras, if any.
1081 return in_overflow_mode() ? 1090 return in_overflow_mode() ?
1082 displayable_icon_count - main_displayed : main_displayed; 1091 displayable_icon_count - main_displayed : main_displayed;
1083 } 1092 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/toolbar/browser_actions_container.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698