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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "chrome/common/extensions/url_pattern.h" | 6 #include "chrome/common/extensions/url_pattern.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "googleurl/src/gurl.h" | 8 #include "googleurl/src/gurl.h" |
9 | 9 |
10 // See url_pattern.h for examples of valid and invalid patterns. | 10 // See url_pattern.h for examples of valid and invalid patterns. |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); | 103 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); |
104 EXPECT_EQ("https", pattern.scheme()); | 104 EXPECT_EQ("https", pattern.scheme()); |
105 EXPECT_EQ("", pattern.host()); | 105 EXPECT_EQ("", pattern.host()); |
106 EXPECT_TRUE(pattern.match_subdomains()); | 106 EXPECT_TRUE(pattern.match_subdomains()); |
107 EXPECT_FALSE(pattern.match_all_urls()); | 107 EXPECT_FALSE(pattern.match_all_urls()); |
108 EXPECT_EQ("/foo*", pattern.path()); | 108 EXPECT_EQ("/foo*", pattern.path()); |
109 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); | 109 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); |
110 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); | 110 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); |
111 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); | 111 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); |
112 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); | 112 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); |
| 113 EXPECT_FALSE(pattern.MatchesURL( |
| 114 GURL("filesystem:https://www.google.com/foobar/"))); |
| 115 pattern.set_partial_filesystem_support_hack(true); |
| 116 EXPECT_TRUE(pattern.MatchesURL( |
| 117 GURL("filesystem:https://www.google.com/foobar/bas"))); |
113 } | 118 } |
114 | 119 |
115 // subdomains | 120 // subdomains |
116 TEST(URLPatternTest, Match3) { | 121 TEST(URLPatternTest, Match3) { |
117 URLPattern pattern(kAllSchemes); | 122 URLPattern pattern(kAllSchemes); |
118 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 123 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
119 pattern.Parse("http://*.google.com/foo*bar")); | 124 pattern.Parse("http://*.google.com/foo*bar")); |
120 EXPECT_EQ("http", pattern.scheme()); | 125 EXPECT_EQ("http", pattern.scheme()); |
121 EXPECT_EQ("google.com", pattern.host()); | 126 EXPECT_EQ("google.com", pattern.host()); |
122 EXPECT_TRUE(pattern.match_subdomains()); | 127 EXPECT_TRUE(pattern.match_subdomains()); |
123 EXPECT_FALSE(pattern.match_all_urls()); | 128 EXPECT_FALSE(pattern.match_all_urls()); |
124 EXPECT_EQ("/foo*bar", pattern.path()); | 129 EXPECT_EQ("/foo*bar", pattern.path()); |
125 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); | 130 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); |
126 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); | 131 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); |
127 EXPECT_TRUE(pattern.MatchesURL( | 132 EXPECT_TRUE(pattern.MatchesURL( |
128 GURL("http://monkey.images.google.com/foooobar"))); | 133 GURL("http://monkey.images.google.com/foooobar"))); |
129 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); | 134 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); |
| 135 EXPECT_FALSE(pattern.MatchesURL( |
| 136 GURL("filesystem:http://google.com/foobar/"))); |
| 137 pattern.set_partial_filesystem_support_hack(true); |
| 138 EXPECT_FALSE(pattern.MatchesURL( |
| 139 GURL("filesystem:http://google.com/temporary/foobar"))); |
130 } | 140 } |
131 | 141 |
132 // glob escaping | 142 // glob escaping |
133 TEST(ExtensionURLPatternTest, Match5) { | 143 TEST(ExtensionURLPatternTest, Match5) { |
134 URLPattern pattern(kAllSchemes); | 144 URLPattern pattern(kAllSchemes); |
135 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo?bar\\*baz")); | 145 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo?bar\\*baz")); |
136 EXPECT_EQ("file", pattern.scheme()); | 146 EXPECT_EQ("file", pattern.scheme()); |
137 EXPECT_EQ("", pattern.host()); | 147 EXPECT_EQ("", pattern.host()); |
138 EXPECT_FALSE(pattern.match_subdomains()); | 148 EXPECT_FALSE(pattern.match_subdomains()); |
139 EXPECT_FALSE(pattern.match_all_urls()); | 149 EXPECT_FALSE(pattern.match_all_urls()); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 }; | 229 }; |
220 | 230 |
221 // <all_urls> | 231 // <all_urls> |
222 TEST(ExtensionURLPatternTest, Match11) { | 232 TEST(ExtensionURLPatternTest, Match11) { |
223 URLPattern pattern(kAllSchemes); | 233 URLPattern pattern(kAllSchemes); |
224 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); | 234 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
225 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 235 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
226 EXPECT_TRUE(pattern.MatchesScheme("http")); | 236 EXPECT_TRUE(pattern.MatchesScheme("http")); |
227 EXPECT_TRUE(pattern.MatchesScheme("https")); | 237 EXPECT_TRUE(pattern.MatchesScheme("https")); |
228 EXPECT_TRUE(pattern.MatchesScheme("file")); | 238 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 239 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); |
229 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 240 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
230 EXPECT_TRUE(pattern.match_subdomains()); | 241 EXPECT_TRUE(pattern.match_subdomains()); |
231 EXPECT_TRUE(pattern.match_all_urls()); | 242 EXPECT_TRUE(pattern.match_all_urls()); |
232 EXPECT_EQ("/*", pattern.path()); | 243 EXPECT_EQ("/*", pattern.path()); |
233 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 244 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
234 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 245 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
235 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 246 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
236 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 247 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
237 | 248 |
238 // Make sure the properties are the same when creating an <all_urls> pattern | 249 // Make sure the properties are the same when creating an <all_urls> pattern |
(...skipping 11 matching lines...) Expand all Loading... |
250 }; | 261 }; |
251 | 262 |
252 // SCHEME_ALL matches all schemes. | 263 // SCHEME_ALL matches all schemes. |
253 TEST(ExtensionURLPatternTest, Match12) { | 264 TEST(ExtensionURLPatternTest, Match12) { |
254 URLPattern pattern(URLPattern::SCHEME_ALL); | 265 URLPattern pattern(URLPattern::SCHEME_ALL); |
255 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); | 266 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
256 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 267 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
257 EXPECT_TRUE(pattern.MatchesScheme("http")); | 268 EXPECT_TRUE(pattern.MatchesScheme("http")); |
258 EXPECT_TRUE(pattern.MatchesScheme("https")); | 269 EXPECT_TRUE(pattern.MatchesScheme("https")); |
259 EXPECT_TRUE(pattern.MatchesScheme("file")); | 270 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 271 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); |
260 EXPECT_TRUE(pattern.MatchesScheme("javascript")); | 272 EXPECT_TRUE(pattern.MatchesScheme("javascript")); |
261 EXPECT_TRUE(pattern.MatchesScheme("data")); | 273 EXPECT_TRUE(pattern.MatchesScheme("data")); |
262 EXPECT_TRUE(pattern.MatchesScheme("about")); | 274 EXPECT_TRUE(pattern.MatchesScheme("about")); |
263 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 275 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
264 EXPECT_TRUE(pattern.match_subdomains()); | 276 EXPECT_TRUE(pattern.match_subdomains()); |
265 EXPECT_TRUE(pattern.match_all_urls()); | 277 EXPECT_TRUE(pattern.match_all_urls()); |
266 EXPECT_EQ("/*", pattern.path()); | 278 EXPECT_EQ("/*", pattern.path()); |
267 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 279 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
268 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 280 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
269 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 281 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 pattern.Parse("http://www.example.com:80/foo")); | 373 pattern.Parse("http://www.example.com:80/foo")); |
362 EXPECT_EQ("http", pattern.scheme()); | 374 EXPECT_EQ("http", pattern.scheme()); |
363 EXPECT_EQ("www.example.com", pattern.host()); | 375 EXPECT_EQ("www.example.com", pattern.host()); |
364 EXPECT_FALSE(pattern.match_subdomains()); | 376 EXPECT_FALSE(pattern.match_subdomains()); |
365 EXPECT_FALSE(pattern.match_all_urls()); | 377 EXPECT_FALSE(pattern.match_all_urls()); |
366 EXPECT_EQ("/foo", pattern.path()); | 378 EXPECT_EQ("/foo", pattern.path()); |
367 EXPECT_EQ("80", pattern.port()); | 379 EXPECT_EQ("80", pattern.port()); |
368 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); | 380 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); |
369 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); | 381 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); |
370 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); | 382 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); |
| 383 EXPECT_FALSE(pattern.MatchesURL( |
| 384 GURL("filesystem:http://www.example.com:8080/foo/"))); |
| 385 EXPECT_FALSE(pattern.MatchesURL(GURL("filesystem:http://www.example.com/f/foo"
))); |
| 386 pattern.set_partial_filesystem_support_hack(true); |
| 387 EXPECT_FALSE(pattern.MatchesURL(GURL("filesystem:http://www.example.com/f/foo"
))); |
371 } | 388 } |
372 | 389 |
373 // Explicit port wildcard | 390 // Explicit port wildcard |
374 TEST(ExtensionURLPatternTest, Match18) { | 391 TEST(ExtensionURLPatternTest, Match18) { |
375 URLPattern pattern(kAllSchemes); | 392 URLPattern pattern(kAllSchemes); |
376 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 393 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
377 pattern.Parse("http://www.example.com:*/foo")); | 394 pattern.Parse("http://www.example.com:*/foo")); |
378 EXPECT_EQ("http", pattern.scheme()); | 395 EXPECT_EQ("http", pattern.scheme()); |
379 EXPECT_EQ("www.example.com", pattern.host()); | 396 EXPECT_EQ("www.example.com", pattern.host()); |
380 EXPECT_FALSE(pattern.match_subdomains()); | 397 EXPECT_FALSE(pattern.match_subdomains()); |
381 EXPECT_FALSE(pattern.match_all_urls()); | 398 EXPECT_FALSE(pattern.match_all_urls()); |
382 EXPECT_EQ("/foo", pattern.path()); | 399 EXPECT_EQ("/foo", pattern.path()); |
383 EXPECT_EQ("*", pattern.port()); | 400 EXPECT_EQ("*", pattern.port()); |
384 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); | 401 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); |
385 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); | 402 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); |
386 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); | 403 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); |
| 404 EXPECT_FALSE(pattern.MatchesURL( |
| 405 GURL("filesystem:http://www.example.com:8080/foo/"))); |
387 } | 406 } |
388 | 407 |
389 // chrome-extension:// | 408 // chrome-extension:// |
390 TEST(ExtensionURLPatternTest, Match19) { | 409 TEST(ExtensionURLPatternTest, Match19) { |
391 URLPattern pattern(URLPattern::SCHEME_EXTENSION); | 410 URLPattern pattern(URLPattern::SCHEME_EXTENSION); |
392 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 411 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
393 pattern.Parse("chrome-extension://ftw/*")); | 412 pattern.Parse("chrome-extension://ftw/*")); |
394 EXPECT_EQ("chrome-extension", pattern.scheme()); | 413 EXPECT_EQ("chrome-extension", pattern.scheme()); |
395 EXPECT_EQ("ftw", pattern.host()); | 414 EXPECT_EQ("ftw", pattern.host()); |
396 EXPECT_FALSE(pattern.match_subdomains()); | 415 EXPECT_FALSE(pattern.match_subdomains()); |
397 EXPECT_FALSE(pattern.match_all_urls()); | 416 EXPECT_FALSE(pattern.match_all_urls()); |
398 EXPECT_EQ("/*", pattern.path()); | 417 EXPECT_EQ("/*", pattern.path()); |
399 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome-extension://ftw"))); | 418 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome-extension://ftw"))); |
400 EXPECT_TRUE(pattern.MatchesURL( | 419 EXPECT_TRUE(pattern.MatchesURL( |
401 GURL("chrome-extension://ftw/http://google.com"))); | 420 GURL("chrome-extension://ftw/http://google.com"))); |
402 EXPECT_TRUE(pattern.MatchesURL( | 421 EXPECT_TRUE(pattern.MatchesURL( |
403 GURL("chrome-extension://ftw/https://google.com"))); | 422 GURL("chrome-extension://ftw/https://google.com"))); |
404 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome-extension://foobar"))); | 423 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome-extension://foobar"))); |
| 424 EXPECT_FALSE(pattern.MatchesURL( |
| 425 GURL("filesystem:chrome-extension://ftw/t/file.txt"))); |
| 426 pattern.set_partial_filesystem_support_hack(true); |
| 427 EXPECT_TRUE(pattern.MatchesURL( |
| 428 GURL("filesystem:chrome-extension://ftw/t/file.txt"))); |
405 }; | 429 }; |
406 | 430 |
407 static const struct GetAsStringPatterns { | 431 static const struct GetAsStringPatterns { |
408 const char* pattern; | 432 const char* pattern; |
409 } kGetAsStringTestCases[] = { | 433 } kGetAsStringTestCases[] = { |
410 { "http://www/" }, | 434 { "http://www/" }, |
411 { "http://*/*" }, | 435 { "http://*/*" }, |
412 { "chrome://*/*" }, | 436 { "chrome://*/*" }, |
413 { "chrome://newtab/" }, | 437 { "chrome://newtab/" }, |
414 { "about:*" }, | 438 { "about:*" }, |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 | 659 |
636 EXPECT_FALSE(pattern2.MatchesURL(GURL("http://bb.com/path"))); | 660 EXPECT_FALSE(pattern2.MatchesURL(GURL("http://bb.com/path"))); |
637 EXPECT_TRUE(pattern2.MatchesURL(GURL("http://aa.com/path"))); | 661 EXPECT_TRUE(pattern2.MatchesURL(GURL("http://aa.com/path"))); |
638 EXPECT_FALSE(pattern2.MatchesURL(GURL("http://sub.aa.com/path"))); | 662 EXPECT_FALSE(pattern2.MatchesURL(GURL("http://sub.aa.com/path"))); |
639 | 663 |
640 URLPattern pattern3(URLPattern::SCHEME_ALL, "http://aa.com/*"); | 664 URLPattern pattern3(URLPattern::SCHEME_ALL, "http://aa.com/*"); |
641 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern3.Parse("http://aa.com:88/*")); | 665 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern3.Parse("http://aa.com:88/*")); |
642 EXPECT_FALSE(pattern3.MatchesURL(GURL("http://aa.com/path"))); | 666 EXPECT_FALSE(pattern3.MatchesURL(GURL("http://aa.com/path"))); |
643 EXPECT_TRUE(pattern3.MatchesURL(GURL("http://aa.com:88/path"))); | 667 EXPECT_TRUE(pattern3.MatchesURL(GURL("http://aa.com:88/path"))); |
644 } | 668 } |
OLD | NEW |