Chromium Code Reviews| 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); |