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

Unified Diff: chrome/browser/views/browser_actions_container.cc

Issue 1107007: Extension context menu refactor (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 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 side-by-side diff with in-line comments
Download patch
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
}

Powered by Google App Engine
This is Rietveld 408576698