Chromium Code Reviews| 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) { |