summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_management_api.cc
diff options
context:
space:
mode:
authorasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-18 23:40:40 +0000
committerasargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-18 23:40:40 +0000
commit47982c2898553db265750b5a5a9b1c19c9d22199 (patch)
tree876fb9fd16b545aa68cee7c40b81aa05abb353a6 /chrome/browser/extensions/extension_management_api.cc
parent1e8a0020bac9d87fc123746ec210aa5b3d4ef2e2 (diff)
downloadchromium_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.cc34
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;
}