diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-18 17:37:42 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-18 17:37:42 +0000 |
commit | 80268d9d53fa35a76a47c7c3d46cbc1366db5a50 (patch) | |
tree | 9b3d585a1cec34b88d537b0f317c60bab56dd9d3 /chrome/browser | |
parent | fc95ad1dc3353f792708108e165c31310aaf982e (diff) | |
download | chromium_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.cc | 32 |
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; } |