Chromium Code Reviews| Index: extensions/browser/extension_prefs.cc |
| diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc |
| index 7799f0d04dde7d06fae7238dd78a9b00f5a59883..5b1f22019895fab0aa1c1a63f6fd411410a661b9 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"; |
| @@ -1130,6 +1131,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); |
| + } |
|
gpdavis
2014/07/15 21:56:38
If persisted permissions do not exist, we initiali
Devlin
2014/07/15 22:11:01
Probably an URLPattern. Url is too specific; Pref
|
| + |
| + pattern_list->Append(new base::StringValue(pattern->GetAsString())); |
| +} |
| + |
| +void ExtensionPrefs::ClearPersistedPermissions(const Extension* extension) { |
|
gpdavis
2014/07/15 21:56:38
This method will allow us to place a "Clear persis
|
| + 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); |