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..f4163a461515896ee47fa19f6d0ed63b2559d7cf 100644 |
--- a/components/content_settings/core/common/content_settings_pattern.cc |
+++ b/components/content_settings/core/common/content_settings_pattern.cc |
@@ -439,6 +439,50 @@ ContentSettingsPattern ContentSettingsPattern::FromString( |
} |
// static |
+bool ContentSettingsPattern::MigrateFromDomainToOrigin( |
+ const ContentSettingsPattern& domain_pattern, |
+ ContentSettingsPattern* origin_pattern) { |
+ DCHECK(origin_pattern); |
+ |
+ // Generated patterns must either have a scheme wildcard or be https. |
+ if (domain_pattern.parts_.scheme != url::kHttpsScheme && |
+ !domain_pattern.parts_.is_scheme_wildcard) { |
+ return false; |
+ } |
+ |
+ // Generated patterns will either have a port wildcard or be https (but not |
msramek
2016/06/30 16:16:22
Not sure if this is just me, but this sentence rea
lshang
2016/07/04 02:46:01
Done.
|
+ // both). |
+ if (domain_pattern.parts_.is_port_wildcard && |
+ domain_pattern.parts_.scheme == url::kHttpsScheme) { |
+ return false; |
+ } |
+ |
+ // Generated patterns will always have a domain wildcard. |
msramek
2016/06/30 16:16:22
nit: Patterns generated with ::FromUrl (which we w
lshang
2016/07/04 02:46:01
Done.
|
+ if (!domain_pattern.parts_.has_domain_wildcard) |
+ return false; |
+ |
+ // Generated patterns will always have a host. |
+ if (domain_pattern.parts_.host.empty()) |
+ return false; |
+ |
+ *origin_pattern = domain_pattern; |
msramek
2016/06/30 16:16:22
Would it make sense to use Builder here instead of
lshang
2016/07/04 02:46:01
Done.
|
+ |
+ if (domain_pattern.parts_.is_scheme_wildcard) { |
+ (*origin_pattern).parts_.scheme = url::kHttpScheme; |
msramek
2016/06/30 16:16:22
The scheme wildcard exception was valid for both h
lshang
2016/07/04 02:46:01
That's a good point!
Patterns generated from perm
msramek
2016/07/07 12:19:24
Yup, makes sense :)
|
+ (*origin_pattern).parts_.is_scheme_wildcard = false; |
+ } |
+ |
+ (*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 true; |
+} |
+ |
+// static |
void ContentSettingsPattern::SetNonWildcardDomainNonPortScheme( |
const char* scheme) { |
DCHECK(scheme); |