| 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 "extensions/common/url_pattern.h" | 6 #include "extensions/common/url_pattern.h" |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 #include "url/gurl.h" | 8 #include "url/gurl.h" |
| 9 | 9 |
| 10 namespace { | 10 namespace { |
| 11 | 11 |
| 12 // See url_pattern.h for examples of valid and invalid patterns. | 12 // See url_pattern.h for examples of valid and invalid patterns. |
| 13 | 13 |
| 14 static const int kAllSchemes = | 14 static const int kAllSchemes = |
| 15 URLPattern::SCHEME_HTTP | | 15 URLPattern::SCHEME_HTTP | |
| 16 URLPattern::SCHEME_HTTPS | | 16 URLPattern::SCHEME_HTTPS | |
| 17 URLPattern::SCHEME_FILE | | 17 URLPattern::SCHEME_FILE | |
| 18 URLPattern::SCHEME_FTP | | 18 URLPattern::SCHEME_FTP | |
| 19 URLPattern::SCHEME_CHROMEUI | | 19 URLPattern::SCHEME_CHROMEUI | |
| 20 URLPattern::SCHEME_EXTENSION | | 20 URLPattern::SCHEME_EXTENSION | |
| 21 URLPattern::SCHEME_FILESYSTEM; | 21 URLPattern::SCHEME_FILESYSTEM| |
| 22 URLPattern::SCHEME_ABOUT; |
| 22 | 23 |
| 23 TEST(ExtensionURLPatternTest, ParseInvalid) { | 24 TEST(ExtensionURLPatternTest, ParseInvalid) { |
| 24 const struct { | 25 const struct { |
| 25 const char* pattern; | 26 const char* pattern; |
| 26 URLPattern::ParseResult expected_result; | 27 URLPattern::ParseResult expected_result; |
| 27 } kInvalidPatterns[] = { | 28 } kInvalidPatterns[] = { |
| 28 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR }, | 29 { "http", URLPattern::PARSE_ERROR_MISSING_SCHEME_SEPARATOR }, |
| 29 { "http:", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, | 30 { "http:", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 30 { "http:/", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, | 31 { "http:/", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 31 { "about://", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, | 32 { "about://", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 // <all_urls> | 230 // <all_urls> |
| 230 TEST(ExtensionURLPatternTest, Match11) { | 231 TEST(ExtensionURLPatternTest, Match11) { |
| 231 URLPattern pattern(kAllSchemes); | 232 URLPattern pattern(kAllSchemes); |
| 232 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); | 233 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
| 233 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 234 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
| 234 EXPECT_TRUE(pattern.MatchesScheme("http")); | 235 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 235 EXPECT_TRUE(pattern.MatchesScheme("https")); | 236 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 236 EXPECT_TRUE(pattern.MatchesScheme("file")); | 237 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 237 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); | 238 EXPECT_TRUE(pattern.MatchesScheme("filesystem")); |
| 238 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 239 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
| 240 EXPECT_TRUE(pattern.MatchesScheme("about")); |
| 239 EXPECT_TRUE(pattern.match_subdomains()); | 241 EXPECT_TRUE(pattern.match_subdomains()); |
| 240 EXPECT_TRUE(pattern.match_all_urls()); | 242 EXPECT_TRUE(pattern.match_all_urls()); |
| 241 EXPECT_EQ("/*", pattern.path()); | 243 EXPECT_EQ("/*", pattern.path()); |
| 242 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 244 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 243 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 245 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 244 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 246 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
| 245 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 247 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
| 248 EXPECT_TRUE(pattern.MatchesURL(GURL("about:blank"))); |
| 246 | 249 |
| 247 // Make sure the properties are the same when creating an <all_urls> pattern | 250 // Make sure the properties are the same when creating an <all_urls> pattern |
| 248 // via SetMatchAllURLs and by parsing <all_urls>. | 251 // via SetMatchAllURLs and by parsing <all_urls>. |
| 249 URLPattern pattern2(kAllSchemes); | 252 URLPattern pattern2(kAllSchemes); |
| 250 pattern2.SetMatchAllURLs(true); | 253 pattern2.SetMatchAllURLs(true); |
| 251 | 254 |
| 252 EXPECT_EQ(pattern.valid_schemes(), pattern2.valid_schemes()); | 255 EXPECT_EQ(pattern.valid_schemes(), pattern2.valid_schemes()); |
| 253 EXPECT_EQ(pattern.match_subdomains(), pattern2.match_subdomains()); | 256 EXPECT_EQ(pattern.match_subdomains(), pattern2.match_subdomains()); |
| 254 EXPECT_EQ(pattern.path(), pattern2.path()); | 257 EXPECT_EQ(pattern.path(), pattern2.path()); |
| 255 EXPECT_EQ(pattern.match_all_urls(), pattern2.match_all_urls()); | 258 EXPECT_EQ(pattern.match_all_urls(), pattern2.match_all_urls()); |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 415 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome-extension://ftw"))); | 418 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome-extension://ftw"))); |
| 416 EXPECT_TRUE(pattern.MatchesURL( | 419 EXPECT_TRUE(pattern.MatchesURL( |
| 417 GURL("chrome-extension://ftw/http://google.com"))); | 420 GURL("chrome-extension://ftw/http://google.com"))); |
| 418 EXPECT_TRUE(pattern.MatchesURL( | 421 EXPECT_TRUE(pattern.MatchesURL( |
| 419 GURL("chrome-extension://ftw/https://google.com"))); | 422 GURL("chrome-extension://ftw/https://google.com"))); |
| 420 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome-extension://foobar"))); | 423 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome-extension://foobar"))); |
| 421 EXPECT_TRUE(pattern.MatchesURL( | 424 EXPECT_TRUE(pattern.MatchesURL( |
| 422 GURL("filesystem:chrome-extension://ftw/t/file.txt"))); | 425 GURL("filesystem:chrome-extension://ftw/t/file.txt"))); |
| 423 }; | 426 }; |
| 424 | 427 |
| 428 // about: |
| 429 TEST(ExtensionURLPatternTest, Match20) { |
| 430 URLPattern pattern(URLPattern::SCHEME_ABOUT); |
| 431 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("about:blank")); |
| 432 EXPECT_EQ("about", pattern.scheme()); |
| 433 EXPECT_EQ("", pattern.host()); |
| 434 EXPECT_FALSE(pattern.match_subdomains()); |
| 435 EXPECT_FALSE(pattern.match_all_urls()); |
| 436 EXPECT_EQ("blank", pattern.path()); |
| 437 EXPECT_TRUE(pattern.MatchesURL(GURL("about:blank"))); |
| 438 EXPECT_FALSE(pattern.MatchesURL(GURL("about:srcdoc"))); |
| 439 }; |
| 440 |
| 425 static const struct GetAsStringPatterns { | 441 static const struct GetAsStringPatterns { |
| 426 const char* pattern; | 442 const char* pattern; |
| 427 } kGetAsStringTestCases[] = { | 443 } kGetAsStringTestCases[] = { |
| 428 { "http://www/" }, | 444 { "http://www/" }, |
| 429 { "http://*/*" }, | 445 { "http://*/*" }, |
| 430 { "chrome://*/*" }, | 446 { "chrome://*/*" }, |
| 431 { "chrome://newtab/" }, | 447 { "chrome://newtab/" }, |
| 432 { "about:*" }, | 448 { "about:*" }, |
| 433 { "about:blank" }, | 449 { "about:blank" }, |
| 434 { "chrome-extension://*/*" }, | 450 { "chrome-extension://*/*" }, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 | 536 |
| 521 URLPatternList all_schemes(URLPattern( | 537 URLPatternList all_schemes(URLPattern( |
| 522 kAllSchemes, | 538 kAllSchemes, |
| 523 "*://google.com/foo").ConvertToExplicitSchemes()); | 539 "*://google.com/foo").ConvertToExplicitSchemes()); |
| 524 | 540 |
| 525 URLPatternList monkey(URLPattern( | 541 URLPatternList monkey(URLPattern( |
| 526 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | | 542 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | |
| 527 URLPattern::SCHEME_FTP, | 543 URLPattern::SCHEME_FTP, |
| 528 "http://google.com/monkey").ConvertToExplicitSchemes()); | 544 "http://google.com/monkey").ConvertToExplicitSchemes()); |
| 529 | 545 |
| 530 ASSERT_EQ(7u, all_urls.size()); | 546 ASSERT_EQ(8u, all_urls.size()); |
| 531 ASSERT_EQ(2u, all_schemes.size()); | 547 ASSERT_EQ(2u, all_schemes.size()); |
| 532 ASSERT_EQ(1u, monkey.size()); | 548 ASSERT_EQ(1u, monkey.size()); |
| 533 | 549 |
| 534 EXPECT_EQ("http://*/*", all_urls[0].GetAsString()); | 550 EXPECT_EQ("http://*/*", all_urls[0].GetAsString()); |
| 535 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); | 551 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); |
| 536 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); | 552 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); |
| 537 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); | 553 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); |
| 538 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); | 554 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); |
| 555 EXPECT_EQ("about:/*", all_urls[7].GetAsString()); |
| 539 | 556 |
| 540 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); | 557 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); |
| 541 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); | 558 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); |
| 542 | 559 |
| 543 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); | 560 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); |
| 544 } | 561 } |
| 545 | 562 |
| 546 TEST(ExtensionURLPatternTest, IgnorePorts) { | 563 TEST(ExtensionURLPatternTest, IgnorePorts) { |
| 547 std::string pattern_str = "http://www.example.com:8080/foo"; | 564 std::string pattern_str = "http://www.example.com:8080/foo"; |
| 548 GURL url("http://www.example.com:1234/foo"); | 565 GURL url("http://www.example.com:1234/foo"); |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 EXPECT_TRUE(StrictlyContains(pattern10, pattern12)); | 811 EXPECT_TRUE(StrictlyContains(pattern10, pattern12)); |
| 795 EXPECT_TRUE(StrictlyContains(pattern10, pattern13)); | 812 EXPECT_TRUE(StrictlyContains(pattern10, pattern13)); |
| 796 | 813 |
| 797 // More... | 814 // More... |
| 798 EXPECT_TRUE(StrictlyContains(pattern12, pattern11)); | 815 EXPECT_TRUE(StrictlyContains(pattern12, pattern11)); |
| 799 EXPECT_TRUE(NeitherContains(pattern11, pattern13)); | 816 EXPECT_TRUE(NeitherContains(pattern11, pattern13)); |
| 800 EXPECT_TRUE(StrictlyContains(pattern12, pattern13)); | 817 EXPECT_TRUE(StrictlyContains(pattern12, pattern13)); |
| 801 } | 818 } |
| 802 | 819 |
| 803 } // namespace | 820 } // namespace |
| OLD | NEW |