Index: chrome/browser/content_settings/host_content_settings_map.cc |
diff --git a/chrome/browser/content_settings/host_content_settings_map.cc b/chrome/browser/content_settings/host_content_settings_map.cc |
index da348b050eacc334d0eefeb3974c2c07ed50b35f..eb904d95d7eebecb9955df7b77008d3450ce3b0b 100644 |
--- a/chrome/browser/content_settings/host_content_settings_map.cc |
+++ b/chrome/browser/content_settings/host_content_settings_map.cc |
@@ -293,6 +293,34 @@ void HostContentSettingsMap::SetWebsiteSetting( |
NOTREACHED(); |
} |
+void HostContentSettingsMap::SetNarrowestWebsiteSetting( |
+ const ContentSettingsPattern& primary_pattern, |
+ const ContentSettingsPattern& secondary_pattern, |
+ ContentSettingsType content_type, |
+ const std::string& resource_identifier, |
+ ContentSetting setting, |
+ content_settings::SettingInfo existing_info) { |
+ ContentSettingsPattern narrow_primary = primary_pattern; |
+ ContentSettingsPattern narrow_secondary = secondary_pattern; |
+ |
+ DCHECK(existing_info.source == content_settings::SETTING_SOURCE_USER); |
Bernhard Bauer
2014/08/15 14:53:05
DCHECK_EQ?
Daniel Nishi
2014/08/15 16:56:45
Done.
|
+ ContentSettingsPattern::Relation r1 = |
+ existing_info.primary_pattern.Compare(primary_pattern); |
+ if (r1 == ContentSettingsPattern::PREDECESSOR) { |
+ narrow_primary = existing_info.primary_pattern; |
+ } else if (r1 == ContentSettingsPattern::IDENTITY) { |
+ ContentSettingsPattern::Relation r2 = |
+ existing_info.secondary_pattern.Compare(secondary_pattern); |
+ DCHECK(r2 != ContentSettingsPattern::DISJOINT_ORDER_POST && |
+ r2 != ContentSettingsPattern::DISJOINT_ORDER_PRE); |
+ if (r2 == ContentSettingsPattern::PREDECESSOR) |
+ narrow_secondary = existing_info.secondary_pattern; |
+ } |
+ |
+ SetContentSetting( |
+ narrow_primary, narrow_secondary, content_type, std::string(), setting); |
+} |
+ |
void HostContentSettingsMap::SetContentSetting( |
const ContentSettingsPattern& primary_pattern, |
const ContentSettingsPattern& secondary_pattern, |