OLD | NEW |
| 1 // TODO(sqs): add httpsv |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 3 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 4 // found in the LICENSE file. |
4 | 5 |
5 #include "base/scoped_ptr.h" | 6 #include "base/scoped_ptr.h" |
6 #include "chrome/common/extensions/url_pattern.h" | 7 #include "chrome/common/extensions/url_pattern.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "googleurl/src/gurl.h" | 9 #include "googleurl/src/gurl.h" |
9 | 10 |
10 // See url_pattern.h for examples of valid and invalid patterns. | 11 // See url_pattern.h for examples of valid and invalid patterns. |
11 | 12 |
12 static const int kAllSchemes = | 13 static const int kAllSchemes = |
13 URLPattern::SCHEME_HTTP | | 14 URLPattern::SCHEME_HTTP | |
14 URLPattern::SCHEME_HTTPS | | 15 URLPattern::SCHEME_HTTPS | |
| 16 URLPattern::SCHEME_HTTPSV | |
15 URLPattern::SCHEME_FILE | | 17 URLPattern::SCHEME_FILE | |
16 URLPattern::SCHEME_FTP | | 18 URLPattern::SCHEME_FTP | |
17 URLPattern::SCHEME_CHROMEUI; | 19 URLPattern::SCHEME_CHROMEUI; |
18 | 20 |
19 TEST(ExtensionURLPatternTest, ParseInvalid) { | 21 TEST(ExtensionURLPatternTest, ParseInvalid) { |
20 const struct { | 22 const struct { |
21 const char* pattern; | 23 const char* pattern; |
22 URLPattern::ParseResult expected_result; | 24 URLPattern::ParseResult expected_result; |
23 } kInvalidPatterns[] = { | 25 } kInvalidPatterns[] = { |
24 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR }, | 26 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR }, |
(...skipping 22 matching lines...) Expand all Loading... |
47 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*")); | 49 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*")); |
48 EXPECT_EQ("http", pattern.scheme()); | 50 EXPECT_EQ("http", pattern.scheme()); |
49 EXPECT_EQ("", pattern.host()); | 51 EXPECT_EQ("", pattern.host()); |
50 EXPECT_TRUE(pattern.match_subdomains()); | 52 EXPECT_TRUE(pattern.match_subdomains()); |
51 EXPECT_FALSE(pattern.match_all_urls()); | 53 EXPECT_FALSE(pattern.match_all_urls()); |
52 EXPECT_EQ("/*", pattern.path()); | 54 EXPECT_EQ("/*", pattern.path()); |
53 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com"))); | 55 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com"))); |
54 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com"))); | 56 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com"))); |
55 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo"))); | 57 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo"))); |
56 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com"))); | 58 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com"))); |
| 59 EXPECT_FALSE(pattern.MatchesUrl(GURL("httpsv://google.com"))); |
57 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search"))); | 60 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search"))); |
58 } | 61 } |
59 | 62 |
60 // all domains | 63 // all domains |
61 TEST(ExtensionURLPatternTest, Match2) { | 64 TEST(ExtensionURLPatternTest, Match2) { |
62 URLPattern pattern(kAllSchemes); | 65 URLPattern pattern(kAllSchemes); |
63 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); | 66 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); |
64 EXPECT_EQ("https", pattern.scheme()); | 67 EXPECT_EQ("https", pattern.scheme()); |
65 EXPECT_EQ("", pattern.host()); | 68 EXPECT_EQ("", pattern.host()); |
66 EXPECT_TRUE(pattern.match_subdomains()); | 69 EXPECT_TRUE(pattern.match_subdomains()); |
67 EXPECT_FALSE(pattern.match_all_urls()); | 70 EXPECT_FALSE(pattern.match_all_urls()); |
68 EXPECT_EQ("/foo*", pattern.path()); | 71 EXPECT_EQ("/foo*", pattern.path()); |
69 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo"))); | 72 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo"))); |
| 73 EXPECT_TRUE(pattern.MatchesUrl(GURL("httpsv://www.google.com/foo"))); |
70 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar"))); | 74 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar"))); |
71 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo"))); | 75 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo"))); |
72 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/"))); | 76 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/"))); |
| 77 EXPECT_FALSE(pattern.MatchesUrl(GURL("httpsv://www.google.com/"))); |
73 } | 78 } |
74 | 79 |
75 // subdomains | 80 // subdomains |
76 TEST(URLPatternTest, Match3) { | 81 TEST(URLPatternTest, Match3) { |
77 URLPattern pattern(kAllSchemes); | 82 URLPattern pattern(kAllSchemes); |
78 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 83 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
79 pattern.Parse("http://*.google.com/foo*bar")); | 84 pattern.Parse("http://*.google.com/foo*bar")); |
80 EXPECT_EQ("http", pattern.scheme()); | 85 EXPECT_EQ("http", pattern.scheme()); |
81 EXPECT_EQ("google.com", pattern.host()); | 86 EXPECT_EQ("google.com", pattern.host()); |
82 EXPECT_TRUE(pattern.match_subdomains()); | 87 EXPECT_TRUE(pattern.match_subdomains()); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com"))); | 167 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com"))); |
163 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history"))); | 168 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history"))); |
164 }; | 169 }; |
165 | 170 |
166 // *:// | 171 // *:// |
167 TEST(ExtensionURLPatternTest, Match10) { | 172 TEST(ExtensionURLPatternTest, Match10) { |
168 URLPattern pattern(kAllSchemes); | 173 URLPattern pattern(kAllSchemes); |
169 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*")); | 174 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*")); |
170 EXPECT_TRUE(pattern.MatchesScheme("http")); | 175 EXPECT_TRUE(pattern.MatchesScheme("http")); |
171 EXPECT_TRUE(pattern.MatchesScheme("https")); | 176 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 177 EXPECT_TRUE(pattern.MatchesScheme("httpsv")); |
172 EXPECT_FALSE(pattern.MatchesScheme("chrome")); | 178 EXPECT_FALSE(pattern.MatchesScheme("chrome")); |
173 EXPECT_FALSE(pattern.MatchesScheme("file")); | 179 EXPECT_FALSE(pattern.MatchesScheme("file")); |
174 EXPECT_FALSE(pattern.MatchesScheme("ftp")); | 180 EXPECT_FALSE(pattern.MatchesScheme("ftp")); |
175 EXPECT_TRUE(pattern.match_subdomains()); | 181 EXPECT_TRUE(pattern.match_subdomains()); |
176 EXPECT_FALSE(pattern.match_all_urls()); | 182 EXPECT_FALSE(pattern.match_all_urls()); |
177 EXPECT_EQ("/*", pattern.path()); | 183 EXPECT_EQ("/*", pattern.path()); |
178 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); | 184 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); |
179 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); | 185 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); |
180 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar"))); | 186 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar"))); |
181 }; | 187 }; |
182 | 188 |
183 // <all_urls> | 189 // <all_urls> |
184 TEST(ExtensionURLPatternTest, Match11) { | 190 TEST(ExtensionURLPatternTest, Match11) { |
185 URLPattern pattern(kAllSchemes); | 191 URLPattern pattern(kAllSchemes); |
186 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); | 192 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
187 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 193 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
188 EXPECT_TRUE(pattern.MatchesScheme("http")); | 194 EXPECT_TRUE(pattern.MatchesScheme("http")); |
189 EXPECT_TRUE(pattern.MatchesScheme("https")); | 195 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 196 EXPECT_TRUE(pattern.MatchesScheme("httpsv")); |
190 EXPECT_TRUE(pattern.MatchesScheme("file")); | 197 EXPECT_TRUE(pattern.MatchesScheme("file")); |
191 EXPECT_TRUE(pattern.match_subdomains()); | 198 EXPECT_TRUE(pattern.match_subdomains()); |
192 EXPECT_TRUE(pattern.match_all_urls()); | 199 EXPECT_TRUE(pattern.match_all_urls()); |
193 EXPECT_EQ("/*", pattern.path()); | 200 EXPECT_EQ("/*", pattern.path()); |
194 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); | 201 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); |
195 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); | 202 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); |
196 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar"))); | 203 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar"))); |
197 }; | 204 }; |
198 | 205 |
199 // SCHEME_ALL matches all schemes. | 206 // SCHEME_ALL matches all schemes. |
200 TEST(ExtensionURLPatternTest, Match12) { | 207 TEST(ExtensionURLPatternTest, Match12) { |
201 URLPattern pattern(URLPattern::SCHEME_ALL); | 208 URLPattern pattern(URLPattern::SCHEME_ALL); |
202 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); | 209 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
203 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 210 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
204 EXPECT_TRUE(pattern.MatchesScheme("http")); | 211 EXPECT_TRUE(pattern.MatchesScheme("http")); |
205 EXPECT_TRUE(pattern.MatchesScheme("https")); | 212 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 213 EXPECT_TRUE(pattern.MatchesScheme("httpsv")); |
206 EXPECT_TRUE(pattern.MatchesScheme("file")); | 214 EXPECT_TRUE(pattern.MatchesScheme("file")); |
207 EXPECT_TRUE(pattern.MatchesScheme("javascript")); | 215 EXPECT_TRUE(pattern.MatchesScheme("javascript")); |
208 EXPECT_TRUE(pattern.MatchesScheme("data")); | 216 EXPECT_TRUE(pattern.MatchesScheme("data")); |
209 EXPECT_TRUE(pattern.MatchesScheme("about")); | 217 EXPECT_TRUE(pattern.MatchesScheme("about")); |
210 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 218 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
211 EXPECT_TRUE(pattern.match_subdomains()); | 219 EXPECT_TRUE(pattern.match_subdomains()); |
212 EXPECT_TRUE(pattern.match_all_urls()); | 220 EXPECT_TRUE(pattern.match_all_urls()); |
213 EXPECT_EQ("/*", pattern.path()); | 221 EXPECT_EQ("/*", pattern.path()); |
214 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); | 222 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); |
215 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); | 223 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 URLPattern pattern2(kAllSchemes, "https://www.google.com/foo/*"); | 299 URLPattern pattern2(kAllSchemes, "https://www.google.com/foo/*"); |
292 URLPattern pattern3(kAllSchemes, "http://*.google.com/foo/*"); | 300 URLPattern pattern3(kAllSchemes, "http://*.google.com/foo/*"); |
293 URLPattern pattern4(kAllSchemes, "http://*.yahooo.com/foo/*"); | 301 URLPattern pattern4(kAllSchemes, "http://*.yahooo.com/foo/*"); |
294 URLPattern pattern5(kAllSchemes, "http://www.yahooo.com/bar/*"); | 302 URLPattern pattern5(kAllSchemes, "http://www.yahooo.com/bar/*"); |
295 URLPattern pattern6(kAllSchemes, | 303 URLPattern pattern6(kAllSchemes, |
296 "http://www.yahooo.com/bar/baz/*"); | 304 "http://www.yahooo.com/bar/baz/*"); |
297 URLPattern pattern7(kAllSchemes, "file:///*"); | 305 URLPattern pattern7(kAllSchemes, "file:///*"); |
298 URLPattern pattern8(kAllSchemes, "*://*/*"); | 306 URLPattern pattern8(kAllSchemes, "*://*/*"); |
299 URLPattern pattern9(URLPattern::SCHEME_HTTPS, "*://*/*"); | 307 URLPattern pattern9(URLPattern::SCHEME_HTTPS, "*://*/*"); |
300 URLPattern pattern10(kAllSchemes, "<all_urls>"); | 308 URLPattern pattern10(kAllSchemes, "<all_urls>"); |
| 309 URLPattern pattern11(kAllSchemes, "httpsv://www.google.com/foo/*"); |
301 | 310 |
302 TestPatternOverlap(pattern1, pattern1, true); | 311 TestPatternOverlap(pattern1, pattern1, true); |
303 TestPatternOverlap(pattern1, pattern2, false); | 312 TestPatternOverlap(pattern1, pattern2, false); |
| 313 TestPatternOverlap(pattern1, pattern11, false); |
304 TestPatternOverlap(pattern1, pattern3, true); | 314 TestPatternOverlap(pattern1, pattern3, true); |
305 TestPatternOverlap(pattern1, pattern4, false); | 315 TestPatternOverlap(pattern1, pattern4, false); |
306 TestPatternOverlap(pattern3, pattern4, false); | 316 TestPatternOverlap(pattern3, pattern4, false); |
307 TestPatternOverlap(pattern4, pattern5, false); | 317 TestPatternOverlap(pattern4, pattern5, false); |
308 TestPatternOverlap(pattern5, pattern6, true); | 318 TestPatternOverlap(pattern5, pattern6, true); |
309 | 319 |
310 // Test that scheme restrictions work. | 320 // Test that scheme restrictions work. |
311 TestPatternOverlap(pattern1, pattern8, true); | 321 TestPatternOverlap(pattern1, pattern8, true); |
312 TestPatternOverlap(pattern1, pattern9, false); | 322 TestPatternOverlap(pattern1, pattern9, false); |
313 TestPatternOverlap(pattern1, pattern10, true); | 323 TestPatternOverlap(pattern1, pattern10, true); |
| 324 TestPatternOverlap(pattern2, pattern11, false); |
314 | 325 |
315 // Test that '<all_urls>' includes file URLs, while scheme '*' does not. | 326 // Test that '<all_urls>' includes file URLs, while scheme '*' does not. |
316 TestPatternOverlap(pattern7, pattern8, false); | 327 TestPatternOverlap(pattern7, pattern8, false); |
317 TestPatternOverlap(pattern7, pattern10, true); | 328 TestPatternOverlap(pattern7, pattern10, true); |
318 } | 329 } |
319 | 330 |
320 TEST(ExtensionURLPatternTest, ConvertToExplicitSchemes) { | 331 TEST(ExtensionURLPatternTest, ConvertToExplicitSchemes) { |
321 std::vector<URLPattern> all_urls(URLPattern( | 332 std::vector<URLPattern> all_urls(URLPattern( |
322 kAllSchemes, | 333 kAllSchemes, |
323 "<all_urls>").ConvertToExplicitSchemes()); | 334 "<all_urls>").ConvertToExplicitSchemes()); |
(...skipping 15 matching lines...) Expand all Loading... |
339 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); | 350 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); |
340 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); | 351 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); |
341 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); | 352 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); |
342 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); | 353 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); |
343 | 354 |
344 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); | 355 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); |
345 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); | 356 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); |
346 | 357 |
347 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); | 358 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); |
348 } | 359 } |
OLD | NEW |