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