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

Unified Diff: chrome/browser/extensions/extension_toolbar_model.cc

Issue 10412052: Pull browser action click logic into ToolbarModelController, so that when I (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: views changes Created 8 years, 7 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/extensions/extension_toolbar_model.cc
diff --git a/chrome/browser/extensions/extension_toolbar_model.cc b/chrome/browser/extensions/extension_toolbar_model.cc
index d1ea347f5544f20b8de49917754908a437204a99..aeea4faee9756221df897076b99f00ebcd8f0c07 100644
--- a/chrome/browser/extensions/extension_toolbar_model.cc
+++ b/chrome/browser/extensions/extension_toolbar_model.cc
@@ -4,16 +4,20 @@
#include "chrome/browser/extensions/extension_toolbar_model.h"
+#include "chrome/browser/extensions/extension_browser_event_router.h"
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
+#include "content/public/browser/web_contents.h"
using extensions::Extension;
using extensions::ExtensionList;
@@ -79,10 +83,28 @@ void ExtensionToolbarModel::MoveBrowserAction(const Extension* extension,
UpdatePrefs();
}
-void ExtensionToolbarModel::ExecuteBrowserAction(
- const std::string& extension_id, Browser* browser) {
- FOR_EACH_OBSERVER(Observer, observers_,
- BrowserActionExecuted(extension_id, browser));
+ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction(
+ const Extension* extension,
+ Browser* browser,
+ GURL* popup_url_out) {
+ TabContentsWrapper* tab_contents = browser->GetSelectedTabContentsWrapper();
+ if (!tab_contents)
+ return ACTION_NONE;
+
+ int tab_id = ExtensionTabUtil::GetTabId(tab_contents->web_contents());
+ if (tab_id < 0)
+ return ACTION_NONE;
+
+ ExtensionAction* browser_action = extension->browser_action();
+ if (browser_action->HasPopup(tab_id)) {
+ if (popup_url_out)
+ *popup_url_out = browser_action->GetPopupUrl(tab_id);
+ return ACTION_SHOW_POPUP;
+ }
+
+ service_->browser_event_router()->BrowserActionExecuted(
+ extension->id(), browser);
+ return ACTION_NONE;
Yoyo Zhou 2012/05/24 00:55:26 It seems slightly confusing to say that the action
not at google - send to devlin 2012/05/25 00:55:40 Yeah, UIAction would have been more accurate, but
}
void ExtensionToolbarModel::SetVisibleIconCount(int count) {

Powered by Google App Engine
This is Rietveld 408576698