Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1217)

Unified Diff: chrome/browser/extensions/extension_prefs.cc

Issue 10692160: Support socket endpoint permissions for AppsV2 Socket API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_prefs.cc
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index dbbbf8d4115408fe03d568fca98e441d763afe32..9517ca9e7abe72feab1cb362cec57e3001de0238 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -483,11 +483,21 @@ PermissionSet* ExtensionPrefs::ReadExtensionPrefPermissionSet(
if (ReadExtensionPrefList(extension_id, api_pref, &api_values)) {
PermissionsInfo* info = PermissionsInfo::GetInstance();
for (size_t i = 0; i < api_values->GetSize(); ++i) {
+ ListValue* permission_list = NULL;
std::string permission_name;
- if (api_values->GetString(i, &permission_name)) {
+ if (api_values->GetString(i, &permission_name) ||
+ (api_values->GetList(i, &permission_list) &&
+ permission_list->GetString(0, &permission_name))) {
APIPermission *permission = info->GetByName(permission_name);
- if (permission)
- apis.insert(permission->id());
+ if (permission) {
+ Value* tmp = NULL;
+ if (!permission_list || !permission_list->Get(1, &tmp))
+ tmp = NULL;
miket_OOO 2012/07/31 18:18:37 Does permission_list->Get() change the Value yet a
Peng 2012/07/31 19:32:28 Done. I checked ListValue::Get() the tmp will be u
+ scoped_refptr<APIPermissionDetail> detail =
+ permission->CreateDetail();
+ detail->FromValue(tmp);
miket_OOO 2012/07/31 18:18:37 Does this work if tmp is NULL? Should we even be a
Peng 2012/07/31 19:32:28 Done.
+ apis.insert(detail);
+ }
}
}
}
@@ -514,13 +524,19 @@ void ExtensionPrefs::SetExtensionPrefPermissionSet(
// Set the API permissions.
ListValue* api_values = new ListValue();
APIPermissionSet apis = new_value->apis();
- PermissionsInfo* info = PermissionsInfo::GetInstance();
std::string api_pref = JoinPrefs(pref_key, kPrefAPIs);
for (APIPermissionSet::const_iterator i = apis.begin();
i != apis.end(); ++i) {
- APIPermission* perm = info->GetByID(*i);
- if (perm)
- api_values->Append(Value::CreateStringValue(perm->name()));
+ Value* detail = NULL;
+ i->ToValue(&detail);
+ if (!detail) {
+ api_values->Append(Value::CreateStringValue(i->name()));
+ } else {
+ ListValue* tmp = new ListValue();
+ tmp->Append(Value::CreateStringValue(i->name()));
+ tmp->Append(detail);
+ api_values->Append(tmp);
+ }
}
UpdateExtensionPref(extension_id, api_pref, api_values);

Powered by Google App Engine
This is Rietveld 408576698