Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Unified Diff: components/content_settings/core/common/content_settings_pattern.cc

Issue 1895993003: Add migration code to change existing domain scoped content settings to be origin scoped (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rewrite ContentSettingsPatterns::MigrateFromDomaintoOrigin Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..c02257be4aace1a1cc4b3009db96f21c2b35448d 100644
--- a/components/content_settings/core/common/content_settings_pattern.cc
+++ b/components/content_settings/core/common/content_settings_pattern.cc
@@ -439,6 +439,49 @@ ContentSettingsPattern ContentSettingsPattern::FromString(
}
// static
+bool ContentSettingsPattern::MigrateFromDomaintoOrigin(
raymes 2016/06/27 07:23:29 MigrateFromDomainToOrigin (capital T)
lshang 2016/06/28 07:14:41 Done.
+ const ContentSettingsPattern& domain_pattern,
+ ContentSettingsPattern* origin_pattern) {
+ DCHECK(origin_pattern);
+
+ // First test if the domain pattern is generated using FromURL().
raymes 2016/06/27 07:23:29 nit: remove this line, I think it should be clear
lshang 2016/06/28 07:14:41 Done.
+ // Generated patterns must either have a scheme wildcard or be https.
+ if (domain_pattern.parts_.scheme != url::kHttpsScheme &&
+ !domain_pattern.parts_.is_scheme_wildcard)
raymes 2016/06/27 07:23:29 nit: add {}
lshang 2016/06/28 07:14:41 Done.
+ return false;
+
+ // Generated patterns will either have a port wildcard or be https (but not
+ // both).
+ if (domain_pattern.parts_.is_port_wildcard &&
+ domain_pattern.parts_.scheme == url::kHttpsScheme)
raymes 2016/06/27 07:23:29 nit: add {}
lshang 2016/06/28 07:14:41 Done.
+ return false;
+
+ // Generated patterns will always have a domain wildcard.
+ if (!domain_pattern.parts_.has_domain_wildcard)
+ return false;
+
+ // Generated patterns will always have a host.
+ if (domain_pattern.parts_.host.empty())
+ return false;
+
+ // Then migrate it to be origin scoped.
+ *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)
raymes 2016/06/27 07:23:29 I think we know this will be true, so we can remov
lshang 2016/06/28 07:14:41 Done.
+ (*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);

Powered by Google App Engine
This is Rietveld 408576698