Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1061)

Unified Diff: chrome/browser/extensions/extension_prefs.cc

Issue 7088017: Split incognito extension content settings in session-only and persistent. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/extension_prefs.cc
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 57cd52acdb18f046b56a1401b59825281f716073..56dc02fe19b7ddb25a8c0445929d3fde59f1f6a4 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -119,6 +119,9 @@ const char kPrefIncognitoPreferences[] = "incognito_preferences";
// A preference that contains extension-set content settings.
const char kPrefContentSettings[] = "content_settings";
+// A preference that contains extension-set content settings.
+const char kPrefIncognitoContentSettings[] = "incognito_content_settings";
+
// Provider of write access to a dictionary storing extension prefs.
class ScopedExtensionPrefUpdate : public DictionaryPrefUpdate {
public:
@@ -895,6 +898,7 @@ void ExtensionPrefs::OnExtensionInstalled(
extension_dict->Set(kPrefPreferences, new DictionaryValue());
extension_dict->Set(kPrefIncognitoPreferences, new DictionaryValue());
extension_dict->Set(kPrefContentSettings, new ListValue());
+ extension_dict->Set(kPrefIncognitoContentSettings, new ListValue());
FilePath::StringType path = MakePathRelative(install_directory_,
extension->path());
@@ -1332,12 +1336,19 @@ base::Time ExtensionPrefs::GetCurrentTime() const {
return base::Time::Now();
}
-void ExtensionPrefs::OnContentSettingChanged(const std::string& extension_id,
- bool incognito) {
- if (!incognito) {
+void ExtensionPrefs::OnContentSettingChanged(
+ const std::string& extension_id,
+ bool incognito) {
+ if (incognito) {
+ UpdateExtensionPref(
+ extension_id, kPrefIncognitoContentSettings,
+ content_settings_store_->GetSettingsForExtension(
+ extension_id, extension_prefs_scope::kIncognitoPersistent));
+ } else {
UpdateExtensionPref(
extension_id, kPrefContentSettings,
- content_settings_store_->GetSettingsForExtension(extension_id));
+ content_settings_store_->GetSettingsForExtension(
+ extension_id, extension_prefs_scope::kRegular));
}
}
@@ -1457,9 +1468,17 @@ void ExtensionPrefs::InitPrefStore() {
const DictionaryValue* extension_prefs = GetExtensionPref(*ext_id);
DCHECK(extension_prefs);
ListValue* content_settings = NULL;
- if (extension_prefs->GetList(kPrefContentSettings, &content_settings)) {
+ if (extension_prefs->GetList(kPrefContentSettings,
+ &content_settings)) {
+ content_settings_store_->SetExtensionContentSettingsFromList(
+ *ext_id, content_settings,
+ extension_prefs_scope::kRegular);
+ }
+ if (extension_prefs->GetList(kPrefIncognitoContentSettings,
+ &content_settings)) {
content_settings_store_->SetExtensionContentSettingsFromList(
- *ext_id, content_settings);
+ *ext_id, content_settings,
+ extension_prefs_scope::kIncognitoPersistent);
}
}
@@ -1553,6 +1572,17 @@ bool ExtensionPrefs::HasIncognitoPrefValue(const std::string& pref_key) {
return has_incognito_pref_value;
}
+void ExtensionPrefs::ClearIncognitoSessionOnlyContentSettings() {
+ ExtensionIdSet extension_ids;
+ GetExtensions(&extension_ids);
+ for (ExtensionIdSet::iterator ext_id = extension_ids.begin();
+ ext_id != extension_ids.end(); ++ext_id) {
+ content_settings_store_->ClearContentSettingsForExtension(
+ *ext_id,
+ extension_prefs_scope::kIncognitoSessionOnly);
+ }
+}
+
// static
void ExtensionPrefs::RegisterUserPrefs(PrefService* prefs) {
prefs->RegisterDictionaryPref(kExtensionsPref, PrefService::UNSYNCABLE_PREF);
« no previous file with comments | « chrome/browser/extensions/extension_prefs.h ('k') | chrome/browser/geolocation/geolocation_content_settings_map.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698