diff options
author | yoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-23 06:16:09 +0000 |
---|---|---|
committer | yoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-23 06:16:09 +0000 |
commit | 0f6e52dbe1666cf8ec30cfd59c5983b1930d7d56 (patch) | |
tree | f79caee71dd7bda1892bec0f8e1c8f6cc835f97a | |
parent | 560ba8af8353b0958f8defd6a4cd786ffad638af (diff) | |
download | chromium_src-0f6e52dbe1666cf8ec30cfd59c5983b1930d7d56.zip chromium_src-0f6e52dbe1666cf8ec30cfd59c5983b1930d7d56.tar.gz chromium_src-0f6e52dbe1666cf8ec30cfd59c5983b1930d7d56.tar.bz2 |
Move browser/page action/script badge event dispatch to ExtensionActionAPI.
BUG=165209
Review URL: https://chromiumcodereview.appspot.com/22831016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219238 0039d316-1c4b-4281-b951-d872f2087c98
14 files changed, 187 insertions, 193 deletions
diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.cc b/chrome/browser/extensions/api/extension_action/extension_action_api.cc index 4fda0e8b..3d4c46d 100644 --- a/chrome/browser/extensions/api/extension_action/extension_action_api.cc +++ b/chrome/browser/extensions/api/extension_action/extension_action_api.cc @@ -13,6 +13,7 @@ #include "base/values.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h" +#include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_function_registry.h" @@ -31,6 +32,10 @@ #include "ui/gfx/image/image.h" #include "ui/gfx/image/image_skia.h" +using content::WebContents; + +namespace page_actions_keys = extension_page_actions_api_constants; + namespace extensions { namespace { @@ -231,6 +236,11 @@ ExtensionActionAPI::GetFactoryInstance() { } // static +ExtensionActionAPI* ExtensionActionAPI::Get(Profile* profile) { + return ProfileKeyedAPIFactory<ExtensionActionAPI>::GetForProfile(profile); +} + +// static bool ExtensionActionAPI::GetBrowserActionVisibility( const ExtensionPrefs* prefs, const std::string& extension_id) { @@ -260,6 +270,114 @@ void ExtensionActionAPI::SetBrowserActionVisibility( content::Details<const std::string>(&extension_id)); } +// static +void ExtensionActionAPI::BrowserActionExecuted( + Profile* profile, + const ExtensionAction& browser_action, + WebContents* web_contents) { + ExtensionActionExecuted(profile, browser_action, web_contents); +} + +// static +void ExtensionActionAPI::PageActionExecuted(Profile* profile, + const ExtensionAction& page_action, + int tab_id, + const std::string& url, + int button) { + DispatchOldPageActionEvent(profile, page_action.extension_id(), + page_action.id(), tab_id, url, button); + WebContents* web_contents = NULL; + if (!ExtensionTabUtil::GetTabById(tab_id, profile, profile->IsOffTheRecord(), + NULL, NULL, &web_contents, NULL)) { + return; + } + ExtensionActionExecuted(profile, page_action, web_contents); +} + +// static +void ExtensionActionAPI::ScriptBadgeExecuted( + Profile* profile, + const ExtensionAction& script_badge, + int tab_id) { + WebContents* web_contents = NULL; + if (!ExtensionTabUtil::GetTabById(tab_id, profile, profile->IsOffTheRecord(), + NULL, NULL, &web_contents, NULL)) { + return; + } + ExtensionActionExecuted(profile, script_badge, web_contents); +} + +// static +void ExtensionActionAPI::DispatchEventToExtension( + Profile* profile, + const std::string& extension_id, + const char* event_name, + scoped_ptr<base::ListValue> event_args) { + if (!extensions::ExtensionSystem::Get(profile)->event_router()) + return; + + scoped_ptr<Event> event(new Event(event_name, event_args.Pass())); + event->restrict_to_profile = profile; + event->user_gesture = EventRouter::USER_GESTURE_ENABLED; + ExtensionSystem::Get(profile)->event_router()-> + DispatchEventToExtension(extension_id, event.Pass()); +} + +// static +void ExtensionActionAPI::DispatchOldPageActionEvent( + Profile* profile, + const std::string& extension_id, + const std::string& page_action_id, + int tab_id, + const std::string& url, + int button) { + scoped_ptr<base::ListValue> args(new base::ListValue()); + args->Append(new base::StringValue(page_action_id)); + + DictionaryValue* data = new DictionaryValue(); + data->Set(page_actions_keys::kTabIdKey, new base::FundamentalValue(tab_id)); + data->Set(page_actions_keys::kTabUrlKey, new base::StringValue(url)); + data->Set(page_actions_keys::kButtonKey, + new base::FundamentalValue(button)); + args->Append(data); + + DispatchEventToExtension(profile, extension_id, "pageActions", args.Pass()); +} + +// static +void ExtensionActionAPI::ExtensionActionExecuted( + Profile* profile, + const ExtensionAction& extension_action, + WebContents* web_contents) { + const char* event_name = NULL; + switch (extension_action.action_type()) { + case ActionInfo::TYPE_BROWSER: + event_name = "browserAction.onClicked"; + break; + case ActionInfo::TYPE_PAGE: + event_name = "pageAction.onClicked"; + break; + case ActionInfo::TYPE_SCRIPT_BADGE: + event_name = "scriptBadge.onClicked"; + break; + case ActionInfo::TYPE_SYSTEM_INDICATOR: + // The System Indicator handles its own clicks. + break; + } + + if (event_name) { + scoped_ptr<base::ListValue> args(new base::ListValue()); + DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( + web_contents); + args->Append(tab_value); + + DispatchEventToExtension(profile, + extension_action.extension_id(), + event_name, + args.Pass()); + } +} + // // ExtensionActionStorageManager // @@ -702,8 +820,6 @@ bool ScriptBadgeGetAttentionFunction::RunExtensionAction() { // PageActionsFunction (deprecated) // -namespace keys = extension_page_actions_api_constants; - PageActionsFunction::PageActionsFunction() { } @@ -717,14 +833,17 @@ bool PageActionsFunction::SetPageActionEnabled(bool enable) { EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &action)); int tab_id; - EXTENSION_FUNCTION_VALIDATE(action->GetInteger(keys::kTabIdKey, &tab_id)); + EXTENSION_FUNCTION_VALIDATE(action->GetInteger( + page_actions_keys::kTabIdKey, &tab_id)); std::string url; - EXTENSION_FUNCTION_VALIDATE(action->GetString(keys::kUrlKey, &url)); + EXTENSION_FUNCTION_VALIDATE(action->GetString( + page_actions_keys::kUrlKey, &url)); std::string title; if (enable) { - if (action->HasKey(keys::kTitleKey)) - EXTENSION_FUNCTION_VALIDATE(action->GetString(keys::kTitleKey, &title)); + if (action->HasKey(page_actions_keys::kTitleKey)) + EXTENSION_FUNCTION_VALIDATE(action->GetString( + page_actions_keys::kTitleKey, &title)); } ExtensionAction* page_action = @@ -736,7 +855,7 @@ bool PageActionsFunction::SetPageActionEnabled(bool enable) { } // Find the WebContents that contains this tab id. - content::WebContents* contents = NULL; + WebContents* contents = NULL; bool result = ExtensionTabUtil::GetTabById( tab_id, profile(), include_incognito(), NULL, NULL, &contents, NULL); if (!result || !contents) { diff --git a/chrome/browser/extensions/api/extension_action/extension_action_api.h b/chrome/browser/extensions/api/extension_action/extension_action_api.h index 2074a377..aa82104 100644 --- a/chrome/browser/extensions/api/extension_action/extension_action_api.h +++ b/chrome/browser/extensions/api/extension_action/extension_action_api.h @@ -29,18 +29,60 @@ class ExtensionActionAPI : public ProfileKeyedAPI { explicit ExtensionActionAPI(Profile* profile); virtual ~ExtensionActionAPI(); + // Convenience method to get the instance for a profile. + static ExtensionActionAPI* Get(Profile* profile); + static bool GetBrowserActionVisibility(const ExtensionPrefs* prefs, const std::string& extension_id); static void SetBrowserActionVisibility(ExtensionPrefs* prefs, const std::string& extension_id, bool visible); + // Fires the onClicked event for page_action. + static void PageActionExecuted(Profile* profile, + const ExtensionAction& page_action, + int tab_id, + const std::string& url, + int button); + + // Fires the onClicked event for script_badge. + static void ScriptBadgeExecuted(Profile* profile, + const ExtensionAction& script_badge, + int tab_id); + + // Fires the onClicked event for browser_action. + static void BrowserActionExecuted(Profile* profile, + const ExtensionAction& browser_action, + content::WebContents* web_contents); + // ProfileKeyedAPI implementation. static ProfileKeyedAPIFactory<ExtensionActionAPI>* GetFactoryInstance(); private: friend class ProfileKeyedAPIFactory<ExtensionActionAPI>; + // The DispatchEvent methods forward events to the |profile|'s event router. + static void DispatchEventToExtension(Profile* profile, + const std::string& extension_id, + const char* event_name, + scoped_ptr<base::ListValue> event_args); + + // Called to dispatch a deprecated style page action click event that was + // registered like: + // chrome.pageActions["name"].addListener(function(actionId, info){}) + static void DispatchOldPageActionEvent(Profile* profile, + const std::string& extension_id, + const std::string& page_action_id, + int tab_id, + const std::string& url, + int button); + + // Called when either a browser or page action is executed. Figures out which + // event to send based on what the extension wants. + static void ExtensionActionExecuted(Profile* profile, + const ExtensionAction& extension_action, + content::WebContents* web_contents); + // ProfileKeyedAPI implementation. static const char* service_name() { return "ExtensionActionAPI"; } diff --git a/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.cc b/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.cc index 029dfcf..8ad3dac 100644 --- a/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.cc +++ b/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.cc @@ -7,6 +7,7 @@ namespace extension_page_actions_api_constants { const char kTabIdKey[] = "tabId"; +const char kTabUrlKey[] = "tabUrl"; const char kUrlKey[] = "url"; const char kTitleKey[] = "title"; const char kButtonKey[] = "button"; diff --git a/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h b/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h index 5f3ad9f..c8cfcc6 100644 --- a/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h +++ b/chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h @@ -11,6 +11,7 @@ namespace extension_page_actions_api_constants { // Keys. extern const char kTabIdKey[]; +extern const char kTabUrlKey[]; extern const char kUrlKey[]; extern const char kTitleKey[]; extern const char kButtonKey[]; diff --git a/chrome/browser/extensions/api/extension_action/page_action_apitest.cc b/chrome/browser/extensions/api/extension_action/page_action_apitest.cc index cad5250..f2d0078 100644 --- a/chrome/browser/extensions/api/extension_action/page_action_apitest.cc +++ b/chrome/browser/extensions/api/extension_action/page_action_apitest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/browser_event_router.h" +#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_icon_factory.h" #include "chrome/browser/extensions/extension_action_manager.h" @@ -60,9 +60,7 @@ IN_PROC_BROWSER_TEST_F(PageActionApiTest, Basic) { ResultCatcher catcher; int tab_id = ExtensionTabUtil::GetTabId( browser()->tab_strip_model()->GetActiveWebContents()); - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - service->browser_event_router()->PageActionExecuted( + ExtensionActionAPI::PageActionExecuted( browser()->profile(), *action, tab_id, std::string(), 0); EXPECT_TRUE(catcher.GetNextResult()); } @@ -105,9 +103,7 @@ IN_PROC_BROWSER_TEST_F(PageActionApiTest, AddPopup) { // install a page action popup. { ResultCatcher catcher; - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - service->browser_event_router()->PageActionExecuted( + ExtensionActionAPI::PageActionExecuted( browser()->profile(), *page_action, tab_id, std::string(), 1); ASSERT_TRUE(catcher.GetNextResult()); } @@ -184,10 +180,8 @@ IN_PROC_BROWSER_TEST_F(PageActionApiTest, OldPageActions) { ResultCatcher catcher; int tab_id = ExtensionTabUtil::GetTabId( browser()->tab_strip_model()->GetActiveWebContents()); - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); ExtensionAction* page_action = GetPageAction(*extension); - service->browser_event_router()->PageActionExecuted( + ExtensionActionAPI::PageActionExecuted( browser()->profile(), *page_action, tab_id, std::string(), 1); EXPECT_TRUE(catcher.GetNextResult()); } @@ -257,9 +251,7 @@ IN_PROC_BROWSER_TEST_F(PageActionApiTest, TestTriggerPageAction) { ResultCatcher catcher; int tab_id = ExtensionTabUtil::GetTabId( browser()->tab_strip_model()->GetActiveWebContents()); - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - service->browser_event_router()->PageActionExecuted( + ExtensionActionAPI::PageActionExecuted( browser()->profile(), *page_action, tab_id, std::string(), 0); EXPECT_TRUE(catcher.GetNextResult()); } diff --git a/chrome/browser/extensions/api/extension_action/script_badge_apitest.cc b/chrome/browser/extensions/api/extension_action/script_badge_apitest.cc index fd7264a..5cd0c53 100644 --- a/chrome/browser/extensions/api/extension_action/script_badge_apitest.cc +++ b/chrome/browser/extensions/api/extension_action/script_badge_apitest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/browser_event_router.h" +#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_apitest.h" @@ -77,9 +77,7 @@ IN_PROC_BROWSER_TEST_F(ScriptBadgeApiTest, Basics) { { // Simulate the script badge being clicked. ResultCatcher catcher; - ExtensionService* service = extensions::ExtensionSystem::Get( - browser()->profile())->extension_service(); - service->browser_event_router()->ScriptBadgeExecuted( + ExtensionActionAPI::ScriptBadgeExecuted( browser()->profile(), *script_badge, tab_id); EXPECT_TRUE(catcher.GetNextResult()); } diff --git a/chrome/browser/extensions/api/tabs/tabs_constants.cc b/chrome/browser/extensions/api/tabs/tabs_constants.cc index 27c2aab..457361e 100644 --- a/chrome/browser/extensions/api/tabs/tabs_constants.cc +++ b/chrome/browser/extensions/api/tabs/tabs_constants.cc @@ -40,7 +40,6 @@ const char kStatusKey[] = "status"; const char kTabIdKey[] = "tabId"; const char kTabIdsKey[] = "tabIds"; const char kTabsKey[] = "tabs"; -const char kTabUrlKey[] = "tabUrl"; const char kTitleKey[] = "title"; const char kToIndexKey[] = "toIndex"; const char kTopKey[] = "top"; diff --git a/chrome/browser/extensions/api/tabs/tabs_constants.h b/chrome/browser/extensions/api/tabs/tabs_constants.h index 6ac0b93..67e862a 100644 --- a/chrome/browser/extensions/api/tabs/tabs_constants.h +++ b/chrome/browser/extensions/api/tabs/tabs_constants.h @@ -43,7 +43,6 @@ extern const char kStatusKey[]; extern const char kTabIdKey[]; extern const char kTabIdsKey[]; extern const char kTabsKey[]; -extern const char kTabUrlKey[]; extern const char kTitleKey[]; extern const char kToIndexKey[]; extern const char kTopKey[]; diff --git a/chrome/browser/extensions/browser_event_router.cc b/chrome/browser/extensions/browser_event_router.cc index baa4171..c9a9b07 100644 --- a/chrome/browser/extensions/browser_event_router.cc +++ b/chrome/browser/extensions/browser_event_router.cc @@ -7,11 +7,9 @@ #include "base/json/json_writer.h" #include "base/values.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/api/extension_action/extension_page_actions_api_constants.h" #include "chrome/browser/extensions/api/tabs/tabs_constants.h" #include "chrome/browser/extensions/api/tabs/tabs_windows_api.h" #include "chrome/browser/extensions/api/tabs/windows_event_router.h" -#include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_tab_util.h" @@ -21,7 +19,6 @@ #include "chrome/browser/ui/browser_iterator.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" -#include "chrome/common/extensions/api/extension_action/action_info.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/browser/favicon_status.h" #include "content/public/browser/navigation_controller.h" @@ -31,7 +28,6 @@ #include "content/public/browser/web_contents.h" namespace tab_keys = extensions::tabs_constants; -namespace page_actions_keys = extension_page_actions_api_constants; using content::NavigationController; using content::WebContents; @@ -394,23 +390,6 @@ void BrowserEventRouter::DispatchEvent( ExtensionSystem::Get(profile)->event_router()->BroadcastEvent(event.Pass()); } -void BrowserEventRouter::DispatchEventToExtension( - Profile* profile, - const std::string& extension_id, - const char* event_name, - scoped_ptr<base::ListValue> event_args, - EventRouter::UserGestureState user_gesture) { - if (!profile_->IsSameProfile(profile) || - !extensions::ExtensionSystem::Get(profile)->event_router()) - return; - - scoped_ptr<Event> event(new Event(event_name, event_args.Pass())); - event->restrict_to_profile = profile; - event->user_gesture = user_gesture; - ExtensionSystem::Get(profile)->event_router()-> - DispatchEventToExtension(extension_id, event.Pass()); -} - void BrowserEventRouter::DispatchSimpleBrowserEvent( Profile* profile, const int window_id, const char* event_name) { if (!profile_->IsSameProfile(profile)) @@ -555,97 +534,4 @@ void BrowserEventRouter::TabPinnedStateChanged(WebContents* contents, void BrowserEventRouter::TabStripEmpty() {} -void BrowserEventRouter::DispatchOldPageActionEvent( - Profile* profile, - const std::string& extension_id, - const std::string& page_action_id, - int tab_id, - const std::string& url, - int button) { - scoped_ptr<base::ListValue> args(new base::ListValue()); - args->Append(new base::StringValue(page_action_id)); - - DictionaryValue* data = new DictionaryValue(); - data->Set(tab_keys::kTabIdKey, new base::FundamentalValue(tab_id)); - data->Set(tab_keys::kTabUrlKey, new base::StringValue(url)); - data->Set(page_actions_keys::kButtonKey, - new base::FundamentalValue(button)); - args->Append(data); - - DispatchEventToExtension(profile, extension_id, "pageActions", args.Pass(), - EventRouter::USER_GESTURE_ENABLED); -} - -void BrowserEventRouter::BrowserActionExecuted( - const ExtensionAction& browser_action, - Browser* browser) { - Profile* profile = browser->profile(); - WebContents* web_contents = NULL; - int tab_id = 0; - if (!ExtensionTabUtil::GetDefaultTab(browser, &web_contents, &tab_id)) - return; - ExtensionActionExecuted(profile, browser_action, web_contents); -} - -void BrowserEventRouter::PageActionExecuted(Profile* profile, - const ExtensionAction& page_action, - int tab_id, - const std::string& url, - int button) { - DispatchOldPageActionEvent(profile, page_action.extension_id(), - page_action.id(), tab_id, url, button); - WebContents* web_contents = NULL; - if (!ExtensionTabUtil::GetTabById(tab_id, profile, profile->IsOffTheRecord(), - NULL, NULL, &web_contents, NULL)) { - return; - } - ExtensionActionExecuted(profile, page_action, web_contents); -} - -void BrowserEventRouter::ScriptBadgeExecuted( - Profile* profile, - const ExtensionAction& script_badge, - int tab_id) { - WebContents* web_contents = NULL; - if (!ExtensionTabUtil::GetTabById(tab_id, profile, profile->IsOffTheRecord(), - NULL, NULL, &web_contents, NULL)) { - return; - } - ExtensionActionExecuted(profile, script_badge, web_contents); -} - -void BrowserEventRouter::ExtensionActionExecuted( - Profile* profile, - const ExtensionAction& extension_action, - WebContents* web_contents) { - const char* event_name = NULL; - switch (extension_action.action_type()) { - case ActionInfo::TYPE_BROWSER: - event_name = "browserAction.onClicked"; - break; - case ActionInfo::TYPE_PAGE: - event_name = "pageAction.onClicked"; - break; - case ActionInfo::TYPE_SCRIPT_BADGE: - event_name = "scriptBadge.onClicked"; - break; - case ActionInfo::TYPE_SYSTEM_INDICATOR: - // The System Indicator handles its own clicks. - break; - } - - if (event_name) { - scoped_ptr<base::ListValue> args(new base::ListValue()); - DictionaryValue* tab_value = ExtensionTabUtil::CreateTabValue( - web_contents); - args->Append(tab_value); - - DispatchEventToExtension(profile, - extension_action.extension_id(), - event_name, - args.Pass(), - EventRouter::USER_GESTURE_ENABLED); - } -} - } // namespace extensions diff --git a/chrome/browser/extensions/browser_event_router.h b/chrome/browser/extensions/browser_event_router.h index f424f57..7450ccb 100644 --- a/chrome/browser/extensions/browser_event_router.h +++ b/chrome/browser/extensions/browser_event_router.h @@ -12,7 +12,6 @@ #include "base/compiler_specific.h" #include "chrome/browser/extensions/api/tabs/tabs_api.h" #include "chrome/browser/extensions/event_router.h" -#include "chrome/browser/extensions/extension_toolbar_model.h" #include "chrome/browser/ui/browser_list_observer.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "content/public/browser/notification_registrar.h" @@ -69,22 +68,6 @@ class BrowserEventRouter : public TabStripModelObserver, int index) OVERRIDE; virtual void TabStripEmpty() OVERRIDE; - // Fires the onClicked event for page_action. - void PageActionExecuted(Profile* profile, - const ExtensionAction& page_action, - int tab_id, - const std::string& url, - int button); - - // Fires the onClicked event for script_badge. - void ScriptBadgeExecuted(Profile* profile, - const ExtensionAction& script_badge, - int tab_id); - - // Fires the onClicked event for browser_action. - void BrowserActionExecuted(const ExtensionAction& browser_action, - Browser* browser); - // content::NotificationObserver. virtual void Observe(int type, const content::NotificationSource& source, @@ -109,12 +92,6 @@ class BrowserEventRouter : public TabStripModelObserver, scoped_ptr<base::ListValue> args, EventRouter::UserGestureState user_gesture); - void DispatchEventToExtension(Profile* profile, - const std::string& extension_id, - const char* event_name, - scoped_ptr<base::ListValue> event_args, - EventRouter::UserGestureState user_gesture); - void DispatchEventsAcrossIncognito( Profile* profile, const char* event_name, @@ -130,16 +107,6 @@ class BrowserEventRouter : public TabStripModelObserver, void DispatchTabUpdatedEvent(content::WebContents* contents, scoped_ptr<DictionaryValue> changed_properties); - // Called to dispatch a deprecated style page action click event that was - // registered like: - // chrome.pageActions["name"].addListener(function(actionId, info){}) - void DispatchOldPageActionEvent(Profile* profile, - const std::string& extension_id, - const std::string& page_action_id, - int tab_id, - const std::string& url, - int button); - // Register ourselves to receive the various notifications we are interested // in for a browser. void RegisterForBrowserNotifications(Browser* browser); @@ -192,12 +159,6 @@ class BrowserEventRouter : public TabStripModelObserver, // found, NULL if not. TabEntry* GetTabEntry(const content::WebContents* contents); - // Called when either a browser or page action is executed. Figures out which - // event to send based on what the extension wants. - void ExtensionActionExecuted(Profile* profile, - const ExtensionAction& extension_action, - content::WebContents* web_contents); - std::map<int, TabEntry> tab_entries_; // The main profile that owns this event router. diff --git a/chrome/browser/extensions/extension_toolbar_model.cc b/chrome/browser/extensions/extension_toolbar_model.cc index 8d23097..c869fd9 100644 --- a/chrome/browser/extensions/extension_toolbar_model.cc +++ b/chrome/browser/extensions/extension_toolbar_model.cc @@ -7,7 +7,6 @@ #include "base/prefs/pref_service.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" -#include "chrome/browser/extensions/browser_event_router.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_prefs.h" @@ -130,13 +129,9 @@ ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction( const Extension* extension, Browser* browser, GURL* popup_url_out) { - content::WebContents* web_contents = - browser->tab_strip_model()->GetActiveWebContents(); - if (!web_contents) - return ACTION_NONE; - - int tab_id = ExtensionTabUtil::GetTabId(web_contents); - if (tab_id < 0) + content::WebContents* web_contents = NULL; + int tab_id = 0; + if (!ExtensionTabUtil::GetDefaultTab(browser, &web_contents, &tab_id)) return ACTION_NONE; ExtensionAction* browser_action = @@ -156,8 +151,8 @@ ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction( return ACTION_SHOW_POPUP; } - service_->browser_event_router()->BrowserActionExecuted( - *browser_action, browser); + extensions::ExtensionActionAPI::BrowserActionExecuted( + service_->profile(), *browser_action, web_contents); return ACTION_NONE; } diff --git a/chrome/browser/extensions/page_action_controller.cc b/chrome/browser/extensions/page_action_controller.cc index 62dab8f..4c0cb07 100644 --- a/chrome/browser/extensions/page_action_controller.cc +++ b/chrome/browser/extensions/page_action_controller.cc @@ -5,7 +5,7 @@ #include "chrome/browser/extensions/page_action_controller.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/browser_event_router.h" +#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "chrome/browser/extensions/component_loader.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" @@ -72,7 +72,7 @@ LocationBarController::Action PageActionController::OnClicked( if (page_action->HasPopup(tab_id)) return ACTION_SHOW_POPUP; - GetExtensionService()->browser_event_router()->PageActionExecuted( + ExtensionActionAPI::PageActionExecuted( profile(), *page_action, tab_id, web_contents()->GetURL().spec(), mouse_button); return ACTION_NONE; diff --git a/chrome/browser/extensions/script_badge_controller.cc b/chrome/browser/extensions/script_badge_controller.cc index 17cfd13..a2f6e6b 100644 --- a/chrome/browser/extensions/script_badge_controller.cc +++ b/chrome/browser/extensions/script_badge_controller.cc @@ -8,7 +8,7 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/browser_event_router.h" +#include "chrome/browser/extensions/api/extension_action/extension_action_api.h" #include "chrome/browser/extensions/extension_action.h" #include "chrome/browser/extensions/extension_action_manager.h" #include "chrome/browser/extensions/extension_service.h" @@ -106,7 +106,7 @@ LocationBarController::Action ScriptBadgeController::OnClicked( NotifyChange(); // Fire the scriptBadge.onClicked event. - GetExtensionService()->browser_event_router()->ScriptBadgeExecuted( + ExtensionActionAPI::ScriptBadgeExecuted( profile(), *script_badge, SessionID::IdForTab(web_contents())); // TODO(jyasskin): The fallback order should be user-defined popup -> diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi index 86ac059..c9a4060 100644 --- a/chrome/chrome_browser_extensions.gypi +++ b/chrome/chrome_browser_extensions.gypi @@ -856,6 +856,7 @@ # less intertwined in the main codebase. ['exclude', '^browser/extensions/api/'], ['exclude', '^browser/extensions/.*_api\.cc$'], + ['exclude', '^browser/extensions/browser_event_router.cc'], ['include', '^browser/extensions/api/activity_log_private/activity_log_private_api.cc'], ['include', '^browser/extensions/api/activity_log_private/activity_log_private_api.h'], ['include', '^browser/extensions/api/alarms/alarm_manager.cc'], |