summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-18 17:37:42 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-18 17:37:42 +0000
commit80268d9d53fa35a76a47c7c3d46cbc1366db5a50 (patch)
tree9b3d585a1cec34b88d537b0f317c60bab56dd9d3 /chrome/browser
parentfc95ad1dc3353f792708108e165c31310aaf982e (diff)
downloadchromium_src-80268d9d53fa35a76a47c7c3d46cbc1366db5a50.zip
chromium_src-80268d9d53fa35a76a47c7c3d46cbc1366db5a50.tar.gz
chromium_src-80268d9d53fa35a76a47c7c3d46cbc1366db5a50.tar.bz2
Add extensionId to experimental app notifiction methods.
This will let you do prototyping with an extension to see what notifications will feel like on apps you already have installed. Also remove the unused 'passive' flag, and set nodoc=true on icon-related stuff since we don't support that yet. BUG=86958 TEST=none Review URL: http://codereview.chromium.org/7381009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@92866 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/extensions/extension_app_api.cc32
1 files changed, 28 insertions, 4 deletions
diff --git a/chrome/browser/extensions/extension_app_api.cc b/chrome/browser/extensions/extension_app_api.cc
index 24cc2ed..6a95255 100644
--- a/chrome/browser/extensions/extension_app_api.cc
+++ b/chrome/browser/extensions/extension_app_api.cc
@@ -15,11 +15,14 @@
const char kBodyTextKey[] = "bodyText";
+const char kExtensionIdKey[] = "extensionId";
const char kIconDataKey[] = "iconData";
const char kLinkTextKey[] = "linkText";
const char kLinkUrlKey[] = "linkUrl";
const char kTitleKey[] = "title";
+const char kInvalidExtensionIdError[] =
+ "Invalid extension id";
const char kMissingLinkTextError[] =
"You must specify linkText if you use linkUrl";
@@ -84,7 +87,18 @@ bool AppNotifyFunction::RunImpl() {
EXTENSION_FUNCTION_VALIDATE(details != NULL);
scoped_ptr<AppNotification> item(new AppNotification());
- item->extension_id = extension_id();
+
+ // TODO(asargent) remove this before the API leaves experimental.
+ std::string id = extension_id();
+ if (details->HasKey(kExtensionIdKey)) {
+ EXTENSION_FUNCTION_VALIDATE(details->GetString(kExtensionIdKey, &id));
+ if (!profile()->GetExtensionService()->GetExtensionById(id, true)) {
+ error_ = kInvalidExtensionIdError;
+ return false;
+ }
+ }
+
+ item->extension_id = id;
if (details->HasKey(kTitleKey))
EXTENSION_FUNCTION_VALIDATE(details->GetString(kTitleKey, &item->title));
@@ -127,18 +141,28 @@ bool AppNotifyFunction::RunImpl() {
NotificationService::current()->Notify(
chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED,
Source<Profile>(profile_),
- Details<const std::string>(&extension_id()));
+ Details<const std::string>(&id));
return true;
}
bool AppClearAllNotificationsFunction::RunImpl() {
+ std::string id = extension_id();
+ DictionaryValue* details = NULL;
+ if (args_->GetDictionary(0, &details) && details->HasKey(kExtensionIdKey)) {
+ EXTENSION_FUNCTION_VALIDATE(details->GetString(kExtensionIdKey, &id));
+ if (!profile()->GetExtensionService()->GetExtensionById(id, true)) {
+ error_ = kInvalidExtensionIdError;
+ return false;
+ }
+ }
+
AppNotificationManager* manager =
profile()->GetExtensionService()->app_notification_manager();
- manager->ClearAll(extension_id());
+ manager->ClearAll(id);
NotificationService::current()->Notify(
chrome::NOTIFICATION_APP_NOTIFICATION_STATE_CHANGED,
Source<Profile>(profile_),
- Details<const std::string>(&extension_id()));
+ Details<const std::string>(&id));
return true;
}