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); |