summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
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.cc28
-rw-r--r--chrome/browser/extensions/api/extension_action/extension_actions_api.h4
-rw-r--r--chrome/browser/extensions/api/extension_action/extension_browser_actions_api.cc57
-rw-r--r--chrome/browser/extensions/api/extension_action/extension_browser_actions_api.h30
-rw-r--r--chrome/browser/extensions/api/extension_action/extension_page_actions_api.cc20
-rw-r--r--chrome/browser/extensions/api/extension_action/extension_page_actions_api.h28
-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.cc6
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>();