Index: components/content_settings/core/common/content_settings_pattern.cc |
diff --git a/components/content_settings/core/common/content_settings_pattern.cc b/components/content_settings/core/common/content_settings_pattern.cc |
index 74a9ffaf86d16c055e4613fe3daac1f076becb74..2a2ddc1d9c34bcbeacbe74433373279ec43a712f 100644 |
--- a/components/content_settings/core/common/content_settings_pattern.cc |
+++ b/components/content_settings/core/common/content_settings_pattern.cc |
@@ -439,6 +439,24 @@ ContentSettingsPattern ContentSettingsPattern::FromString( |
} |
// static |
+ContentSettingsPattern ContentSettingsPattern::FromDomainToOrigin( |
+ const ContentSettingsPattern domain_pattern) { |
+ ContentSettingsPattern origin_pattern(domain_pattern); |
+ |
+ if (domain_pattern.parts_.is_scheme_wildcard) { |
+ origin_pattern.parts_.scheme = url::kHttpScheme; |
+ origin_pattern.parts_.is_scheme_wildcard = false; |
+ } |
+ if (domain_pattern.parts_.has_domain_wildcard) |
+ origin_pattern.parts_.has_domain_wildcard = false; |
+ if (domain_pattern.parts_.is_port_wildcard) { |
+ origin_pattern.parts_.port = GetDefaultPort(origin_pattern.parts_.scheme); |
+ origin_pattern.parts_.is_port_wildcard = false; |
+ } |
+ return origin_pattern; |
+} |
+ |
+// static |
void ContentSettingsPattern::SetNonWildcardDomainNonPortScheme( |
const char* scheme) { |
DCHECK(scheme); |
@@ -529,6 +547,27 @@ bool ContentSettingsPattern::MatchesAllHosts() const { |
return parts_.has_domain_wildcard && parts_.host.empty(); |
} |
+bool ContentSettingsPattern::IsGeneratedUsingFromURL() const { |
+ // Generated patterns must either have a scheme wildcard or be https. |
+ if (parts_.scheme != url::kHttpsScheme && !parts_.is_scheme_wildcard) |
+ return false; |
+ |
+ // Generated patterns will either have a port wildcard or be https (but not |
+ // both). |
+ if (parts_.is_port_wildcard && parts_.scheme == url::kHttpsScheme) |
+ return false; |
+ |
+ // Generated patterns will always have a domain wildcard. |
+ if (!parts_.has_domain_wildcard) |
+ return false; |
+ |
+ // Generated patterns will always have a host. |
+ if (parts_.host.empty()) |
+ return false; |
+ |
+ return true; |
+} |
+ |
std::string ContentSettingsPattern::ToString() const { |
if (IsValid()) |
return content_settings::PatternParser::ToString(parts_); |