| Index: chrome/browser/views/browser_actions_container.cc
|
| ===================================================================
|
| --- chrome/browser/views/browser_actions_container.cc (revision 41960)
|
| +++ chrome/browser/views/browser_actions_container.cc (working copy)
|
| @@ -33,6 +33,7 @@
|
| #include "third_party/skia/include/effects/SkGradientShader.h"
|
| #include "views/controls/button/menu_button.h"
|
| #include "views/controls/button/text_button.h"
|
| +#include "views/controls/menu/menu_2.h"
|
| #include "views/drag_utils.h"
|
| #include "views/window/window.h"
|
|
|
| @@ -225,8 +226,11 @@
|
| // Make the menu appear below the button.
|
| point.Offset(0, height());
|
|
|
| - panel_->GetContextMenu()->Run(extension(), extension()->browser_action(),
|
| - panel_, panel_->profile()->GetPrefs(), point);
|
| + // Reconstructs the menu every time because the menu's contents are dynamic.
|
| + context_menu_contents_.reset(new ExtensionContextMenuModel(
|
| + extension(), panel_->browser(), panel_));
|
| + context_menu_menu_.reset(new views::Menu2(context_menu_contents_.get()));
|
| + context_menu_menu_->RunContextMenuAt(point);
|
|
|
| SetButtonNotPushed();
|
| return false;
|
| @@ -375,7 +379,6 @@
|
| if (model_)
|
| model_->RemoveObserver(this);
|
| StopShowFolderDropMenuTimer();
|
| - CloseMenus();
|
| HidePopup();
|
| DeleteBrowserActionViews();
|
| }
|
| @@ -393,18 +396,12 @@
|
| return tab_contents->controller().session_id().id();
|
| }
|
|
|
| -ExtensionActionContextMenu* BrowserActionsContainer::GetContextMenu() {
|
| - if (!context_menu_.get())
|
| - context_menu_.reset(new ExtensionActionContextMenu());
|
| - return context_menu_.get();
|
| -}
|
| -
|
| BrowserActionView* BrowserActionsContainer::GetBrowserActionView(
|
| - Extension* extension) {
|
| + ExtensionAction* action) {
|
| for (BrowserActionViews::iterator iter =
|
| browser_action_views_.begin(); iter != browser_action_views_.end();
|
| ++iter) {
|
| - if ((*iter)->button()->extension() == extension)
|
| + if ((*iter)->button()->browser_action() == action)
|
| return *iter;
|
| }
|
|
|
| @@ -416,10 +413,7 @@
|
| browser_action_views_[i]->button()->UpdateState();
|
| }
|
|
|
| -void BrowserActionsContainer::CloseMenus() {
|
| - if (context_menu_.get())
|
| - context_menu_->Cancel();
|
| - // Close the overflow menu if open.
|
| +void BrowserActionsContainer::CloseOverflowMenu() {
|
| if (overflow_menu_)
|
| overflow_menu_->CancelMenu();
|
| }
|
| @@ -878,9 +872,8 @@
|
| "exists.";
|
| }
|
| #endif
|
| + CloseOverflowMenu();
|
|
|
| - CloseMenus();
|
| -
|
| if (!ShouldDisplayBrowserAction(extension))
|
| return;
|
|
|
| @@ -918,7 +911,7 @@
|
| }
|
|
|
| void BrowserActionsContainer::BrowserActionRemoved(Extension* extension) {
|
| - CloseMenus();
|
| + CloseOverflowMenu();
|
|
|
| if (popup_ && popup_->host()->extension() == extension)
|
| HidePopup();
|
| @@ -1074,9 +1067,9 @@
|
| overflow_menu_ = NULL;
|
| }
|
|
|
| -void BrowserActionsContainer::ShowPopupForDevToolsWindow(Extension* extension,
|
| - ExtensionAction* extension_action) {
|
| - OnBrowserActionExecuted(GetBrowserActionView(extension)->button(),
|
| +void BrowserActionsContainer::InspectPopup(
|
| + ExtensionAction* action) {
|
| + OnBrowserActionExecuted(GetBrowserActionView(action)->button(),
|
| true); // inspect_with_devtools
|
| }
|
|
|
|
|