Index: chrome/browser/extensions/extension_prefs.cc |
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc |
index 2cb6efe1af2e0b1105d29c838fd87cb2ac2d0037..bedacfb679f14f599949582bae230f8ec161dc5d 100644 |
--- a/chrome/browser/extensions/extension_prefs.cc |
+++ b/chrome/browser/extensions/extension_prefs.cc |
@@ -113,6 +113,11 @@ const char kPrefOldGrantedFullAccess[] = "granted_permissions.full"; |
const char kPrefOldGrantedHosts[] = "granted_permissions.host"; |
const char kPrefOldGrantedAPIs[] = "granted_permissions.api"; |
+const char kPrefActiveAPIs[] = "active_permissions.api"; |
+const char kPrefActiveExplicitHosts[] = "active_permissions.explicit_host"; |
+const char kPrefActiveScriptableHosts[] = |
+ "active_permissions.scriptable_host"; |
+ |
// A preference that indicates when an extension was installed. |
const char kPrefInstallTime[] = "install_time"; |
@@ -741,6 +746,74 @@ void ExtensionPrefs::AddGrantedPermissions( |
} |
} |
+ExtensionPermissionSet* ExtensionPrefs::GetActivePermissions( |
Mihai Parparita -not on Chrome
2011/07/20 22:03:43
This seems pretty similar to the granted permissio
jstritar
2011/07/22 19:21:55
I factored these out into {Set,Read}ExtensionPrefP
|
+ const std::string& extension_id) { |
+ CHECK(Extension::IdIsValid(extension_id)); |
+ |
+ const DictionaryValue* ext = GetExtensionPref(extension_id); |
+ if (!ext) |
+ return NULL; |
+ |
+ // Retrieve the API permissions. |
+ ExtensionAPIPermissionSet apis; |
+ const ListValue* api_values = NULL; |
+ if (ReadExtensionPrefList(extension_id, kPrefActiveAPIs, &api_values)) { |
+ ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
+ for (size_t i = 0; i < api_values->GetSize(); ++i) { |
+ std::string permission_name; |
+ if (api_values->GetString(i, &permission_name)) { |
+ ExtensionAPIPermission *permission = info->GetByName(permission_name); |
+ if (permission) |
+ apis.insert(permission->id()); |
+ } |
+ } |
+ } |
+ |
+ // Retrieve the explicit host permissions. |
+ URLPatternSet explicit_hosts; |
+ ReadExtensionPrefURLPatternSet( |
+ extension_id, kPrefActiveExplicitHosts, |
+ &explicit_hosts, Extension::kValidHostPermissionSchemes); |
+ |
+ // Retrieve the scriptable host permissions. |
+ URLPatternSet scriptable_hosts; |
+ ReadExtensionPrefURLPatternSet( |
+ extension_id, kPrefActiveScriptableHosts, |
+ &scriptable_hosts, UserScript::kValidUserScriptSchemes); |
+ |
+ return new ExtensionPermissionSet(apis, explicit_hosts, scriptable_hosts); |
+} |
+ |
+void ExtensionPrefs::SetActivePermissions( |
+ const std::string& extension_id, |
+ const ExtensionPermissionSet* permissions) { |
+ // Set the API permissions. |
+ ListValue* api_values = new ListValue(); |
+ ExtensionAPIPermissionSet apis = permissions->apis(); |
+ ExtensionPermissionsInfo* info = ExtensionPermissionsInfo::GetInstance(); |
+ for (ExtensionAPIPermissionSet::const_iterator i = apis.begin(); |
+ i != apis.end(); ++i) { |
+ ExtensionAPIPermission* perm = info->GetByID(*i); |
+ if (perm) |
+ api_values->Append(Value::CreateStringValue(perm->name())); |
+ } |
+ UpdateExtensionPref(extension_id, kPrefActiveAPIs, api_values); |
+ |
+ // Set the explicit host permissions. |
+ if (!permissions->explicit_hosts().is_empty()) { |
+ SetExtensionPrefURLPatternSet(extension_id, |
+ kPrefActiveExplicitHosts, |
+ permissions->explicit_hosts()); |
+ } |
+ |
+ // Set the scriptable host permissions. |
+ if (!permissions->scriptable_hosts().is_empty()) { |
+ SetExtensionPrefURLPatternSet(extension_id, |
+ kPrefActiveScriptableHosts, |
+ permissions->scriptable_hosts()); |
+ } |
+} |
+ |
bool ExtensionPrefs::IsIncognitoEnabled(const std::string& extension_id) { |
return ReadExtensionPrefBoolean(extension_id, kPrefIncognitoEnabled); |
} |