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