summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/browser_actions_container.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-22 22:36:20 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-22 22:36:20 +0000
commit7e9f4a8e17e918412cfba8337e55873abed112cb (patch)
tree49363f7f49844e68f858677aa5bef4e081b2e0df /chrome/browser/views/browser_actions_container.cc
parent8c157cf900b7ae30185b4905ac51c39dfc2c90ad (diff)
downloadchromium_src-7e9f4a8e17e918412cfba8337e55873abed112cb.zip
chromium_src-7e9f4a8e17e918412cfba8337e55873abed112cb.tar.gz
chromium_src-7e9f4a8e17e918412cfba8337e55873abed112cb.tar.bz2
Refactor ExtensionActionContextMenuModel.
- Simplify constructor - Rename to ExtensionContextMenuModel.* - Remove views/extension_action_context_menu.* BUG=none TEST=none Review URL: http://codereview.chromium.org/1107007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42271 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/browser_actions_container.cc')
-rw-r--r--chrome/browser/views/browser_actions_container.cc35
1 files changed, 14 insertions, 21 deletions
diff --git a/chrome/browser/views/browser_actions_container.cc b/chrome/browser/views/browser_actions_container.cc
index d56e421..3998cd2 100644
--- a/chrome/browser/views/browser_actions_container.cc
+++ b/chrome/browser/views/browser_actions_container.cc
@@ -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 @@ bool BrowserActionButton::OnMousePressed(const views::MouseEvent& e) {
// 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;
@@ -380,7 +384,6 @@ BrowserActionsContainer::~BrowserActionsContainer() {
if (model_)
model_->RemoveObserver(this);
StopShowFolderDropMenuTimer();
- CloseMenus();
HidePopup();
DeleteBrowserActionViews();
}
@@ -398,18 +401,12 @@ int BrowserActionsContainer::GetCurrentTabId() const {
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;
}
@@ -421,10 +418,7 @@ void BrowserActionsContainer::RefreshBrowserActionViews() {
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();
}
@@ -881,8 +875,7 @@ void BrowserActionsContainer::BrowserActionAdded(Extension* extension,
"exists.";
}
#endif
-
- CloseMenus();
+ CloseOverflowMenu();
if (!ShouldDisplayBrowserAction(extension))
return;
@@ -923,7 +916,7 @@ void BrowserActionsContainer::BrowserActionAdded(Extension* extension,
}
void BrowserActionsContainer::BrowserActionRemoved(Extension* extension) {
- CloseMenus();
+ CloseOverflowMenu();
if (popup_ && popup_->host()->extension() == extension)
HidePopup();
@@ -1082,9 +1075,9 @@ void BrowserActionsContainer::NotifyMenuDeleted(
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
}