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

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

Issue 1605453003: Ensure content settings aren't persisted in the guest profile (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/host_content_settings_map.cc
diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc
index 35100454fee7ba4ca79122721f164677a47a97a2..4d0aadd8f44473b931b3a1b14f57943a9b80b0c2 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -94,22 +94,29 @@ scoped_ptr<base::Value> CoerceSettingInheritedToIncognito(
} // namespace
HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
- bool incognito)
+ bool is_incognito_profile,
+ bool is_guest_profile)
:
#ifndef NDEBUG
used_from_thread_id_(base::PlatformThread::CurrentId()),
#endif
prefs_(prefs),
- is_off_the_record_(incognito) {
+ is_off_the_record_(is_incognito_profile || is_guest_profile) {
+ DCHECK(!(is_incognito_profile && is_guest_profile));
content_settings::ObservableProvider* policy_provider =
new content_settings::PolicyProvider(prefs_);
policy_provider->AddObserver(this);
content_settings_providers_[POLICY_PROVIDER] = policy_provider;
- content_settings::ObservableProvider* pref_provider =
+ content_settings::PrefProvider* pref_provider =
new content_settings::PrefProvider(prefs_, is_off_the_record_);
pref_provider->AddObserver(this);
content_settings_providers_[PREF_PROVIDER] = pref_provider;
+ // This ensures that content settings are cleared for the guest profile. This
+ // wouldn't be needed except that we used to allow settings to be stored for
+ // the guest profile and so we need to ensure those get cleared.
+ if (is_guest_profile)
+ pref_provider->ClearPrefs();
content_settings::ObservableProvider* default_provider =
new content_settings::DefaultProvider(prefs_, is_off_the_record_);
@@ -307,11 +314,12 @@ void HostContentSettingsMap::SetWebsiteSettingCustomScope(
resource_identifier.empty());
UsedContentSettingsProviders();
- base::Value* val = value.release();
for (auto& provider_pair : content_settings_providers_) {
- if (provider_pair.second->SetWebsiteSetting(primary_pattern,
- secondary_pattern, content_type,
- resource_identifier, val)) {
+ if (provider_pair.second->SetWebsiteSetting(
+ primary_pattern, secondary_pattern, content_type,
+ resource_identifier, value.get())) {
+ // If succesful then ownership is passed to the provider.
+ ignore_result(value.release());
return;
}
}

Powered by Google App Engine
This is Rietveld 408576698