| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/common/url_pattern.h" | 5 #include "extensions/common/url_pattern.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 URLPattern::SCHEME_FTP | | 23 URLPattern::SCHEME_FTP | |
| 24 URLPattern::SCHEME_CHROMEUI | | 24 URLPattern::SCHEME_CHROMEUI | |
| 25 URLPattern::SCHEME_EXTENSION | | 25 URLPattern::SCHEME_EXTENSION | |
| 26 URLPattern::SCHEME_FILESYSTEM; | 26 URLPattern::SCHEME_FILESYSTEM; |
| 27 | 27 |
| 28 TEST(ExtensionURLPatternTest, ParseInvalid) { | 28 TEST(ExtensionURLPatternTest, ParseInvalid) { |
| 29 const struct { | 29 const struct { |
| 30 const char* pattern; | 30 const char* pattern; |
| 31 URLPattern::ParseResult expected_result; | 31 URLPattern::ParseResult expected_result; |
| 32 } kInvalidPatterns[] = { | 32 } kInvalidPatterns[] = { |
| 33 {"http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR}, | 33 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR }, |
| 34 {"http:", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR}, | 34 { "http:", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 35 {"http:/", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR}, | 35 { "http:/", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 36 {"about://", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR}, | 36 { "about://", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 37 {"http://", URLPattern::PARSE_ERROR_EMPTY_HOST}, | 37 { "http://", URLPattern::PARSE_ERROR_EMPTY_HOST }, |
| 38 {"http:///", URLPattern::PARSE_ERROR_EMPTY_HOST}, | 38 { "http:///", URLPattern::PARSE_ERROR_EMPTY_HOST }, |
| 39 {"http:// /", URLPattern::PARSE_ERROR_EMPTY_HOST}, | 39 { "http:// /", URLPattern::PARSE_ERROR_EMPTY_HOST }, |
| 40 {"http://*foo/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD}, | 40 { "http://*foo/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, |
| 41 {"http://foo.*.bar/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD}, | 41 { "http://foo.*.bar/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, |
| 42 {"http://fo.*.ba:123/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD}, | 42 { "http://fo.*.ba:123/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, |
| 43 {"http:/bar", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR}, | 43 { "http:/bar", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 44 {"http://bar", URLPattern::PARSE_ERROR_EMPTY_PATH}, | 44 { "http://bar", URLPattern::PARSE_ERROR_EMPTY_PATH }, |
| 45 {"http://foo.*/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD}}; | 45 }; |
| 46 | 46 |
| 47 for (size_t i = 0; i < arraysize(kInvalidPatterns); ++i) { | 47 for (size_t i = 0; i < arraysize(kInvalidPatterns); ++i) { |
| 48 URLPattern pattern(URLPattern::SCHEME_ALL); | 48 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 49 EXPECT_EQ(kInvalidPatterns[i].expected_result, | 49 EXPECT_EQ(kInvalidPatterns[i].expected_result, |
| 50 pattern.Parse(kInvalidPatterns[i].pattern)) | 50 pattern.Parse(kInvalidPatterns[i].pattern)) |
| 51 << kInvalidPatterns[i].pattern; | 51 << kInvalidPatterns[i].pattern; |
| 52 } | 52 } |
| 53 | 53 |
| 54 { | 54 { |
| 55 // Cannot use a C string, because this contains a null byte. | 55 // Cannot use a C string, because this contains a null byte. |
| 56 std::string null_host("http://\0www/", 12); | 56 std::string null_host("http://\0www/", 12); |
| 57 URLPattern pattern(URLPattern::SCHEME_ALL); | 57 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 58 EXPECT_EQ(URLPattern::PARSE_ERROR_INVALID_HOST, | 58 EXPECT_EQ(URLPattern::PARSE_ERROR_INVALID_HOST, |
| 59 pattern.Parse(null_host)) | 59 pattern.Parse(null_host)) |
| 60 << null_host; | 60 << null_host; |
| 61 } | 61 } |
| 62 } | 62 } |
| 63 | 63 |
| 64 TEST(ExtensionURLPatternTest, Ports) { | 64 TEST(ExtensionURLPatternTest, Ports) { |
| 65 const struct { | 65 const struct { |
| 66 const char* pattern; | 66 const char* pattern; |
| 67 URLPattern::ParseResult expected_result; | 67 URLPattern::ParseResult expected_result; |
| 68 const char* expected_port; | 68 const char* expected_port; |
| 69 } kTestPatterns[] = { | 69 } kTestPatterns[] = { |
| 70 {"http://foo:1234/", URLPattern::PARSE_SUCCESS, "1234"}, | 70 { "http://foo:1234/", URLPattern::PARSE_SUCCESS, "1234" }, |
| 71 {"http://foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234"}, | 71 { "http://foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234" }, |
| 72 {"http://*.foo:1234/", URLPattern::PARSE_SUCCESS, "1234"}, | 72 { "http://*.foo:1234/", URLPattern::PARSE_SUCCESS, "1234" }, |
| 73 {"http://*.foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234"}, | 73 { "http://*.foo:1234/bar", URLPattern::PARSE_SUCCESS, "1234" }, |
| 74 {"http://:1234/", URLPattern::PARSE_SUCCESS, "1234"}, | 74 { "http://:1234/", URLPattern::PARSE_SUCCESS, "1234" }, |
| 75 {"http://foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"}, | 75 { "http://foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" }, |
| 76 {"http://foo:*/", URLPattern::PARSE_SUCCESS, "*"}, | 76 { "http://foo:*/", URLPattern::PARSE_SUCCESS, "*" }, |
| 77 {"http://*.foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"}, | 77 { "http://*.foo:/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" }, |
| 78 {"http://foo:com/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"}, | 78 { "http://foo:com/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" }, |
| 79 {"http://foo:123456/", URLPattern::PARSE_ERROR_INVALID_PORT, "*"}, | 79 { "http://foo:123456/", URLPattern::PARSE_ERROR_INVALID_PORT, "*" }, |
| 80 {"http://foo:80:80/monkey", URLPattern::PARSE_ERROR_INVALID_PORT, "*"}, | 80 { "http://foo:80:80/monkey", URLPattern::PARSE_ERROR_INVALID_PORT, "*" }, |
| 81 {"file://foo:1234/bar", URLPattern::PARSE_SUCCESS, "*"}, | 81 { "file://foo:1234/bar", URLPattern::PARSE_SUCCESS, "*" }, |
| 82 {"chrome://foo:1234/bar", URLPattern::PARSE_ERROR_INVALID_PORT, "*"}, | 82 { "chrome://foo:1234/bar", URLPattern::PARSE_ERROR_INVALID_PORT, "*" }, |
| 83 | 83 |
| 84 // Port-like strings in the path should not trigger a warning. | 84 // Port-like strings in the path should not trigger a warning. |
| 85 {"http://*/:1234", URLPattern::PARSE_SUCCESS, "*"}, | 85 { "http://*/:1234", URLPattern::PARSE_SUCCESS, "*" }, |
| 86 {"http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, "*"}, | 86 { "http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, "*" }, |
| 87 {"http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, "*"}, | 87 { "http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, "*" }, |
| 88 {"http://*.foo.*/:1234", URLPattern::PARSE_SUCCESS, "*"}}; | 88 }; |
| 89 | 89 |
| 90 for (size_t i = 0; i < arraysize(kTestPatterns); ++i) { | 90 for (size_t i = 0; i < arraysize(kTestPatterns); ++i) { |
| 91 URLPattern pattern(URLPattern::SCHEME_ALL); | 91 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 92 EXPECT_EQ(kTestPatterns[i].expected_result, | 92 EXPECT_EQ(kTestPatterns[i].expected_result, |
| 93 pattern.Parse(kTestPatterns[i].pattern, | 93 pattern.Parse(kTestPatterns[i].pattern)) |
| 94 URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD)) | |
| 95 << "Got unexpected result for URL pattern: " | 94 << "Got unexpected result for URL pattern: " |
| 96 << kTestPatterns[i].pattern; | 95 << kTestPatterns[i].pattern; |
| 97 EXPECT_EQ(kTestPatterns[i].expected_port, pattern.port()) | 96 EXPECT_EQ(kTestPatterns[i].expected_port, pattern.port()) |
| 98 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; | 97 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; |
| 99 } | 98 } |
| 100 } | 99 } |
| 101 | 100 |
| 102 // all pages for a given scheme | 101 // all pages for a given scheme |
| 103 TEST(ExtensionURLPatternTest, Match1) { | 102 TEST(ExtensionURLPatternTest, Match1) { |
| 104 URLPattern pattern(kAllSchemes); | 103 URLPattern pattern(kAllSchemes); |
| 105 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*")); | 104 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*")); |
| 106 EXPECT_EQ("http", pattern.scheme()); | 105 EXPECT_EQ("http", pattern.scheme()); |
| 107 EXPECT_EQ("", pattern.host()); | 106 EXPECT_EQ("", pattern.host()); |
| 108 EXPECT_TRUE(pattern.match_subdomains()); | 107 EXPECT_TRUE(pattern.match_subdomains()); |
| 109 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 110 EXPECT_FALSE(pattern.match_all_urls()); | 108 EXPECT_FALSE(pattern.match_all_urls()); |
| 111 EXPECT_EQ("/*", pattern.path()); | 109 EXPECT_EQ("/*", pattern.path()); |
| 112 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com"))); | 110 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com"))); |
| 113 EXPECT_TRUE(pattern.MatchesURL(GURL("http://yahoo.com"))); | 111 EXPECT_TRUE(pattern.MatchesURL(GURL("http://yahoo.com"))); |
| 114 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foo"))); | 112 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foo"))); |
| 115 EXPECT_FALSE(pattern.MatchesURL(GURL("https://google.com"))); | 113 EXPECT_FALSE(pattern.MatchesURL(GURL("https://google.com"))); |
| 116 EXPECT_TRUE(pattern.MatchesURL(GURL("http://74.125.127.100/search"))); | 114 EXPECT_TRUE(pattern.MatchesURL(GURL("http://74.125.127.100/search"))); |
| 117 } | 115 } |
| 118 | 116 |
| 119 // all domains | 117 // all domains |
| 120 TEST(ExtensionURLPatternTest, Match2) { | 118 TEST(ExtensionURLPatternTest, Match2) { |
| 121 URLPattern pattern(kAllSchemes); | 119 URLPattern pattern(kAllSchemes); |
| 122 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); | 120 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); |
| 123 EXPECT_EQ("https", pattern.scheme()); | 121 EXPECT_EQ("https", pattern.scheme()); |
| 124 EXPECT_EQ("", pattern.host()); | 122 EXPECT_EQ("", pattern.host()); |
| 125 EXPECT_TRUE(pattern.match_subdomains()); | 123 EXPECT_TRUE(pattern.match_subdomains()); |
| 126 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 127 EXPECT_FALSE(pattern.match_all_urls()); | 124 EXPECT_FALSE(pattern.match_all_urls()); |
| 128 EXPECT_EQ("/foo*", pattern.path()); | 125 EXPECT_EQ("/foo*", pattern.path()); |
| 129 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); | 126 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); |
| 130 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); | 127 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); |
| 131 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); | 128 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); |
| 132 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); | 129 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); |
| 133 EXPECT_TRUE(pattern.MatchesURL( | 130 EXPECT_TRUE(pattern.MatchesURL( |
| 134 GURL("filesystem:https://www.google.com/foobar/"))); | 131 GURL("filesystem:https://www.google.com/foobar/"))); |
| 135 } | 132 } |
| 136 | 133 |
| 137 // subdomains | 134 // subdomains |
| 138 TEST(URLPatternTest, Match3) { | 135 TEST(URLPatternTest, Match3) { |
| 139 URLPattern pattern(kAllSchemes); | 136 URLPattern pattern(kAllSchemes); |
| 140 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 137 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 141 pattern.Parse("http://*.google.com/foo*bar")); | 138 pattern.Parse("http://*.google.com/foo*bar")); |
| 142 EXPECT_EQ("http", pattern.scheme()); | 139 EXPECT_EQ("http", pattern.scheme()); |
| 143 EXPECT_EQ("google.com", pattern.host()); | 140 EXPECT_EQ("google.com", pattern.host()); |
| 144 EXPECT_TRUE(pattern.match_subdomains()); | 141 EXPECT_TRUE(pattern.match_subdomains()); |
| 145 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 146 EXPECT_FALSE(pattern.match_all_urls()); | 142 EXPECT_FALSE(pattern.match_all_urls()); |
| 147 EXPECT_EQ("/foo*bar", pattern.path()); | 143 EXPECT_EQ("/foo*bar", pattern.path()); |
| 148 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); | 144 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); |
| 149 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); | 145 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); |
| 150 EXPECT_TRUE(pattern.MatchesURL( | 146 EXPECT_TRUE(pattern.MatchesURL( |
| 151 GURL("http://monkey.images.google.com/foooobar"))); | 147 GURL("http://monkey.images.google.com/foooobar"))); |
| 152 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); | 148 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); |
| 153 EXPECT_TRUE(pattern.MatchesURL( | 149 EXPECT_TRUE(pattern.MatchesURL( |
| 154 GURL("filesystem:http://google.com/foo/bar"))); | 150 GURL("filesystem:http://google.com/foo/bar"))); |
| 155 EXPECT_FALSE(pattern.MatchesURL( | 151 EXPECT_FALSE(pattern.MatchesURL( |
| 156 GURL("filesystem:http://google.com/temporary/foobar"))); | 152 GURL("filesystem:http://google.com/temporary/foobar"))); |
| 157 } | 153 } |
| 158 | 154 |
| 159 // glob escaping | 155 // glob escaping |
| 160 TEST(ExtensionURLPatternTest, Match5) { | 156 TEST(ExtensionURLPatternTest, Match5) { |
| 161 URLPattern pattern(kAllSchemes); | 157 URLPattern pattern(kAllSchemes); |
| 162 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo?bar\\*baz")); | 158 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo?bar\\*baz")); |
| 163 EXPECT_EQ("file", pattern.scheme()); | 159 EXPECT_EQ("file", pattern.scheme()); |
| 164 EXPECT_EQ("", pattern.host()); | 160 EXPECT_EQ("", pattern.host()); |
| 165 EXPECT_FALSE(pattern.match_subdomains()); | 161 EXPECT_FALSE(pattern.match_subdomains()); |
| 166 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 167 EXPECT_FALSE(pattern.match_all_urls()); | 162 EXPECT_FALSE(pattern.match_all_urls()); |
| 168 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); | 163 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); |
| 169 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz"))); | 164 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz"))); |
| 170 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///fooXbar\\hellobaz"))); | 165 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///fooXbar\\hellobaz"))); |
| 171 } | 166 } |
| 172 | 167 |
| 173 // ip addresses | 168 // ip addresses |
| 174 TEST(ExtensionURLPatternTest, Match6) { | 169 TEST(ExtensionURLPatternTest, Match6) { |
| 175 URLPattern pattern(kAllSchemes); | 170 URLPattern pattern(kAllSchemes); |
| 176 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://127.0.0.1/*")); | 171 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://127.0.0.1/*")); |
| 177 EXPECT_EQ("http", pattern.scheme()); | 172 EXPECT_EQ("http", pattern.scheme()); |
| 178 EXPECT_EQ("127.0.0.1", pattern.host()); | 173 EXPECT_EQ("127.0.0.1", pattern.host()); |
| 179 EXPECT_FALSE(pattern.match_subdomains()); | 174 EXPECT_FALSE(pattern.match_subdomains()); |
| 180 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 181 EXPECT_FALSE(pattern.match_all_urls()); | 175 EXPECT_FALSE(pattern.match_all_urls()); |
| 182 EXPECT_EQ("/*", pattern.path()); | 176 EXPECT_EQ("/*", pattern.path()); |
| 183 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 177 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 184 } | 178 } |
| 185 | 179 |
| 186 // subdomain matching with ip addresses | 180 // subdomain matching with ip addresses |
| 187 TEST(ExtensionURLPatternTest, Match7) { | 181 TEST(ExtensionURLPatternTest, Match7) { |
| 188 URLPattern pattern(kAllSchemes); | 182 URLPattern pattern(kAllSchemes); |
| 189 // allowed, but useless | 183 // allowed, but useless |
| 190 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*.0.0.1/*")); | 184 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*.0.0.1/*")); |
| 191 EXPECT_EQ("http", pattern.scheme()); | 185 EXPECT_EQ("http", pattern.scheme()); |
| 192 EXPECT_EQ("0.0.1", pattern.host()); | 186 EXPECT_EQ("0.0.1", pattern.host()); |
| 193 EXPECT_TRUE(pattern.match_subdomains()); | 187 EXPECT_TRUE(pattern.match_subdomains()); |
| 194 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 195 EXPECT_FALSE(pattern.match_all_urls()); | 188 EXPECT_FALSE(pattern.match_all_urls()); |
| 196 EXPECT_EQ("/*", pattern.path()); | 189 EXPECT_EQ("/*", pattern.path()); |
| 197 // Subdomain matching is never done if the argument has an IP address host. | 190 // Subdomain matching is never done if the argument has an IP address host. |
| 198 EXPECT_FALSE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 191 EXPECT_FALSE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 199 } | 192 } |
| 200 | 193 |
| 201 // unicode | 194 // unicode |
| 202 TEST(ExtensionURLPatternTest, Match8) { | 195 TEST(ExtensionURLPatternTest, Match8) { |
| 203 URLPattern pattern(kAllSchemes); | 196 URLPattern pattern(kAllSchemes); |
| 204 // The below is the ASCII encoding of the following URL: | 197 // The below is the ASCII encoding of the following URL: |
| 205 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* | 198 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* |
| 206 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 199 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 207 pattern.Parse("http://*.xn--gkd/a%C2%81%E1*")); | 200 pattern.Parse("http://*.xn--gkd/a%C2%81%E1*")); |
| 208 EXPECT_EQ("http", pattern.scheme()); | 201 EXPECT_EQ("http", pattern.scheme()); |
| 209 EXPECT_EQ("xn--gkd", pattern.host()); | 202 EXPECT_EQ("xn--gkd", pattern.host()); |
| 210 EXPECT_TRUE(pattern.match_subdomains()); | 203 EXPECT_TRUE(pattern.match_subdomains()); |
| 211 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 212 EXPECT_FALSE(pattern.match_all_urls()); | 204 EXPECT_FALSE(pattern.match_all_urls()); |
| 213 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); | 205 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); |
| 214 EXPECT_TRUE(pattern.MatchesURL( | 206 EXPECT_TRUE(pattern.MatchesURL( |
| 215 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); | 207 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); |
| 216 EXPECT_TRUE(pattern.MatchesURL( | 208 EXPECT_TRUE(pattern.MatchesURL( |
| 217 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); | 209 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); |
| 218 } | 210 } |
| 219 | 211 |
| 220 // chrome:// | 212 // chrome:// |
| 221 TEST(ExtensionURLPatternTest, Match9) { | 213 TEST(ExtensionURLPatternTest, Match9) { |
| 222 URLPattern pattern(kAllSchemes); | 214 URLPattern pattern(kAllSchemes); |
| 223 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("chrome://favicon/*")); | 215 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("chrome://favicon/*")); |
| 224 EXPECT_EQ("chrome", pattern.scheme()); | 216 EXPECT_EQ("chrome", pattern.scheme()); |
| 225 EXPECT_EQ("favicon", pattern.host()); | 217 EXPECT_EQ("favicon", pattern.host()); |
| 226 EXPECT_FALSE(pattern.match_subdomains()); | 218 EXPECT_FALSE(pattern.match_subdomains()); |
| 227 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 228 EXPECT_FALSE(pattern.match_all_urls()); | 219 EXPECT_FALSE(pattern.match_all_urls()); |
| 229 EXPECT_EQ("/*", pattern.path()); | 220 EXPECT_EQ("/*", pattern.path()); |
| 230 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 221 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 231 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/https://google.com"))); | 222 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/https://google.com"))); |
| 232 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://history"))); | 223 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://history"))); |
| 233 } | 224 } |
| 234 | 225 |
| 235 // *:// | 226 // *:// |
| 236 TEST(ExtensionURLPatternTest, Match10) { | 227 TEST(ExtensionURLPatternTest, Match10) { |
| 237 URLPattern pattern(kAllSchemes); | 228 URLPattern pattern(kAllSchemes); |
| 238 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*")); | 229 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*")); |
| 239 EXPECT_TRUE(pattern.MatchesScheme("http")); | 230 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 240 EXPECT_TRUE(pattern.MatchesScheme("https")); | 231 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 241 EXPECT_FALSE(pattern.MatchesScheme("chrome")); | 232 EXPECT_FALSE(pattern.MatchesScheme("chrome")); |
| 242 EXPECT_FALSE(pattern.MatchesScheme("file")); | 233 EXPECT_FALSE(pattern.MatchesScheme("file")); |
| 243 EXPECT_FALSE(pattern.MatchesScheme("ftp")); | 234 EXPECT_FALSE(pattern.MatchesScheme("ftp")); |
| 244 EXPECT_TRUE(pattern.match_subdomains()); | 235 EXPECT_TRUE(pattern.match_subdomains()); |
| 245 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 246 EXPECT_FALSE(pattern.match_all_urls()); | 236 EXPECT_FALSE(pattern.match_all_urls()); |
| 247 EXPECT_EQ("/*", pattern.path()); | 237 EXPECT_EQ("/*", pattern.path()); |
| 248 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 238 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 249 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 239 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 250 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 240 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
| 251 EXPECT_FALSE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 241 EXPECT_FALSE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
| 252 } | 242 } |
| 253 | 243 |
| 254 // <all_urls> | 244 // <all_urls> |
| 255 TEST(ExtensionURLPatternTest, Match11) { | 245 TEST(ExtensionURLPatternTest, Match11) { |
| 256 URLPattern pattern(kAllSchemes); | 246 URLPattern pattern(kAllSchemes); |
| 257 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); | 247 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
| 258 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 248 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
| 259 EXPECT_TRUE(pattern.MatchesScheme("http")); | 249 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 260 EXPECT_TRUE(pattern.MatchesScheme("https")); | 250 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 261 EXPECT_TRUE(pattern.MatchesScheme("file")); | 251 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 262 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); | 252 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); |
| 263 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 253 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
| 264 EXPECT_TRUE(pattern.match_subdomains()); | 254 EXPECT_TRUE(pattern.match_subdomains()); |
| 265 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 266 EXPECT_TRUE(pattern.match_all_urls()); | 255 EXPECT_TRUE(pattern.match_all_urls()); |
| 267 EXPECT_EQ("/*", pattern.path()); | 256 EXPECT_EQ("/*", pattern.path()); |
| 268 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 257 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 269 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 258 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 270 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 259 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
| 271 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 260 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
| 272 | 261 |
| 273 // Make sure the properties are the same when creating an <all_urls> pattern | 262 // Make sure the properties are the same when creating an <all_urls> pattern |
| 274 // via SetMatchAllURLs and by parsing <all_urls>. | 263 // via SetMatchAllURLs and by parsing <all_urls>. |
| 275 URLPattern pattern2(kAllSchemes); | 264 URLPattern pattern2(kAllSchemes); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 291 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 280 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
| 292 EXPECT_TRUE(pattern.MatchesScheme("http")); | 281 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 293 EXPECT_TRUE(pattern.MatchesScheme("https")); | 282 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 294 EXPECT_TRUE(pattern.MatchesScheme("file")); | 283 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 295 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); | 284 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); |
| 296 EXPECT_TRUE(pattern.MatchesScheme("javascript")); | 285 EXPECT_TRUE(pattern.MatchesScheme("javascript")); |
| 297 EXPECT_TRUE(pattern.MatchesScheme("data")); | 286 EXPECT_TRUE(pattern.MatchesScheme("data")); |
| 298 EXPECT_TRUE(pattern.MatchesScheme("about")); | 287 EXPECT_TRUE(pattern.MatchesScheme("about")); |
| 299 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 288 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
| 300 EXPECT_TRUE(pattern.match_subdomains()); | 289 EXPECT_TRUE(pattern.match_subdomains()); |
| 301 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 302 EXPECT_TRUE(pattern.match_all_urls()); | 290 EXPECT_TRUE(pattern.match_all_urls()); |
| 303 EXPECT_EQ("/*", pattern.path()); | 291 EXPECT_EQ("/*", pattern.path()); |
| 304 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 292 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 305 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 293 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 306 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 294 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
| 307 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 295 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
| 308 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://newtab"))); | 296 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://newtab"))); |
| 309 EXPECT_TRUE(pattern.MatchesURL(GURL("about:blank"))); | 297 EXPECT_TRUE(pattern.MatchesURL(GURL("about:blank"))); |
| 310 EXPECT_TRUE(pattern.MatchesURL(GURL("about:version"))); | 298 EXPECT_TRUE(pattern.MatchesURL(GURL("about:version"))); |
| 311 EXPECT_TRUE(pattern.MatchesURL( | 299 EXPECT_TRUE(pattern.MatchesURL( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 } | 331 } |
| 344 | 332 |
| 345 // file scheme with empty hostname | 333 // file scheme with empty hostname |
| 346 TEST(ExtensionURLPatternTest, Match14) { | 334 TEST(ExtensionURLPatternTest, Match14) { |
| 347 URLPattern pattern(kAllSchemes); | 335 URLPattern pattern(kAllSchemes); |
| 348 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo*")); | 336 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo*")); |
| 349 EXPECT_EQ("file", pattern.scheme()); | 337 EXPECT_EQ("file", pattern.scheme()); |
| 350 EXPECT_EQ("", pattern.host()); | 338 EXPECT_EQ("", pattern.host()); |
| 351 EXPECT_FALSE(pattern.match_subdomains()); | 339 EXPECT_FALSE(pattern.match_subdomains()); |
| 352 EXPECT_FALSE(pattern.match_all_urls()); | 340 EXPECT_FALSE(pattern.match_all_urls()); |
| 353 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 354 EXPECT_EQ("/foo*", pattern.path()); | 341 EXPECT_EQ("/foo*", pattern.path()); |
| 355 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 342 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
| 356 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 343 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
| 357 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 344 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
| 358 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 345 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
| 359 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 346 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
| 360 } | 347 } |
| 361 | 348 |
| 362 // file scheme without hostname part | 349 // file scheme without hostname part |
| 363 TEST(ExtensionURLPatternTest, Match15) { | 350 TEST(ExtensionURLPatternTest, Match15) { |
| 364 URLPattern pattern(kAllSchemes); | 351 URLPattern pattern(kAllSchemes); |
| 365 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file://foo*")); | 352 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file://foo*")); |
| 366 EXPECT_EQ("file", pattern.scheme()); | 353 EXPECT_EQ("file", pattern.scheme()); |
| 367 EXPECT_EQ("", pattern.host()); | 354 EXPECT_EQ("", pattern.host()); |
| 368 EXPECT_FALSE(pattern.match_subdomains()); | 355 EXPECT_FALSE(pattern.match_subdomains()); |
| 369 EXPECT_FALSE(pattern.match_all_urls()); | 356 EXPECT_FALSE(pattern.match_all_urls()); |
| 370 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 371 EXPECT_EQ("/foo*", pattern.path()); | 357 EXPECT_EQ("/foo*", pattern.path()); |
| 372 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 358 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
| 373 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 359 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
| 374 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 360 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
| 375 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 361 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
| 376 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 362 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
| 377 } | 363 } |
| 378 | 364 |
| 379 // file scheme with hostname | 365 // file scheme with hostname |
| 380 TEST(ExtensionURLPatternTest, Match16) { | 366 TEST(ExtensionURLPatternTest, Match16) { |
| 381 URLPattern pattern(kAllSchemes); | 367 URLPattern pattern(kAllSchemes); |
| 382 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file://localhost/foo*")); | 368 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file://localhost/foo*")); |
| 383 EXPECT_EQ("file", pattern.scheme()); | 369 EXPECT_EQ("file", pattern.scheme()); |
| 384 // Since hostname is ignored for file://. | 370 // Since hostname is ignored for file://. |
| 385 EXPECT_EQ("", pattern.host()); | 371 EXPECT_EQ("", pattern.host()); |
| 386 EXPECT_FALSE(pattern.match_subdomains()); | 372 EXPECT_FALSE(pattern.match_subdomains()); |
| 387 EXPECT_TRUE(pattern.match_effective_tld()); | |
| 388 EXPECT_FALSE(pattern.match_all_urls()); | 373 EXPECT_FALSE(pattern.match_all_urls()); |
| 389 EXPECT_EQ("/foo*", pattern.path()); | 374 EXPECT_EQ("/foo*", pattern.path()); |
| 390 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 375 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
| 391 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 376 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
| 392 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 377 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
| 393 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 378 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
| 394 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 379 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
| 395 } | 380 } |
| 396 | 381 |
| 397 // Specific port | 382 // Specific port |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome-extension://ftw"))); | 430 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome-extension://ftw"))); |
| 446 EXPECT_TRUE(pattern.MatchesURL( | 431 EXPECT_TRUE(pattern.MatchesURL( |
| 447 GURL("chrome-extension://ftw/http://google.com"))); | 432 GURL("chrome-extension://ftw/http://google.com"))); |
| 448 EXPECT_TRUE(pattern.MatchesURL( | 433 EXPECT_TRUE(pattern.MatchesURL( |
| 449 GURL("chrome-extension://ftw/https://google.com"))); | 434 GURL("chrome-extension://ftw/https://google.com"))); |
| 450 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome-extension://foobar"))); | 435 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome-extension://foobar"))); |
| 451 EXPECT_TRUE(pattern.MatchesURL( | 436 EXPECT_TRUE(pattern.MatchesURL( |
| 452 GURL("filesystem:chrome-extension://ftw/t/file.txt"))); | 437 GURL("filesystem:chrome-extension://ftw/t/file.txt"))); |
| 453 } | 438 } |
| 454 | 439 |
| 455 // effective TLD wildcard | |
| 456 TEST(URLPatternTest, EffectiveTldWildcard) { | |
| 457 URLPattern pattern(kAllSchemes); | |
| 458 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | |
| 459 pattern.Parse("http://*.google.*/foo*bar", | |
| 460 URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD)); | |
| 461 EXPECT_EQ("http", pattern.scheme()); | |
| 462 EXPECT_EQ("google", pattern.host()); | |
| 463 EXPECT_TRUE(pattern.match_subdomains()); | |
| 464 EXPECT_FALSE(pattern.match_effective_tld()); | |
| 465 EXPECT_FALSE(pattern.match_all_urls()); | |
| 466 EXPECT_EQ("/foo*bar", pattern.path()); | |
| 467 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); | |
| 468 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com.br/foo?bar"))); | |
| 469 EXPECT_TRUE( | |
| 470 pattern.MatchesURL(GURL("http://monkey.images.google.co.uk/foooobar"))); | |
| 471 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); | |
| 472 EXPECT_TRUE(pattern.MatchesURL(GURL("filesystem:http://google.com/foo/bar"))); | |
| 473 EXPECT_FALSE(pattern.MatchesURL( | |
| 474 GURL("filesystem:http://google.com/temporary/foobar"))); | |
| 475 URLPattern pattern_sub(kAllSchemes); | |
| 476 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | |
| 477 pattern_sub.Parse("https://maps.google.*/", | |
| 478 URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD)); | |
| 479 EXPECT_EQ("https", pattern_sub.scheme()); | |
| 480 EXPECT_EQ("maps.google", pattern_sub.host()); | |
| 481 EXPECT_FALSE(pattern_sub.match_subdomains()); | |
| 482 EXPECT_FALSE(pattern_sub.match_all_urls()); | |
| 483 EXPECT_EQ("/", pattern_sub.path()); | |
| 484 EXPECT_TRUE(pattern_sub.MatchesURL(GURL("https://maps.google.co.uk/"))); | |
| 485 EXPECT_FALSE(pattern_sub.MatchesURL(GURL("https://sub.maps.google.co.uk/"))); | |
| 486 } | |
| 487 | |
| 488 static const struct GetAsStringPatterns { | 440 static const struct GetAsStringPatterns { |
| 489 const char* pattern; | 441 const char* pattern; |
| 490 } kGetAsStringTestCases[] = { | 442 } kGetAsStringTestCases[] = { |
| 491 { "http://www/" }, | 443 { "http://www/" }, |
| 492 { "http://*/*" }, | 444 { "http://*/*" }, |
| 493 { "chrome://*/*" }, | 445 { "chrome://*/*" }, |
| 494 { "chrome://newtab/" }, | 446 { "chrome://newtab/" }, |
| 495 { "about:*" }, | 447 { "about:*" }, |
| 496 { "about:blank" }, | 448 { "about:blank" }, |
| 497 { "chrome-extension://*/*" }, | 449 { "chrome-extension://*/*" }, |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 EXPECT_TRUE(pattern.MatchesURL(normal_domain)); | 872 EXPECT_TRUE(pattern.MatchesURL(normal_domain)); |
| 921 EXPECT_TRUE(pattern.MatchesURL(trailing_dot_domain)); | 873 EXPECT_TRUE(pattern.MatchesURL(trailing_dot_domain)); |
| 922 | 874 |
| 923 const URLPattern trailing_pattern(URLPattern::SCHEME_HTTP, | 875 const URLPattern trailing_pattern(URLPattern::SCHEME_HTTP, |
| 924 "*://example.com./*"); | 876 "*://example.com./*"); |
| 925 EXPECT_TRUE(trailing_pattern.MatchesURL(normal_domain)); | 877 EXPECT_TRUE(trailing_pattern.MatchesURL(normal_domain)); |
| 926 EXPECT_TRUE(trailing_pattern.MatchesURL(trailing_dot_domain)); | 878 EXPECT_TRUE(trailing_pattern.MatchesURL(trailing_dot_domain)); |
| 927 } | 879 } |
| 928 | 880 |
| 929 } // namespace | 881 } // namespace |
| OLD | NEW |