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

Unified Diff: extensions/common/url_pattern_unittest.cc

Issue 2499493004: Communicate ExtensionSettings policy to renderers (Closed)
Patch Set: nits Created 3 years, 8 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: extensions/common/url_pattern_unittest.cc
diff --git a/extensions/common/url_pattern_unittest.cc b/extensions/common/url_pattern_unittest.cc
index 860d487e3ab946c86116c6b53513d83c5abf51c4..8c29964a0e0cb5cc11e372b1f7db0bb65ac3c5f3 100644
--- a/extensions/common/url_pattern_unittest.cc
+++ b/extensions/common/url_pattern_unittest.cc
@@ -30,19 +30,19 @@ TEST(ExtensionURLPatternTest, ParseInvalid) {
const char* pattern;
URLPattern::ParseResult expected_result;
} kInvalidPatterns[] = {
- { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR },
- { "http:", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR },
- { "http:/", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR },
- { "about://", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR },
- { "http://", URLPattern::PARSE_ERROR_EMPTY_HOST },
- { "http:///", URLPattern::PARSE_ERROR_EMPTY_HOST },
- { "http:// /", URLPattern::PARSE_ERROR_EMPTY_HOST },
- { "http://*foo/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD },
- { "http://foo.*.bar/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD },
- { "http://fo.*.ba:123/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD },
- { "http:/bar", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR },
- { "http://bar", URLPattern::PARSE_ERROR_EMPTY_PATH },
- };
+ {"http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR},
+ {"http:", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR},
+ {"http:/", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR},
+ {"about://", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR},
+ {"http://", URLPattern::PARSE_ERROR_EMPTY_HOST},
+ {"http:///", URLPattern::PARSE_ERROR_EMPTY_HOST},
+ {"http:// /", URLPattern::PARSE_ERROR_EMPTY_HOST},
+ {"http://*foo/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD},
+ {"http://foo.*.bar/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD},
+ {"http://fo.*.ba:123/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD},
+ {"http:/bar", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR},
+ {"http://bar", URLPattern::PARSE_ERROR_EMPTY_PATH},
+ {"http://foo.*/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD}};
for (size_t i = 0; i < arraysize(kInvalidPatterns); ++i) {
URLPattern pattern(URLPattern::SCHEME_ALL);
@@ -67,30 +67,31 @@ TEST(ExtensionURLPatternTest, Ports) {
URLPattern::ParseResult expected_result;
const char* expected_port;
} kTestPatterns[] = {
- { "http://foo:1234/", URLPattern::PARSE_SUCCESS, "1234" },
- { "http://foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234" },
- { "http://*.foo:1234/", URLPattern::PARSE_SUCCESS, "1234" },
- { "http://*.foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234" },
- { "http://:1234/", URLPattern::PARSE_SUCCESS, "1234" },
- { "http://foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" },
- { "http://foo:*/", URLPattern::PARSE_SUCCESS, "*" },
- { "http://*.foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" },
- { "http://foo:com/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" },
- { "http://foo:123456/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" },
- { "http://foo:80:80/monkey", URLPattern::PARSE_ERROR_INVALID_PORT, "*" },
- { "file://foo:1234/bar", URLPattern::PARSE_SUCCESS, "*" },
- { "chrome://foo:1234/bar", URLPattern::PARSE_ERROR_INVALID_PORT, "*" },
-
- // Port-like strings in the path should not trigger a warning.
- { "http://*/:1234", URLPattern::PARSE_SUCCESS, "*" },
- { "http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, "*" },
- { "http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, "*" },
- };
+ {"http://foo:1234/", URLPattern::PARSE_SUCCESS, "1234"},
+ {"http://foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234"},
+ {"http://*.foo:1234/", URLPattern::PARSE_SUCCESS, "1234"},
+ {"http://*.foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234"},
+ {"http://:1234/", URLPattern::PARSE_SUCCESS, "1234"},
+ {"http://foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"},
+ {"http://foo:*/", URLPattern::PARSE_SUCCESS, "*"},
+ {"http://*.foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"},
+ {"http://foo:com/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"},
+ {"http://foo:123456/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"},
+ {"http://foo:80:80/monkey", URLPattern::PARSE_ERROR_INVALID_PORT, "*"},
+ {"file://foo:1234/bar", URLPattern::PARSE_SUCCESS, "*"},
+ {"chrome://foo:1234/bar", URLPattern::PARSE_ERROR_INVALID_PORT, "*"},
+
+ // Port-like strings in the path should not trigger a warning.
+ {"http://*/:1234", URLPattern::PARSE_SUCCESS, "*"},
+ {"http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, "*"},
+ {"http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, "*"},
+ {"http://*.foo.*/:1234", URLPattern::PARSE_SUCCESS, "*"}};
for (size_t i = 0; i < arraysize(kTestPatterns); ++i) {
URLPattern pattern(URLPattern::SCHEME_ALL);
EXPECT_EQ(kTestPatterns[i].expected_result,
- pattern.Parse(kTestPatterns[i].pattern))
+ pattern.Parse(kTestPatterns[i].pattern,
+ URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD))
<< "Got unexpected result for URL pattern: "
<< kTestPatterns[i].pattern;
EXPECT_EQ(kTestPatterns[i].expected_port, pattern.port())
@@ -105,6 +106,7 @@ TEST(ExtensionURLPatternTest, Match1) {
EXPECT_EQ("http", pattern.scheme());
EXPECT_EQ("", pattern.host());
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com")));
@@ -121,6 +123,7 @@ TEST(ExtensionURLPatternTest, Match2) {
EXPECT_EQ("https", pattern.scheme());
EXPECT_EQ("", pattern.host());
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/foo*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo")));
@@ -139,6 +142,7 @@ TEST(URLPatternTest, Match3) {
EXPECT_EQ("http", pattern.scheme());
EXPECT_EQ("google.com", pattern.host());
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/foo*bar", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar")));
@@ -159,6 +163,7 @@ TEST(ExtensionURLPatternTest, Match5) {
EXPECT_EQ("file", pattern.scheme());
EXPECT_EQ("", pattern.host());
EXPECT_FALSE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/foo?bar\\*baz", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz")));
@@ -172,6 +177,7 @@ TEST(ExtensionURLPatternTest, Match6) {
EXPECT_EQ("http", pattern.scheme());
EXPECT_EQ("127.0.0.1", pattern.host());
EXPECT_FALSE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1")));
@@ -185,6 +191,7 @@ TEST(ExtensionURLPatternTest, Match7) {
EXPECT_EQ("http", pattern.scheme());
EXPECT_EQ("0.0.1", pattern.host());
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
// Subdomain matching is never done if the argument has an IP address host.
@@ -201,6 +208,7 @@ TEST(ExtensionURLPatternTest, Match8) {
EXPECT_EQ("http", pattern.scheme());
EXPECT_EQ("xn--gkd", pattern.host());
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/a%C2%81%E1*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(
@@ -216,6 +224,7 @@ TEST(ExtensionURLPatternTest, Match9) {
EXPECT_EQ("chrome", pattern.scheme());
EXPECT_EQ("favicon", pattern.host());
EXPECT_FALSE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com")));
@@ -233,6 +242,7 @@ TEST(ExtensionURLPatternTest, Match10) {
EXPECT_FALSE(pattern.MatchesScheme("file"));
EXPECT_FALSE(pattern.MatchesScheme("ftp"));
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1")));
@@ -252,6 +262,7 @@ TEST(ExtensionURLPatternTest, Match11) {
EXPECT_TRUE(pattern.MatchesScheme("filesystem"));
EXPECT_TRUE(pattern.MatchesScheme("chrome-extension"));
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_TRUE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com")));
@@ -287,6 +298,7 @@ TEST(ExtensionURLPatternTest, Match12) {
EXPECT_TRUE(pattern.MatchesScheme("about"));
EXPECT_TRUE(pattern.MatchesScheme("chrome-extension"));
EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_TRUE(pattern.match_all_urls());
EXPECT_EQ("/*", pattern.path());
EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com")));
@@ -338,6 +350,7 @@ TEST(ExtensionURLPatternTest, Match14) {
EXPECT_EQ("", pattern.host());
EXPECT_FALSE(pattern.match_subdomains());
EXPECT_FALSE(pattern.match_all_urls());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_EQ("/foo*", pattern.path());
EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo")));
EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar")));
@@ -354,6 +367,7 @@ TEST(ExtensionURLPatternTest, Match15) {
EXPECT_EQ("", pattern.host());
EXPECT_FALSE(pattern.match_subdomains());
EXPECT_FALSE(pattern.match_all_urls());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_EQ("/foo*", pattern.path());
EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo")));
EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar")));
@@ -370,6 +384,7 @@ TEST(ExtensionURLPatternTest, Match16) {
// Since hostname is ignored for file://.
EXPECT_EQ("", pattern.host());
EXPECT_FALSE(pattern.match_subdomains());
+ EXPECT_TRUE(pattern.match_effective_tld());
EXPECT_FALSE(pattern.match_all_urls());
EXPECT_EQ("/foo*", pattern.path());
EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo")));
@@ -437,6 +452,39 @@ TEST(ExtensionURLPatternTest, Match19) {
GURL("filesystem:chrome-extension://ftw/t/file.txt")));
}
+// effective TLD wildcard
+TEST(URLPatternTest, EffectiveTldWildcard) {
+ URLPattern pattern(kAllSchemes);
+ EXPECT_EQ(URLPattern::PARSE_SUCCESS,
+ pattern.Parse("http://*.google.*/foo*bar",
+ URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD));
+ EXPECT_EQ("http", pattern.scheme());
+ EXPECT_EQ("google", pattern.host());
+ EXPECT_TRUE(pattern.match_subdomains());
+ EXPECT_FALSE(pattern.match_effective_tld());
+ EXPECT_FALSE(pattern.match_all_urls());
+ EXPECT_EQ("/foo*bar", pattern.path());
+ EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar")));
+ EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com.br/foo?bar")));
+ EXPECT_TRUE(
+ pattern.MatchesURL(GURL("http://monkey.images.google.co.uk/foooobar")));
+ EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar")));
+ EXPECT_TRUE(pattern.MatchesURL(GURL("filesystem:http://google.com/foo/bar")));
+ EXPECT_FALSE(pattern.MatchesURL(
+ GURL("filesystem:http://google.com/temporary/foobar")));
+ URLPattern pattern_sub(kAllSchemes);
+ EXPECT_EQ(URLPattern::PARSE_SUCCESS,
+ pattern_sub.Parse("https://maps.google.*/",
+ URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD));
+ EXPECT_EQ("https", pattern_sub.scheme());
+ EXPECT_EQ("maps.google", pattern_sub.host());
+ EXPECT_FALSE(pattern_sub.match_subdomains());
+ EXPECT_FALSE(pattern_sub.match_all_urls());
+ EXPECT_EQ("/", pattern_sub.path());
+ EXPECT_TRUE(pattern_sub.MatchesURL(GURL("https://maps.google.co.uk/")));
+ EXPECT_FALSE(pattern_sub.MatchesURL(GURL("https://sub.maps.google.co.uk/")));
+}
+
static const struct GetAsStringPatterns {
const char* pattern;
} kGetAsStringTestCases[] = {

Powered by Google App Engine
This is Rietveld 408576698