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