diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-18 23:40:40 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-18 23:40:40 +0000 |
commit | 47982c2898553db265750b5a5a9b1c19c9d22199 (patch) | |
tree | 876fb9fd16b545aa68cee7c40b81aa05abb353a6 /chrome/browser/extensions/extension_management_api.cc | |
parent | 1e8a0020bac9d87fc123746ec210aa5b3d4ef2e2 (diff) | |
download | chromium_src-47982c2898553db265750b5a5a9b1c19c9d22199.zip chromium_src-47982c2898553db265750b5a5a9b1c19c9d22199.tar.gz chromium_src-47982c2898553db265750b5a5a9b1c19c9d22199.tar.bz2 |
Adding support for optional description in to the callback of the management API
Adding a list of API Permissions with the name "permissions" and adding a seperate list of Host permissions (i.e, http://*/*) so that developers can navigate them seperatly with ease.
The permissions and hosttPermissions attributes are always visible in this object even if not supplied. Likewise the description attribute is also now "" if not defined in the manifest. As well as the options_url.
Contributed by paulkinlan@chromium.org
Original review: http://codereview.chromium.org/4585001
BUG=58388
TEST=chrome/test/data/extensions/api_test/management/*
Review URL: http://codereview.chromium.org/5211003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66701 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_management_api.cc')
-rw-r--r-- | chrome/browser/extensions/extension_management_api.cc | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/chrome/browser/extensions/extension_management_api.cc b/chrome/browser/extensions/extension_management_api.cc index 60edbc9..bcb12c6 100644 --- a/chrome/browser/extensions/extension_management_api.cc +++ b/chrome/browser/extensions/extension_management_api.cc @@ -21,6 +21,7 @@ #include "chrome/common/extensions/extension_error_utils.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_icon_set.h" +#include "chrome/common/extensions/url_pattern.h" #include "chrome/common/notification_service.h" #include "chrome/common/notification_type.h" @@ -30,12 +31,14 @@ namespace events = extension_event_names; namespace { const char kAppLaunchUrlKey[] = "appLaunchUrl"; +const char kDescriptionKey[] = "description"; const char kEnabledKey[] = "enabled"; const char kIconsKey[] = "icons"; const char kIdKey[] = "id"; const char kIsAppKey[] = "isApp"; const char kNameKey[] = "name"; const char kOptionsUrlKey[] = "optionsUrl"; +const char kPermissionsKey[] = "permissions"; const char kSizeKey[] = "size"; const char kUrlKey[] = "url"; const char kVersionKey[] = "version"; @@ -56,8 +59,8 @@ static DictionaryValue* CreateExtensionInfo(const Extension& extension, info->SetString(kNameKey, extension.name()); info->SetBoolean(kEnabledKey, enabled); info->SetString(kVersionKey, extension.VersionString()); - if (!extension.options_url().is_empty()) - info->SetString(kOptionsUrlKey, + info->SetString(kDescriptionKey, extension.description()); + info->SetString(kOptionsUrlKey, extension.options_url().possibly_invalid_spec()); if (extension.is_app()) info->SetString(kAppLaunchUrlKey, @@ -77,6 +80,33 @@ static DictionaryValue* CreateExtensionInfo(const Extension& extension, info->Set("icons", icon_list); } + const std::set<std::string> perms = extension.api_permissions(); + ListValue* permission_list = new ListValue(); + if (!perms.empty()) { + std::set<std::string>::const_iterator perms_iter; + for (perms_iter = perms.begin(); perms_iter != perms.end(); ++perms_iter) { + StringValue* permission_name = new StringValue(*perms_iter); + permission_list->Append(permission_name); + } + } + info->Set("permissions", permission_list); + + ListValue* host_permission_list = new ListValue(); + if (!extension.is_hosted_app()) { + // Skip host permissions for hosted apps. + const URLPatternList host_perms = extension.host_permissions(); + if (!host_perms.empty()) { + std::vector<URLPattern>::const_iterator host_perms_iter; + for (host_perms_iter = host_perms.begin(); + host_perms_iter != host_perms.end(); + ++host_perms_iter) { + StringValue* name = new StringValue(host_perms_iter->GetAsString()); + host_permission_list->Append(name); + } + } + } + info->Set("hostPermissions", host_permission_list); + return info; } |