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

Side by Side Diff: extensions/common/url_pattern_unittest.cc

Issue 2820333003: Revert of Communicate ExtensionSettings policy to renderers (Closed)
Patch Set: 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 unified diff | Download patch
« no previous file with comments | « extensions/common/url_pattern.cc ('k') | extensions/renderer/dispatcher.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « extensions/common/url_pattern.cc ('k') | extensions/renderer/dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698