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

Unified Diff: components/content_settings/core/browser/content_settings_pref.cc

Issue 1767423002: [Do not commit] Track revocations in content_settings::Observer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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: components/content_settings/core/browser/content_settings_pref.cc
diff --git a/components/content_settings/core/browser/content_settings_pref.cc b/components/content_settings/core/browser/content_settings_pref.cc
index e1e2b332e5ac1b509780d02a937c906cf4c583a8..44a9f80b15092c45a7858f04e96f2fdb67ba3967 100644
--- a/components/content_settings/core/browser/content_settings_pref.cc
+++ b/components/content_settings/core/browser/content_settings_pref.cc
@@ -107,6 +107,8 @@ bool ContentSettingsPref::SetWebsiteSetting(
// At this point take the ownership of the |in_value|.
scoped_ptr<base::Value> value(in_value);
+ ContentSetting previous_value = CONTENT_SETTING_DEFAULT;
+
// Update in memory value map.
OriginIdentifierValueMap* map_to_modify = &incognito_value_map_;
if (!is_incognito_)
@@ -131,14 +133,14 @@ bool ContentSettingsPref::SetWebsiteSetting(
}
// Update the content settings preference.
if (!is_incognito_) {
- UpdatePref(primary_pattern,
- secondary_pattern,
- resource_identifier,
- value.get());
+ previous_value = UpdatePref(primary_pattern,
+ secondary_pattern,
+ resource_identifier,
+ value.get());
}
- notify_callback_.Run(
- primary_pattern, secondary_pattern, content_type_, resource_identifier);
+ notify_callback_.Run(primary_pattern, secondary_pattern, content_type_,
+ previous_value, resource_identifier);
return true;
}
@@ -174,6 +176,7 @@ void ContentSettingsPref::ClearAllContentSettingsRules() {
notify_callback_.Run(ContentSettingsPattern(),
ContentSettingsPattern(),
content_type_,
+ CONTENT_SETTING_DEFAULT,
ResourceIdentifier());
}
@@ -376,10 +379,11 @@ void ContentSettingsPref::OnPrefChanged() {
notify_callback_.Run(ContentSettingsPattern(),
ContentSettingsPattern(),
content_type_,
+ CONTENT_SETTING_DEFAULT,
ResourceIdentifier());
}
-void ContentSettingsPref::UpdatePref(
+ContentSetting ContentSettingsPref::UpdatePref(
const ContentSettingsPattern& primary_pattern,
const ContentSettingsPattern& secondary_pattern,
const ResourceIdentifier& resource_identifier,
@@ -388,6 +392,8 @@ void ContentSettingsPref::UpdatePref(
// send out notifications (by |~DictionaryPrefUpdate|).
AssertLockNotHeld();
+ ContentSetting old_content_setting = CONTENT_SETTING_DEFAULT;
+
base::AutoReset<bool> auto_reset(&updating_preferences_, true);
{
DictionaryPrefUpdate update(prefs_, pref_name_);
@@ -407,6 +413,11 @@ void ContentSettingsPref::UpdatePref(
}
if (settings_dictionary) {
+ int old_setting = CONTENT_SETTING_DEFAULT;
+ settings_dictionary->GetIntegerWithoutPathExpansion(kSettingPath,
+ &old_setting);
+ old_content_setting = static_cast<ContentSetting>(old_setting);
+
if (SupportsResourceIdentifiers(content_type_) &&
!resource_identifier.empty()) {
base::DictionaryValue* resource_dictionary = NULL;
@@ -414,7 +425,7 @@ void ContentSettingsPref::UpdatePref(
kPerResourceIdentifierPrefName, &resource_dictionary);
if (!found) {
if (value == NULL)
- return; // Nothing to remove. Exit early.
+ return old_content_setting; // Nothing to remove. Exit early.
resource_dictionary = new base::DictionaryValue;
settings_dictionary->Set(
kPerResourceIdentifierPrefName, resource_dictionary);
@@ -448,6 +459,8 @@ void ContentSettingsPref::UpdatePref(
}
}
}
+
+ return old_content_setting;
}
// static

Powered by Google App Engine
This is Rietveld 408576698