| 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 303ec9855df7551c4c7d78eabbf5190e8278c968..d1151eab85af2a51fa622b979cda1d05674ff2a3 100644
|
| --- a/components/content_settings/core/browser/host_content_settings_map.cc
|
| +++ b/components/content_settings/core/browser/host_content_settings_map.cc
|
| @@ -34,6 +34,8 @@
|
| #include "net/base/static_cookie_policy.h"
|
| #include "url/gurl.h"
|
|
|
| +using content_settings::WebsiteSettingsInfo;
|
| +
|
| namespace {
|
|
|
| typedef std::vector<content_settings::Rule> Rules;
|
| @@ -106,6 +108,31 @@ scoped_ptr<base::Value> ProcessIncognitoInheritanceBehavior(
|
| return value;
|
| }
|
|
|
| +content_settings::PatternPair GetPatternsFromScopingType(
|
| + WebsiteSettingsInfo::ScopingType scoping_type,
|
| + const GURL& primary_url,
|
| + const GURL& secondary_url) {
|
| + content_settings::PatternPair patterns;
|
| +
|
| + switch (scoping_type) {
|
| + case WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE:
|
| + case WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE:
|
| + patterns.first = ContentSettingsPattern::FromURL(primary_url);
|
| + patterns.second = ContentSettingsPattern::Wildcard();
|
| + break;
|
| + case WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE:
|
| + patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url);
|
| + patterns.second = ContentSettingsPattern::Wildcard();
|
| + break;
|
| + case WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE:
|
| + patterns.first = ContentSettingsPattern::FromURLNoWildcard(primary_url);
|
| + patterns.second =
|
| + ContentSettingsPattern::FromURLNoWildcard(secondary_url);
|
| + break;
|
| + }
|
| + return patterns;
|
| +}
|
| +
|
| } // namespace
|
|
|
| HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs,
|
| @@ -283,39 +310,16 @@ void HostContentSettingsMap::SetWebsiteSettingDefaultScope(
|
| ContentSettingsType content_type,
|
| const std::string& resource_identifier,
|
| base::Value* value) {
|
| - using content_settings::WebsiteSettingsInfo;
|
| -
|
| const WebsiteSettingsInfo* info =
|
| content_settings::WebsiteSettingsRegistry::GetInstance()->Get(
|
| content_type);
|
| - ContentSettingsPattern primary_pattern;
|
| - ContentSettingsPattern secondary_pattern;
|
| - switch (info->scoping_type()) {
|
| - case WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE:
|
| - primary_pattern = ContentSettingsPattern::FromURL(top_level_url);
|
| - secondary_pattern = ContentSettingsPattern::Wildcard();
|
| - DCHECK(requesting_url.is_empty());
|
| - break;
|
| - case WebsiteSettingsInfo::REQUESTING_DOMAIN_ONLY_SCOPE:
|
| - primary_pattern = ContentSettingsPattern::FromURL(requesting_url);
|
| - secondary_pattern = ContentSettingsPattern::Wildcard();
|
| - DCHECK(top_level_url.is_empty());
|
| - break;
|
| - case WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE:
|
| - primary_pattern =
|
| - ContentSettingsPattern::FromURLNoWildcard(requesting_url);
|
| - secondary_pattern = ContentSettingsPattern::Wildcard();
|
| - DCHECK(top_level_url.is_empty());
|
| - break;
|
| - case WebsiteSettingsInfo::REQUESTING_ORIGIN_AND_TOP_LEVEL_ORIGIN_SCOPE:
|
| - primary_pattern =
|
| - ContentSettingsPattern::FromURLNoWildcard(requesting_url);
|
| - secondary_pattern =
|
| - ContentSettingsPattern::FromURLNoWildcard(top_level_url);
|
| - break;
|
| - }
|
| + content_settings::PatternPair patterns = GetPatternsFromScopingType(
|
| + info->scoping_type(), requesting_url, top_level_url);
|
| + ContentSettingsPattern primary_pattern = patterns.first;
|
| + ContentSettingsPattern secondary_pattern = patterns.second;
|
| if (!primary_pattern.IsValid() || !secondary_pattern.IsValid())
|
| return;
|
| +
|
| SetWebsiteSettingCustomScope(primary_pattern, secondary_pattern, content_type,
|
| resource_identifier, make_scoped_ptr(value));
|
| }
|
| @@ -437,6 +441,30 @@ void HostContentSettingsMap::SetContentSetting(
|
| resource_identifier, std::move(value));
|
| }
|
|
|
| +void HostContentSettingsMap::SetContentSettingDefaultScope(
|
| + const GURL& primary_url,
|
| + const GURL& secondary_url,
|
| + ContentSettingsType content_type,
|
| + const std::string& resource_identifier,
|
| + ContentSetting setting) {
|
| + using content_settings::ContentSettingsInfo;
|
| + const ContentSettingsInfo* info =
|
| + content_settings::ContentSettingsRegistry::GetInstance()->Get(
|
| + content_type);
|
| + DCHECK(info);
|
| +
|
| + content_settings::PatternPair patterns =
|
| + GetPatternsFromScopingType(info->website_settings_info()->scoping_type(),
|
| + primary_url, secondary_url);
|
| + ContentSettingsPattern primary_pattern = patterns.first;
|
| + ContentSettingsPattern secondary_pattern = patterns.second;
|
| + if (!primary_pattern.IsValid() || !secondary_pattern.IsValid())
|
| + return;
|
| +
|
| + SetContentSetting(primary_pattern, secondary_pattern, content_type,
|
| + resource_identifier, setting);
|
| +}
|
| +
|
| ContentSetting HostContentSettingsMap::GetContentSettingAndMaybeUpdateLastUsage(
|
| const GURL& primary_url,
|
| const GURL& secondary_url,
|
|
|