| Index: extensions/browser/extension_prefs.cc
|
| diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
|
| index 3e04d79de2df1916906599d736584ab4c2fabfdc..8423e9ed9d4fdc43ef128e66969ffb22cbbed49b 100644
|
| --- a/extensions/browser/extension_prefs.cc
|
| +++ b/extensions/browser/extension_prefs.cc
|
| @@ -148,6 +148,7 @@ const char kPrefAPIs[] = "api";
|
| const char kPrefManifestPermissions[] = "manifest_permissions";
|
| const char kPrefExplicitHosts[] = "explicit_host";
|
| const char kPrefScriptableHosts[] = "scriptable_host";
|
| +const char kPrefPersistedPermissions[] = "persisted_permissions";
|
|
|
| // The preference names for the old granted permissions scheme.
|
| const char kPrefOldGrantedFullAccess[] = "granted_permissions.full";
|
| @@ -1131,6 +1132,42 @@ void ExtensionPrefs::SetActivePermissions(
|
| extension_id, kPrefActivePermissions, permissions);
|
| }
|
|
|
| +bool ExtensionPrefs::GetPersistedPermissions(
|
| + const std::string& extension_id,
|
| + URLPatternSet* persisted_permissions) {
|
| + CHECK(Extension::IdIsValid(extension_id));
|
| + return ReadPrefAsURLPatternSet(extension_id,
|
| + kPrefPersistedPermissions,
|
| + persisted_permissions,
|
| + UserScript::ValidUserScriptSchemes());
|
| +}
|
| +
|
| +void ExtensionPrefs::AddPersistedPermission(const Extension* extension,
|
| + const URLPattern* pattern) {
|
| + DictionaryPrefUpdate update(prefs_, "extensions.settings");
|
| + base::DictionaryValue* dict = update.Get();
|
| + base::DictionaryValue* prefer = NULL;
|
| + dict->GetDictionary(extension->id(), &prefer);
|
| +
|
| + base::ListValue* pattern_list = NULL;
|
| +
|
| + if (!prefer->GetList(kPrefPersistedPermissions, &pattern_list)) {
|
| + prefer->Set(kPrefPersistedPermissions, new base::ListValue());
|
| + prefer->GetList(kPrefPersistedPermissions, &pattern_list);
|
| + }
|
| +
|
| + pattern_list->Append(new base::StringValue(pattern->GetAsString()));
|
| +}
|
| +
|
| +void ExtensionPrefs::ClearPersistedPermissions(const Extension* extension) {
|
| + DictionaryPrefUpdate update(prefs_, "extensions.settings");
|
| + base::DictionaryValue* dict = update.Get();
|
| + base::DictionaryValue* prefer = NULL;
|
| + dict->GetDictionary(extension->id(), &prefer);
|
| +
|
| + prefer->Set(kPrefPersistedPermissions, new base::ListValue());
|
| +}
|
| +
|
| void ExtensionPrefs::SetExtensionRunning(const std::string& extension_id,
|
| bool is_running) {
|
| base::Value* value = new base::FundamentalValue(is_running);
|
|
|