diff options
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/api/extension_action/browser_action_apitest.cc (renamed from chrome/browser/extensions/browser_action_apitest.cc) | 20 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/extension_actions_api.cc | 28 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/extension_actions_api.h | 4 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/extension_browser_actions_api.cc | 57 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h | 30 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/extension_page_actions_api.cc | 20 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/extension_page_actions_api.h | 28 | ||||
-rw-r--r-- | chrome/browser/extensions/api/extension_action/page_action_apitest.cc (renamed from chrome/browser/extensions/page_action_apitest.cc) | 11 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function_dispatcher.cc | 6 |
9 files changed, 191 insertions, 13 deletions
diff --git a/chrome/browser/extensions/browser_action_apitest.cc b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc index e42af47..8236863f 100644 --- a/chrome/browser/extensions/browser_action_apitest.cc +++ b/chrome/browser/extensions/api/extension_action/browser_action_apitest.cc @@ -446,3 +446,23 @@ IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, BadgeBackgroundColor) { ASSERT_EQ(SkColorSetARGB(255, 255, 255, 255), action->GetBadgeBackgroundColor(ExtensionAction::kDefaultTabId)); } + +IN_PROC_BROWSER_TEST_F(BrowserActionApiTest, Getters) { + ASSERT_TRUE(RunExtensionTest("browser_action/getters")) << message_; + const Extension* extension = GetSingleLoadedExtension(); + ASSERT_TRUE(extension) << message_; + + // Test that there is a browser action in the toolbar. + ASSERT_EQ(1, GetBrowserActionsBar().NumberOfBrowserActions()); + + // Test the getters for defaults. + ResultCatcher catcher; + ui_test_utils::NavigateToURL(browser(), + GURL(extension->GetResourceURL("update.html"))); + ASSERT_TRUE(catcher.GetNextResult()); + + // Test the getters for a specific tab. + ui_test_utils::NavigateToURL(browser(), + GURL(extension->GetResourceURL("update2.html"))); + ASSERT_TRUE(catcher.GetNextResult()); +} diff --git a/chrome/browser/extensions/api/extension_action/extension_actions_api.cc b/chrome/browser/extensions/api/extension_action/extension_actions_api.cc index 53633a1..aa18536 100644 --- a/chrome/browser/extensions/api/extension_action/extension_actions_api.cc +++ b/chrome/browser/extensions/api/extension_action/extension_actions_api.cc @@ -134,3 +134,31 @@ bool ExtensionActionFunction::SetBadgeBackgroundColor() { return true; } + +bool ExtensionActionFunction::GetTitle() { + result_.reset(Value::CreateStringValue(extension_action_->GetTitle(tab_id_))); + return true; +} + +bool ExtensionActionFunction::GetPopup() { + result_.reset(Value::CreateStringValue( + extension_action_->GetPopupUrl(tab_id_).spec())); + return true; +} + +bool ExtensionActionFunction::GetBadgeText() { + result_.reset(Value::CreateStringValue( + extension_action_->GetBadgeText(tab_id_))); + return true; +} + +bool ExtensionActionFunction::GetBadgeBackgroundColor() { + ListValue* list = new ListValue(); + SkColor color = extension_action_->GetBadgeBackgroundColor(tab_id_); + list->Append(Value::CreateIntegerValue(SkColorGetR(color))); + list->Append(Value::CreateIntegerValue(SkColorGetG(color))); + list->Append(Value::CreateIntegerValue(SkColorGetB(color))); + list->Append(Value::CreateIntegerValue(SkColorGetA(color))); + result_.reset(list); + return true; +} diff --git a/chrome/browser/extensions/api/extension_action/extension_actions_api.h b/chrome/browser/extensions/api/extension_action/extension_actions_api.h index 6fd3457..dc3d53b 100644 --- a/chrome/browser/extensions/api/extension_action/extension_actions_api.h +++ b/chrome/browser/extensions/api/extension_action/extension_actions_api.h @@ -29,6 +29,10 @@ class ExtensionActionFunction : public SyncExtensionFunction { bool SetPopup(); bool SetBadgeBackgroundColor(); bool SetBadgeText(); + bool GetTitle(); + bool GetPopup(); + bool GetBadgeBackgroundColor(); + bool GetBadgeText(); // All the browser action APIs take a single argument called details that is // a dictionary. diff --git a/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.cc b/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.cc index a60c150..49e8ee9 100644 --- a/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.cc +++ b/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.cc @@ -18,6 +18,13 @@ const char kNoBrowserActionError[] = "This extension has no browser action specified."; } +void BrowserActionFunction::FireUpdateNotification() { + content::NotificationService::current()->Notify( + chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_UPDATED, + content::Source<ExtensionAction>(extension_action_), + content::NotificationService::NoDetails()); +} + bool BrowserActionFunction::RunImpl() { ExtensionActionFunction::RunImpl(); extension_action_ = GetExtension()->browser_action(); @@ -26,32 +33,56 @@ bool BrowserActionFunction::RunImpl() { return false; } - if (!RunExtensionAction()) - return false; - - content::NotificationService::current()->Notify( - chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_UPDATED, - content::Source<ExtensionAction>(extension_action_), - content::NotificationService::NoDetails()); - return true; + return RunExtensionAction(); } bool BrowserActionSetIconFunction::RunExtensionAction() { - return SetIcon(); + if (!SetIcon()) + return false; + FireUpdateNotification(); + return true; } bool BrowserActionSetTitleFunction::RunExtensionAction() { - return SetTitle(); + if (!SetTitle()) + return false; + FireUpdateNotification(); + return true; } bool BrowserActionSetPopupFunction::RunExtensionAction() { - return SetPopup(); + if (!SetPopup()) + return false; + FireUpdateNotification(); + return true; } bool BrowserActionSetBadgeTextFunction::RunExtensionAction() { - return SetBadgeText(); + if (!SetBadgeText()) + return false; + FireUpdateNotification(); + return true; } bool BrowserActionSetBadgeBackgroundColorFunction::RunExtensionAction() { - return SetBadgeBackgroundColor(); + if (!SetBadgeBackgroundColor()) + return false; + FireUpdateNotification(); + return true; +} + +bool BrowserActionGetTitleFunction::RunExtensionAction() { + return GetTitle(); +} + +bool BrowserActionGetPopupFunction::RunExtensionAction() { + return GetPopup(); +} + +bool BrowserActionGetBadgeTextFunction::RunExtensionAction() { + return GetBadgeText(); +} + +bool BrowserActionGetBadgeBackgroundColorFunction::RunExtensionAction() { + return GetBadgeBackgroundColor(); } diff --git a/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h b/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h index 5a453fe..1ead691 100644 --- a/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h +++ b/chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h @@ -15,6 +15,7 @@ class BrowserActionFunction : public ExtensionActionFunction { protected: virtual ~BrowserActionFunction() {} virtual bool RunImpl() OVERRIDE; + void FireUpdateNotification(); }; // Implement chrome.browserAction.setIcon(). @@ -53,4 +54,33 @@ class BrowserActionSetBadgeBackgroundColorFunction DECLARE_EXTENSION_FUNCTION_NAME("browserAction.setBadgeBackgroundColor") }; +// Implement chrome.browserAction.getTitle(). +class BrowserActionGetTitleFunction : public BrowserActionFunction { + virtual ~BrowserActionGetTitleFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("browserAction.getTitle") +}; + +// Implement chrome.browserAction.getPopup(). +class BrowserActionGetPopupFunction : public BrowserActionFunction { + virtual ~BrowserActionGetPopupFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("browserAction.getPopup") +}; + +// Implement chrome.browserAction.getBadgeText(). +class BrowserActionGetBadgeTextFunction : public BrowserActionFunction { + virtual ~BrowserActionGetBadgeTextFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("browserAction.getBadgeText") +}; + +// Implement chrome.browserAction.getBadgeBackgroundColor(). +class BrowserActionGetBadgeBackgroundColorFunction + : public BrowserActionFunction { + virtual ~BrowserActionGetBadgeBackgroundColorFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("browserAction.getBadgeBackgroundColor") +}; + #endif // CHROME_BROWSER_EXTENSIONS_API_EXTENSION_ACTION_EXTENSION_BROWSER_ACTIONS_API_H_ diff --git a/chrome/browser/extensions/api/extension_action/extension_page_actions_api.cc b/chrome/browser/extensions/api/extension_action/extension_page_actions_api.cc index 3b00362..81a9c2d 100644 --- a/chrome/browser/extensions/api/extension_action/extension_page_actions_api.cc +++ b/chrome/browser/extensions/api/extension_action/extension_page_actions_api.cc @@ -222,3 +222,23 @@ bool PageActionSetBadgeTextFunction::RunExtensionAction() { contents_->extension_tab_helper()->PageActionStateChanged(); return true; } + +bool PageActionGetTitleFunction::RunExtensionAction() { + return GetTitle(); +} + +bool PageActionGetPopupFunction::RunExtensionAction() { + return GetPopup(); +} + +// Not currently exposed to extensions. To re-enable, add mapping in +// extension_function_dispatcher. +bool PageActionGetBadgeBackgroundColorFunction::RunExtensionAction() { + return GetBadgeBackgroundColor(); +} + +// Not currently exposed to extensions. To re-enable, add mapping in +// extension_function_dispatcher. +bool PageActionGetBadgeTextFunction::RunExtensionAction() { + return GetBadgeText(); +} diff --git a/chrome/browser/extensions/api/extension_action/extension_page_actions_api.h b/chrome/browser/extensions/api/extension_action/extension_page_actions_api.h index 6a8e68b59..931d807 100644 --- a/chrome/browser/extensions/api/extension_action/extension_page_actions_api.h +++ b/chrome/browser/extensions/api/extension_action/extension_page_actions_api.h @@ -92,4 +92,32 @@ class PageActionSetBadgeTextFunction : public PageActionFunction { DECLARE_EXTENSION_FUNCTION_NAME("pageAction.setBadgeText") }; +// Implement chrome.pageAction.getTitle(). +class PageActionGetTitleFunction : public PageActionFunction { + virtual ~PageActionGetTitleFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("pageAction.getTitle") +}; + +// Implement chrome.pageAction.getPopup(). +class PageActionGetPopupFunction : public PageActionFunction { + virtual ~PageActionGetPopupFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("pageAction.getPopup") +}; + +// Implement chrome.pageAction.getBadgeText(). +class PageActionGetBadgeTextFunction : public PageActionFunction { + virtual ~PageActionGetBadgeTextFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("pageAction.getBadgeText") +}; + +// Implement chrome.pageAction.getBadgeBackgroundColor(). +class PageActionGetBadgeBackgroundColorFunction : public PageActionFunction { + virtual ~PageActionGetBadgeBackgroundColorFunction() {} + virtual bool RunExtensionAction() OVERRIDE; + DECLARE_EXTENSION_FUNCTION_NAME("pageAction.getBadgeBackgroundColor") +}; + #endif // CHROME_BROWSER_EXTENSIONS_API_EXTENSION_ACTION_EXTENSION_PAGE_ACTIONS_API_H_ diff --git a/chrome/browser/extensions/page_action_apitest.cc b/chrome/browser/extensions/api/extension_action/page_action_apitest.cc index b0417af..7591077 100644 --- a/chrome/browser/extensions/page_action_apitest.cc +++ b/chrome/browser/extensions/api/extension_action/page_action_apitest.cc @@ -194,3 +194,14 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, TestCrash57333) { .AppendASCII("crash_57333") .AppendASCII("Extension2"))); } + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Getters) { + ASSERT_TRUE(RunExtensionTest("page_action/getters")) << message_; + const Extension* extension = GetSingleLoadedExtension(); + ASSERT_TRUE(extension) << message_; + + ResultCatcher catcher; + ui_test_utils::NavigateToURL(browser(), + GURL(extension->GetResourceURL("update.html"))); + ASSERT_TRUE(catcher.GetNextResult()); +} diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index 3191929..7d04788 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -182,6 +182,8 @@ void FactoryRegistry::ResetFunctions() { RegisterFunction<PageActionSetIconFunction>(); RegisterFunction<PageActionSetTitleFunction>(); RegisterFunction<PageActionSetPopupFunction>(); + RegisterFunction<PageActionGetTitleFunction>(); + RegisterFunction<PageActionGetPopupFunction>(); // Browser Actions. RegisterFunction<BrowserActionSetIconFunction>(); @@ -189,6 +191,10 @@ void FactoryRegistry::ResetFunctions() { RegisterFunction<BrowserActionSetBadgeTextFunction>(); RegisterFunction<BrowserActionSetBadgeBackgroundColorFunction>(); RegisterFunction<BrowserActionSetPopupFunction>(); + RegisterFunction<BrowserActionGetTitleFunction>(); + RegisterFunction<BrowserActionGetBadgeTextFunction>(); + RegisterFunction<BrowserActionGetBadgeBackgroundColorFunction>(); + RegisterFunction<BrowserActionGetPopupFunction>(); // Browsing Data. RegisterFunction<RemoveBrowsingDataFunction>(); |