Chromium Code Reviews| 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..d125dab4fd742e8abcbfe25adf9c37b1538038ed 100644 |
| --- a/components/content_settings/core/browser/host_content_settings_map.cc |
| +++ b/components/content_settings/core/browser/host_content_settings_map.cc |
| @@ -23,6 +23,7 @@ |
| #include "components/content_settings/core/browser/content_settings_registry.h" |
| #include "components/content_settings/core/browser/content_settings_rule.h" |
| #include "components/content_settings/core/browser/content_settings_utils.h" |
| +#include "components/content_settings/core/browser/website_settings_info.h" |
| #include "components/content_settings/core/browser/website_settings_registry.h" |
| #include "components/content_settings/core/common/content_settings_pattern.h" |
| #include "components/content_settings/core/common/pref_names.h" |
| @@ -146,8 +147,16 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider( |
| ContentSetting HostContentSettingsMap::GetDefaultContentSetting( |
| ContentSettingsType content_type, |
| std::string* provider_id) const { |
| + using content_settings::WebsiteSettingsInfo; |
|
msramek
2015/11/27 16:30:04
Nit: Is this allowed? I have seen it in tests and
raymes
2015/11/30 00:28:46
This was a suggestion from Michael. Either way is
johnme
2015/11/30 14:56:58
Done.
johnme
2015/11/30 14:56:58
Done.
|
| + using content_settings::WebsiteSettingsRegistry; |
| UsedContentSettingsProviders(); |
| + const WebsiteSettingsRegistry* reg = WebsiteSettingsRegistry::GetInstance(); |
| + bool do_not_inherit_allow = |
| + is_off_the_record_ && |
| + reg->Get(content_type)->incognito_behavior() |
| + == WebsiteSettingsInfo::INHERIT_IN_INCOGNITO_EXCEPT_ALLOW; |
| + |
| // Iterate through the list of providers and return the first non-NULL value |
| // that matches |primary_url| and |secondary_url|. |
| for (ConstProviderIterator provider = content_settings_providers_.begin(); |
| @@ -157,6 +166,8 @@ ContentSetting HostContentSettingsMap::GetDefaultContentSetting( |
| continue; |
| ContentSetting default_setting = |
| GetDefaultContentSettingFromProvider(content_type, provider->second); |
| + if (do_not_inherit_allow && default_setting == CONTENT_SETTING_ALLOW) |
| + default_setting = CONTENT_SETTING_ASK; |
|
msramek
2015/11/27 16:30:04
DCHECK ContentSettingsInfo::IsSettingValid(ASK)
S
raymes
2015/11/30 00:28:46
+1
johnme
2015/11/30 14:56:58
Done.
johnme
2015/11/30 14:56:58
Done.
|
| if (default_setting != CONTENT_SETTING_DEFAULT) { |
| if (provider_id) |
| *provider_id = kProviderNamesSourceMap[provider->first].provider_name; |
| @@ -654,7 +665,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 +673,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; |