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