Index: extensions/browser/extension_prefs.cc |
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc |
index efe3ba419ecf4e82d62b4b8ff5ac80204abbf91b..b83d22316295956b8de9e2a7adb54840a3f9e611 100644 |
--- a/extensions/browser/extension_prefs.cc |
+++ b/extensions/browser/extension_prefs.cc |
@@ -142,6 +142,7 @@ const char kPrefUserDraggedApp[] = "user_dragged_app_ntp"; |
// permissions because they may differ from those defined in the manifest. |
const char kPrefActivePermissions[] = "active_permissions"; |
const char kPrefGrantedPermissions[] = "granted_permissions"; |
+const char kPrefPersistedPermissions[] = "persisted_permissions"; |
// The preference names for PermissionSet values. |
const char kPrefAPIs[] = "api"; |
@@ -1133,6 +1134,28 @@ void ExtensionPrefs::SetActivePermissions( |
extension_id, kPrefActivePermissions, permissions); |
} |
+PermissionSet* ExtensionPrefs::GetPersistedPermissions( |
+ const std::string& extension_id) { |
+ CHECK(Extension::IdIsValid(extension_id)); |
+ return ReadPrefAsPermissionSet(extension_id, kPrefPersistedPermissions); |
+} |
+ |
+void ExtensionPrefs::AddPersistedPermission(const std::string& extension_id, |
+ const PermissionSet* permissions) { |
+ scoped_refptr<PermissionSet> old_permissions( |
+ GetPersistedPermissions(extension_id)); |
+ SetExtensionPrefPermissionSet( |
+ extension_id, |
+ kPrefPersistedPermissions, |
+ PermissionSet::CreateUnion(old_permissions.get(), permissions)); |
+} |
+ |
+void ExtensionPrefs::ClearPersistedPermissions( |
+ const std::string& extension_id) { |
+ SetExtensionPrefPermissionSet( |
+ extension_id, kPrefPersistedPermissions, new PermissionSet()); |
+} |
+ |
void ExtensionPrefs::SetExtensionRunning(const std::string& extension_id, |
bool is_running) { |
base::Value* value = new base::FundamentalValue(is_running); |