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

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

Issue 1442083002: Stop inheriting push notification permissions from regular to incognito (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments Created 5 years, 1 month 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 3887bb5f009c70b618a978e6969b8fc4723eba76..c6b22b35867f96ac7f8e4b4b4b83785fd69c5458 100644
--- a/components/content_settings/core/browser/host_content_settings_map.cc
+++ b/components/content_settings/core/browser/host_content_settings_map.cc
@@ -157,6 +157,10 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSetting(
continue;
ContentSetting default_setting =
GetDefaultContentSettingFromProvider(content_type, provider->second);
+ if (is_off_the_record_) {
+ default_setting = CoerceSettingInheritedToIncognito(content_type,
+ default_setting);
+ }
if (default_setting != CONTENT_SETTING_DEFAULT) {
if (provider_id)
*provider_id = kProviderNamesSourceMap[provider->first].provider_name;
@@ -654,7 +658,7 @@ scoped_ptr<base::Value> HostContentSettingsMap::GetWebsiteSettingInternal(
provider != content_settings_providers_.end();
++provider) {
- scoped_ptr<base::Value> value(
+ scoped_ptr<base::Value> value =
content_settings::GetContentSettingValueAndPatterns(provider->second,
primary_url,
secondary_url,
@@ -662,7 +666,7 @@ scoped_ptr<base::Value> HostContentSettingsMap::GetWebsiteSettingInternal(
resource_identifier,
is_off_the_record_,
primary_pattern,
- secondary_pattern));
+ secondary_pattern);
if (value) {
if (info)
info->source = kProviderNamesSourceMap[provider->first].provider_source;
@@ -677,3 +681,19 @@ scoped_ptr<base::Value> HostContentSettingsMap::GetWebsiteSettingInternal(
}
return scoped_ptr<base::Value>();
}
+
+// static
+ContentSetting HostContentSettingsMap::CoerceSettingInheritedToIncognito(
+ ContentSettingsType content_type,
+ ContentSetting setting) {
+ if (setting != CONTENT_SETTING_ALLOW)
+ return setting;
+ const content_settings::ContentSettingsInfo* info =
+ content_settings::ContentSettingsRegistry::GetInstance()
+ ->Get(content_type);
+ if (info->incognito_behavior() !=
+ content_settings::ContentSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW)
+ return setting;
+ DCHECK(info->IsSettingValid(CONTENT_SETTING_ASK));
+ return CONTENT_SETTING_ASK;
+}

Powered by Google App Engine
This is Rietveld 408576698