| 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 |