| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 20 matching lines...) Expand all Loading... |
| 31 { "http://foo.*.bar/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, | 31 { "http://foo.*.bar/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, |
| 32 { "http://fo.*.ba:123/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, | 32 { "http://fo.*.ba:123/baz", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, |
| 33 { "http:/bar", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, | 33 { "http:/bar", URLPattern::PARSE_ERROR_WRONG_SCHEME_SEPARATOR }, |
| 34 { "http://bar", URLPattern::PARSE_ERROR_EMPTY_PATH }, | 34 { "http://bar", URLPattern::PARSE_ERROR_EMPTY_PATH }, |
| 35 }; | 35 }; |
| 36 | 36 |
| 37 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInvalidPatterns); ++i) { | 37 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInvalidPatterns); ++i) { |
| 38 URLPattern pattern(URLPattern::SCHEME_ALL); | 38 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 39 EXPECT_EQ(kInvalidPatterns[i].expected_result, | 39 EXPECT_EQ(kInvalidPatterns[i].expected_result, |
| 40 pattern.Parse(kInvalidPatterns[i].pattern, | 40 pattern.Parse(kInvalidPatterns[i].pattern, |
| 41 URLPattern::PARSE_LENIENT)) | 41 URLPattern::IGNORE_PORTS)) |
| 42 << kInvalidPatterns[i].pattern; | 42 << kInvalidPatterns[i].pattern; |
| 43 } | 43 } |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 TEST(ExtensionURLPatternTest, Colons) { | 46 TEST(ExtensionURLPatternTest, Ports) { |
| 47 const struct { | 47 const struct { |
| 48 const char* pattern; | 48 const char* pattern; |
| 49 URLPattern::ParseResult expected_result; | 49 URLPattern::ParseResult expected_result_error_on_ports; |
| 50 URLPattern::ParseResult expected_result_ignore_ports; |
| 51 URLPattern::ParseResult expected_result_use_ports; |
| 52 const char* expected_host_ignoring_ports; |
| 53 const char* expected_host_using_ports; |
| 54 const char* expected_port; |
| 50 } kTestPatterns[] = { | 55 } kTestPatterns[] = { |
| 51 { "http://foo:1234/", URLPattern::PARSE_ERROR_HAS_COLON }, | 56 { "http://foo:1234/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 52 { "http://foo:1234/bar", URLPattern::PARSE_ERROR_HAS_COLON }, | 57 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 53 { "http://*.foo:1234/", URLPattern::PARSE_ERROR_HAS_COLON }, | 58 "foo:1234", "foo", "1234" }, |
| 54 { "http://*.foo:1234/bar", URLPattern::PARSE_ERROR_HAS_COLON }, | 59 { "http://foo:1234/bar", URLPattern::PARSE_ERROR_HAS_COLON, |
| 55 { "http://:1234/", URLPattern::PARSE_ERROR_HAS_COLON }, | 60 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 56 { "http://foo:/", URLPattern::PARSE_ERROR_HAS_COLON }, | 61 "foo:1234", "foo", "1234" }, |
| 57 { "http://*.foo:/", URLPattern::PARSE_ERROR_HAS_COLON }, | 62 { "http://*.foo:1234/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 58 { "http://foo:com/", URLPattern::PARSE_ERROR_HAS_COLON }, | 63 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 64 "*.foo:1234", "*.foo", "1234" }, |
| 65 { "http://*.foo:1234/bar", URLPattern::PARSE_ERROR_HAS_COLON, |
| 66 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 67 "*.foo:1234", "*.foo", "1234" }, |
| 68 { "http://:1234/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 69 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 70 ":1234", "", "1234" }, |
| 71 { "http://foo:/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 72 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_ERROR_INVALID_PORT, |
| 73 "foo:", "foo", "*" }, |
| 74 { "http://foo:*/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 75 URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD, URLPattern::PARSE_SUCCESS, |
| 76 "foo:*", "foo", "*" }, |
| 77 { "http://*.foo:/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 78 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_ERROR_INVALID_PORT, |
| 79 "*.foo:", "*.foo", "*" }, |
| 80 { "http://foo:com/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 81 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_ERROR_INVALID_PORT, |
| 82 "foo:com", "", "*" }, |
| 83 { "http://foo:123456/", URLPattern::PARSE_ERROR_HAS_COLON, |
| 84 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_ERROR_INVALID_PORT, |
| 85 "foo:123456", "", "*" }, |
| 86 { "file://foo:1234/bar", URLPattern::PARSE_SUCCESS, |
| 87 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 88 "", "", "*" }, |
| 89 { "chrome://foo:1234/bar", URLPattern::PARSE_ERROR_HAS_COLON, |
| 90 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_ERROR_INVALID_PORT, |
| 91 "foo:1234", "", "*" }, |
| 59 | 92 |
| 60 // Port-like strings in the path should not trigger a warning. | 93 // Port-like strings in the path should not trigger a warning. |
| 61 { "http://*/:1234", URLPattern::PARSE_SUCCESS }, | 94 { "http://*/:1234", URLPattern::PARSE_SUCCESS, |
| 62 { "http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS }, | 95 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 63 { "http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS }, | 96 "*", "*", "*" }, |
| 97 { "http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, |
| 98 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 99 "*.foo", "*.foo", "*" }, |
| 100 { "http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, |
| 101 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
| 102 "foo", "foo", "*" }, |
| 64 }; | 103 }; |
| 65 | 104 |
| 66 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) { | 105 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) { |
| 67 URLPattern pattern(URLPattern::SCHEME_ALL); | 106 URLPattern use_ports_pattern(URLPattern::SCHEME_ALL); |
| 107 // Check results with |USE_PORTS|. |
| 108 EXPECT_EQ(kTestPatterns[i].expected_result_use_ports, |
| 109 use_ports_pattern.Parse(kTestPatterns[i].pattern, |
| 110 URLPattern::USE_PORTS)) |
| 111 << "Got unexpected result for URL pattern: " |
| 112 << kTestPatterns[i].pattern; |
| 113 EXPECT_EQ(kTestPatterns[i].expected_port, use_ports_pattern.port()) |
| 114 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; |
| 68 | 115 |
| 69 // Without |strict_error_checks|, expect success. | 116 URLPattern ignore_ports_pattern(URLPattern::SCHEME_ALL); |
| 70 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 117 // Check results with |IGNORE_PORTS|. |
| 71 pattern.Parse(kTestPatterns[i].pattern, | 118 EXPECT_EQ(kTestPatterns[i].expected_result_ignore_ports, |
| 72 URLPattern::PARSE_LENIENT)) | 119 ignore_ports_pattern.Parse(kTestPatterns[i].pattern, |
| 73 << "Got unexpected error for URL pattern: " | 120 URLPattern::IGNORE_PORTS)) |
| 121 << "Got unexpected result for URL pattern: " |
| 74 << kTestPatterns[i].pattern; | 122 << kTestPatterns[i].pattern; |
| 123 EXPECT_EQ("*", ignore_ports_pattern.port()) |
| 124 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; |
| 75 | 125 |
| 76 EXPECT_EQ(kTestPatterns[i].expected_result, | 126 URLPattern error_on_ports_pattern(URLPattern::SCHEME_ALL); |
| 77 pattern.Parse(kTestPatterns[i].pattern, | 127 // Check results with |ERROR_ON_PORTS|. |
| 78 URLPattern::PARSE_STRICT)) | 128 EXPECT_EQ(kTestPatterns[i].expected_result_error_on_ports, |
| 129 error_on_ports_pattern.Parse(kTestPatterns[i].pattern, |
| 130 URLPattern::ERROR_ON_PORTS)) |
| 79 << "Got unexpected result for URL pattern: " | 131 << "Got unexpected result for URL pattern: " |
| 80 << kTestPatterns[i].pattern; | 132 << kTestPatterns[i].pattern; |
| 81 } | 133 } |
| 82 }; | 134 }; |
| 83 | 135 |
| 84 // all pages for a given scheme | 136 // all pages for a given scheme |
| 85 TEST(ExtensionURLPatternTest, Match1) { | 137 TEST(ExtensionURLPatternTest, Match1) { |
| 86 URLPattern pattern(kAllSchemes); | 138 URLPattern pattern(kAllSchemes); |
| 87 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 139 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 88 pattern.Parse("http://*/*", URLPattern::PARSE_STRICT)); | 140 pattern.Parse("http://*/*", URLPattern::ERROR_ON_PORTS)); |
| 89 EXPECT_EQ("http", pattern.scheme()); | 141 EXPECT_EQ("http", pattern.scheme()); |
| 90 EXPECT_EQ("", pattern.host()); | 142 EXPECT_EQ("", pattern.host()); |
| 91 EXPECT_TRUE(pattern.match_subdomains()); | 143 EXPECT_TRUE(pattern.match_subdomains()); |
| 92 EXPECT_FALSE(pattern.match_all_urls()); | 144 EXPECT_FALSE(pattern.match_all_urls()); |
| 93 EXPECT_EQ("/*", pattern.path()); | 145 EXPECT_EQ("/*", pattern.path()); |
| 94 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com"))); | 146 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com"))); |
| 95 EXPECT_TRUE(pattern.MatchesURL(GURL("http://yahoo.com"))); | 147 EXPECT_TRUE(pattern.MatchesURL(GURL("http://yahoo.com"))); |
| 96 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foo"))); | 148 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foo"))); |
| 97 EXPECT_FALSE(pattern.MatchesURL(GURL("https://google.com"))); | 149 EXPECT_FALSE(pattern.MatchesURL(GURL("https://google.com"))); |
| 98 EXPECT_TRUE(pattern.MatchesURL(GURL("http://74.125.127.100/search"))); | 150 EXPECT_TRUE(pattern.MatchesURL(GURL("http://74.125.127.100/search"))); |
| 99 } | 151 } |
| 100 | 152 |
| 101 // all domains | 153 // all domains |
| 102 TEST(ExtensionURLPatternTest, Match2) { | 154 TEST(ExtensionURLPatternTest, Match2) { |
| 103 URLPattern pattern(kAllSchemes); | 155 URLPattern pattern(kAllSchemes); |
| 104 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 156 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 105 pattern.Parse("https://*/foo*", URLPattern::PARSE_STRICT)); | 157 pattern.Parse("https://*/foo*", URLPattern::ERROR_ON_PORTS)); |
| 106 EXPECT_EQ("https", pattern.scheme()); | 158 EXPECT_EQ("https", pattern.scheme()); |
| 107 EXPECT_EQ("", pattern.host()); | 159 EXPECT_EQ("", pattern.host()); |
| 108 EXPECT_TRUE(pattern.match_subdomains()); | 160 EXPECT_TRUE(pattern.match_subdomains()); |
| 109 EXPECT_FALSE(pattern.match_all_urls()); | 161 EXPECT_FALSE(pattern.match_all_urls()); |
| 110 EXPECT_EQ("/foo*", pattern.path()); | 162 EXPECT_EQ("/foo*", pattern.path()); |
| 111 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); | 163 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); |
| 112 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); | 164 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); |
| 113 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); | 165 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); |
| 114 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); | 166 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); |
| 115 } | 167 } |
| 116 | 168 |
| 117 // subdomains | 169 // subdomains |
| 118 TEST(URLPatternTest, Match3) { | 170 TEST(URLPatternTest, Match3) { |
| 119 URLPattern pattern(kAllSchemes); | 171 URLPattern pattern(kAllSchemes); |
| 120 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 172 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 121 pattern.Parse("http://*.google.com/foo*bar", | 173 pattern.Parse("http://*.google.com/foo*bar", |
| 122 URLPattern::PARSE_STRICT)); | 174 URLPattern::ERROR_ON_PORTS)); |
| 123 EXPECT_EQ("http", pattern.scheme()); | 175 EXPECT_EQ("http", pattern.scheme()); |
| 124 EXPECT_EQ("google.com", pattern.host()); | 176 EXPECT_EQ("google.com", pattern.host()); |
| 125 EXPECT_TRUE(pattern.match_subdomains()); | 177 EXPECT_TRUE(pattern.match_subdomains()); |
| 126 EXPECT_FALSE(pattern.match_all_urls()); | 178 EXPECT_FALSE(pattern.match_all_urls()); |
| 127 EXPECT_EQ("/foo*bar", pattern.path()); | 179 EXPECT_EQ("/foo*bar", pattern.path()); |
| 128 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); | 180 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); |
| 129 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); | 181 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); |
| 130 EXPECT_TRUE(pattern.MatchesURL( | 182 EXPECT_TRUE(pattern.MatchesURL( |
| 131 GURL("http://monkey.images.google.com/foooobar"))); | 183 GURL("http://monkey.images.google.com/foooobar"))); |
| 132 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); | 184 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); |
| 133 } | 185 } |
| 134 | 186 |
| 135 // glob escaping | 187 // glob escaping |
| 136 TEST(ExtensionURLPatternTest, Match5) { | 188 TEST(ExtensionURLPatternTest, Match5) { |
| 137 URLPattern pattern(kAllSchemes); | 189 URLPattern pattern(kAllSchemes); |
| 138 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 190 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 139 pattern.Parse("file:///foo?bar\\*baz", URLPattern::PARSE_STRICT)); | 191 pattern.Parse("file:///foo?bar\\*baz", URLPattern::ERROR_ON_PORTS)); |
| 140 EXPECT_EQ("file", pattern.scheme()); | 192 EXPECT_EQ("file", pattern.scheme()); |
| 141 EXPECT_EQ("", pattern.host()); | 193 EXPECT_EQ("", pattern.host()); |
| 142 EXPECT_FALSE(pattern.match_subdomains()); | 194 EXPECT_FALSE(pattern.match_subdomains()); |
| 143 EXPECT_FALSE(pattern.match_all_urls()); | 195 EXPECT_FALSE(pattern.match_all_urls()); |
| 144 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); | 196 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); |
| 145 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz"))); | 197 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz"))); |
| 146 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///fooXbar\\hellobaz"))); | 198 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///fooXbar\\hellobaz"))); |
| 147 } | 199 } |
| 148 | 200 |
| 149 // ip addresses | 201 // ip addresses |
| 150 TEST(ExtensionURLPatternTest, Match6) { | 202 TEST(ExtensionURLPatternTest, Match6) { |
| 151 URLPattern pattern(kAllSchemes); | 203 URLPattern pattern(kAllSchemes); |
| 152 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 204 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 153 pattern.Parse("http://127.0.0.1/*", URLPattern::PARSE_STRICT)); | 205 pattern.Parse("http://127.0.0.1/*", URLPattern::ERROR_ON_PORTS)); |
| 154 EXPECT_EQ("http", pattern.scheme()); | 206 EXPECT_EQ("http", pattern.scheme()); |
| 155 EXPECT_EQ("127.0.0.1", pattern.host()); | 207 EXPECT_EQ("127.0.0.1", pattern.host()); |
| 156 EXPECT_FALSE(pattern.match_subdomains()); | 208 EXPECT_FALSE(pattern.match_subdomains()); |
| 157 EXPECT_FALSE(pattern.match_all_urls()); | 209 EXPECT_FALSE(pattern.match_all_urls()); |
| 158 EXPECT_EQ("/*", pattern.path()); | 210 EXPECT_EQ("/*", pattern.path()); |
| 159 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 211 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 160 } | 212 } |
| 161 | 213 |
| 162 // subdomain matching with ip addresses | 214 // subdomain matching with ip addresses |
| 163 TEST(ExtensionURLPatternTest, Match7) { | 215 TEST(ExtensionURLPatternTest, Match7) { |
| 164 URLPattern pattern(kAllSchemes); | 216 URLPattern pattern(kAllSchemes); |
| 165 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 217 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 166 pattern.Parse("http://*.0.0.1/*", | 218 pattern.Parse("http://*.0.0.1/*", |
| 167 URLPattern::PARSE_STRICT)); // allowed, but useless | 219 URLPattern::ERROR_ON_PORTS)); // allowed, but useless |
| 168 EXPECT_EQ("http", pattern.scheme()); | 220 EXPECT_EQ("http", pattern.scheme()); |
| 169 EXPECT_EQ("0.0.1", pattern.host()); | 221 EXPECT_EQ("0.0.1", pattern.host()); |
| 170 EXPECT_TRUE(pattern.match_subdomains()); | 222 EXPECT_TRUE(pattern.match_subdomains()); |
| 171 EXPECT_FALSE(pattern.match_all_urls()); | 223 EXPECT_FALSE(pattern.match_all_urls()); |
| 172 EXPECT_EQ("/*", pattern.path()); | 224 EXPECT_EQ("/*", pattern.path()); |
| 173 // Subdomain matching is never done if the argument has an IP address host. | 225 // Subdomain matching is never done if the argument has an IP address host. |
| 174 EXPECT_FALSE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 226 EXPECT_FALSE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 175 }; | 227 }; |
| 176 | 228 |
| 177 // unicode | 229 // unicode |
| 178 TEST(ExtensionURLPatternTest, Match8) { | 230 TEST(ExtensionURLPatternTest, Match8) { |
| 179 URLPattern pattern(kAllSchemes); | 231 URLPattern pattern(kAllSchemes); |
| 180 // The below is the ASCII encoding of the following URL: | 232 // The below is the ASCII encoding of the following URL: |
| 181 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* | 233 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* |
| 182 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 234 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 183 pattern.Parse("http://*.xn--gkd/a%C2%81%E1*", | 235 pattern.Parse("http://*.xn--gkd/a%C2%81%E1*", |
| 184 URLPattern::PARSE_STRICT)); | 236 URLPattern::ERROR_ON_PORTS)); |
| 185 EXPECT_EQ("http", pattern.scheme()); | 237 EXPECT_EQ("http", pattern.scheme()); |
| 186 EXPECT_EQ("xn--gkd", pattern.host()); | 238 EXPECT_EQ("xn--gkd", pattern.host()); |
| 187 EXPECT_TRUE(pattern.match_subdomains()); | 239 EXPECT_TRUE(pattern.match_subdomains()); |
| 188 EXPECT_FALSE(pattern.match_all_urls()); | 240 EXPECT_FALSE(pattern.match_all_urls()); |
| 189 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); | 241 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); |
| 190 EXPECT_TRUE(pattern.MatchesURL( | 242 EXPECT_TRUE(pattern.MatchesURL( |
| 191 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); | 243 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); |
| 192 EXPECT_TRUE(pattern.MatchesURL( | 244 EXPECT_TRUE(pattern.MatchesURL( |
| 193 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); | 245 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); |
| 194 }; | 246 }; |
| 195 | 247 |
| 196 // chrome:// | 248 // chrome:// |
| 197 TEST(ExtensionURLPatternTest, Match9) { | 249 TEST(ExtensionURLPatternTest, Match9) { |
| 198 URLPattern pattern(kAllSchemes); | 250 URLPattern pattern(kAllSchemes); |
| 199 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 251 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 200 pattern.Parse("chrome://favicon/*", URLPattern::PARSE_STRICT)); | 252 pattern.Parse("chrome://favicon/*", URLPattern::ERROR_ON_PORTS)); |
| 201 EXPECT_EQ("chrome", pattern.scheme()); | 253 EXPECT_EQ("chrome", pattern.scheme()); |
| 202 EXPECT_EQ("favicon", pattern.host()); | 254 EXPECT_EQ("favicon", pattern.host()); |
| 203 EXPECT_FALSE(pattern.match_subdomains()); | 255 EXPECT_FALSE(pattern.match_subdomains()); |
| 204 EXPECT_FALSE(pattern.match_all_urls()); | 256 EXPECT_FALSE(pattern.match_all_urls()); |
| 205 EXPECT_EQ("/*", pattern.path()); | 257 EXPECT_EQ("/*", pattern.path()); |
| 206 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 258 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 207 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/https://google.com"))); | 259 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/https://google.com"))); |
| 208 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://history"))); | 260 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://history"))); |
| 209 }; | 261 }; |
| 210 | 262 |
| 211 // *:// | 263 // *:// |
| 212 TEST(ExtensionURLPatternTest, Match10) { | 264 TEST(ExtensionURLPatternTest, Match10) { |
| 213 URLPattern pattern(kAllSchemes); | 265 URLPattern pattern(kAllSchemes); |
| 214 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 266 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 215 pattern.Parse("*://*/*", URLPattern::PARSE_STRICT)); | 267 pattern.Parse("*://*/*", URLPattern::ERROR_ON_PORTS)); |
| 216 EXPECT_TRUE(pattern.MatchesScheme("http")); | 268 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 217 EXPECT_TRUE(pattern.MatchesScheme("https")); | 269 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 218 EXPECT_FALSE(pattern.MatchesScheme("chrome")); | 270 EXPECT_FALSE(pattern.MatchesScheme("chrome")); |
| 219 EXPECT_FALSE(pattern.MatchesScheme("file")); | 271 EXPECT_FALSE(pattern.MatchesScheme("file")); |
| 220 EXPECT_FALSE(pattern.MatchesScheme("ftp")); | 272 EXPECT_FALSE(pattern.MatchesScheme("ftp")); |
| 221 EXPECT_TRUE(pattern.match_subdomains()); | 273 EXPECT_TRUE(pattern.match_subdomains()); |
| 222 EXPECT_FALSE(pattern.match_all_urls()); | 274 EXPECT_FALSE(pattern.match_all_urls()); |
| 223 EXPECT_EQ("/*", pattern.path()); | 275 EXPECT_EQ("/*", pattern.path()); |
| 224 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 276 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 225 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 277 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 226 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 278 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
| 227 EXPECT_FALSE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 279 EXPECT_FALSE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
| 228 }; | 280 }; |
| 229 | 281 |
| 230 // <all_urls> | 282 // <all_urls> |
| 231 TEST(ExtensionURLPatternTest, Match11) { | 283 TEST(ExtensionURLPatternTest, Match11) { |
| 232 URLPattern pattern(kAllSchemes); | 284 URLPattern pattern(kAllSchemes); |
| 233 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 285 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 234 pattern.Parse("<all_urls>", URLPattern::PARSE_STRICT)); | 286 pattern.Parse("<all_urls>", URLPattern::ERROR_ON_PORTS)); |
| 235 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 287 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
| 236 EXPECT_TRUE(pattern.MatchesScheme("http")); | 288 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 237 EXPECT_TRUE(pattern.MatchesScheme("https")); | 289 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 238 EXPECT_TRUE(pattern.MatchesScheme("file")); | 290 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 239 EXPECT_TRUE(pattern.match_subdomains()); | 291 EXPECT_TRUE(pattern.match_subdomains()); |
| 240 EXPECT_TRUE(pattern.match_all_urls()); | 292 EXPECT_TRUE(pattern.match_all_urls()); |
| 241 EXPECT_EQ("/*", pattern.path()); | 293 EXPECT_EQ("/*", pattern.path()); |
| 242 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 294 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
| 243 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 295 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
| 244 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 296 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
| 245 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 297 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
| 246 }; | 298 }; |
| 247 | 299 |
| 248 // SCHEME_ALL matches all schemes. | 300 // SCHEME_ALL matches all schemes. |
| 249 TEST(ExtensionURLPatternTest, Match12) { | 301 TEST(ExtensionURLPatternTest, Match12) { |
| 250 URLPattern pattern(URLPattern::SCHEME_ALL); | 302 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 251 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 303 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 252 pattern.Parse("<all_urls>", URLPattern::PARSE_STRICT)); | 304 pattern.Parse("<all_urls>", URLPattern::ERROR_ON_PORTS)); |
| 253 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 305 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
| 254 EXPECT_TRUE(pattern.MatchesScheme("http")); | 306 EXPECT_TRUE(pattern.MatchesScheme("http")); |
| 255 EXPECT_TRUE(pattern.MatchesScheme("https")); | 307 EXPECT_TRUE(pattern.MatchesScheme("https")); |
| 256 EXPECT_TRUE(pattern.MatchesScheme("file")); | 308 EXPECT_TRUE(pattern.MatchesScheme("file")); |
| 257 EXPECT_TRUE(pattern.MatchesScheme("javascript")); | 309 EXPECT_TRUE(pattern.MatchesScheme("javascript")); |
| 258 EXPECT_TRUE(pattern.MatchesScheme("data")); | 310 EXPECT_TRUE(pattern.MatchesScheme("data")); |
| 259 EXPECT_TRUE(pattern.MatchesScheme("about")); | 311 EXPECT_TRUE(pattern.MatchesScheme("about")); |
| 260 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 312 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
| 261 EXPECT_TRUE(pattern.match_subdomains()); | 313 EXPECT_TRUE(pattern.match_subdomains()); |
| 262 EXPECT_TRUE(pattern.match_all_urls()); | 314 EXPECT_TRUE(pattern.match_all_urls()); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 283 {"data:*", "data:monkey"}, | 335 {"data:*", "data:monkey"}, |
| 284 {"javascript:*", "javascript:atemyhomework"}, | 336 {"javascript:*", "javascript:atemyhomework"}, |
| 285 }; | 337 }; |
| 286 | 338 |
| 287 // SCHEME_ALL and specific schemes. | 339 // SCHEME_ALL and specific schemes. |
| 288 TEST(ExtensionURLPatternTest, Match13) { | 340 TEST(ExtensionURLPatternTest, Match13) { |
| 289 for (size_t i = 0; i < arraysize(kMatch13UrlPatternTestCases); ++i) { | 341 for (size_t i = 0; i < arraysize(kMatch13UrlPatternTestCases); ++i) { |
| 290 URLPattern pattern(URLPattern::SCHEME_ALL); | 342 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 291 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 343 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 292 pattern.Parse(kMatch13UrlPatternTestCases[i].pattern, | 344 pattern.Parse(kMatch13UrlPatternTestCases[i].pattern, |
| 293 URLPattern::PARSE_STRICT)) | 345 URLPattern::ERROR_ON_PORTS)) |
| 294 << " while parsing " << kMatch13UrlPatternTestCases[i].pattern; | 346 << " while parsing " << kMatch13UrlPatternTestCases[i].pattern; |
| 295 EXPECT_TRUE(pattern.MatchesURL( | 347 EXPECT_TRUE(pattern.MatchesURL( |
| 296 GURL(kMatch13UrlPatternTestCases[i].matches))) | 348 GURL(kMatch13UrlPatternTestCases[i].matches))) |
| 297 << " while matching " << kMatch13UrlPatternTestCases[i].matches; | 349 << " while matching " << kMatch13UrlPatternTestCases[i].matches; |
| 298 } | 350 } |
| 299 | 351 |
| 300 // Negative test. | 352 // Negative test. |
| 301 URLPattern pattern(URLPattern::SCHEME_ALL); | 353 URLPattern pattern(URLPattern::SCHEME_ALL); |
| 302 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 354 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 303 pattern.Parse("data:*", URLPattern::PARSE_STRICT)); | 355 pattern.Parse("data:*", URLPattern::ERROR_ON_PORTS)); |
| 304 EXPECT_FALSE(pattern.MatchesURL(GURL("about:blank"))); | 356 EXPECT_FALSE(pattern.MatchesURL(GURL("about:blank"))); |
| 305 }; | 357 }; |
| 306 | 358 |
| 307 // file scheme with empty hostname | 359 // file scheme with empty hostname |
| 308 TEST(ExtensionURLPatternTest, Match14) { | 360 TEST(ExtensionURLPatternTest, Match14) { |
| 309 URLPattern pattern(kAllSchemes); | 361 URLPattern pattern(kAllSchemes); |
| 310 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 362 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 311 pattern.Parse("file:///foo*", URLPattern::PARSE_STRICT)); | 363 pattern.Parse("file:///foo*", URLPattern::ERROR_ON_PORTS)); |
| 312 EXPECT_EQ("file", pattern.scheme()); | 364 EXPECT_EQ("file", pattern.scheme()); |
| 313 EXPECT_EQ("", pattern.host()); | 365 EXPECT_EQ("", pattern.host()); |
| 314 EXPECT_FALSE(pattern.match_subdomains()); | 366 EXPECT_FALSE(pattern.match_subdomains()); |
| 315 EXPECT_FALSE(pattern.match_all_urls()); | 367 EXPECT_FALSE(pattern.match_all_urls()); |
| 316 EXPECT_EQ("/foo*", pattern.path()); | 368 EXPECT_EQ("/foo*", pattern.path()); |
| 317 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 369 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
| 318 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 370 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
| 319 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 371 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
| 320 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 372 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
| 321 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 373 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
| 322 } | 374 } |
| 323 | 375 |
| 324 // file scheme without hostname part | 376 // file scheme without hostname part |
| 325 TEST(ExtensionURLPatternTest, Match15) { | 377 TEST(ExtensionURLPatternTest, Match15) { |
| 326 URLPattern pattern(kAllSchemes); | 378 URLPattern pattern(kAllSchemes); |
| 327 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 379 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 328 pattern.Parse("file://foo*", URLPattern::PARSE_STRICT)); | 380 pattern.Parse("file://foo*", URLPattern::ERROR_ON_PORTS)); |
| 329 EXPECT_EQ("file", pattern.scheme()); | 381 EXPECT_EQ("file", pattern.scheme()); |
| 330 EXPECT_EQ("", pattern.host()); | 382 EXPECT_EQ("", pattern.host()); |
| 331 EXPECT_FALSE(pattern.match_subdomains()); | 383 EXPECT_FALSE(pattern.match_subdomains()); |
| 332 EXPECT_FALSE(pattern.match_all_urls()); | 384 EXPECT_FALSE(pattern.match_all_urls()); |
| 333 EXPECT_EQ("/foo*", pattern.path()); | 385 EXPECT_EQ("/foo*", pattern.path()); |
| 334 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 386 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
| 335 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 387 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
| 336 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 388 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
| 337 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 389 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
| 338 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 390 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
| 339 } | 391 } |
| 340 | 392 |
| 341 // file scheme with hostname | 393 // file scheme with hostname |
| 342 TEST(ExtensionURLPatternTest, Match16) { | 394 TEST(ExtensionURLPatternTest, Match16) { |
| 343 URLPattern pattern(kAllSchemes); | 395 URLPattern pattern(kAllSchemes); |
| 344 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 396 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 345 pattern.Parse("file://localhost/foo*", URLPattern::PARSE_STRICT)); | 397 pattern.Parse("file://localhost/foo*", URLPattern::ERROR_ON_PORTS)); |
| 346 EXPECT_EQ("file", pattern.scheme()); | 398 EXPECT_EQ("file", pattern.scheme()); |
| 347 // Since hostname is ignored for file://. | 399 // Since hostname is ignored for file://. |
| 348 EXPECT_EQ("", pattern.host()); | 400 EXPECT_EQ("", pattern.host()); |
| 349 EXPECT_FALSE(pattern.match_subdomains()); | 401 EXPECT_FALSE(pattern.match_subdomains()); |
| 350 EXPECT_FALSE(pattern.match_all_urls()); | 402 EXPECT_FALSE(pattern.match_all_urls()); |
| 351 EXPECT_EQ("/foo*", pattern.path()); | 403 EXPECT_EQ("/foo*", pattern.path()); |
| 352 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 404 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
| 353 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 405 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
| 354 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 406 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
| 355 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 407 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
| 356 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 408 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
| 357 } | 409 } |
| 358 | 410 |
| 411 // Specific port |
| 412 TEST(ExtensionURLPatternTest, Match17) { |
| 413 URLPattern pattern(kAllSchemes); |
| 414 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 415 pattern.Parse("http://www.example.com:80/foo", |
| 416 URLPattern::USE_PORTS)); |
| 417 EXPECT_EQ("http", pattern.scheme()); |
| 418 EXPECT_EQ("www.example.com", pattern.host()); |
| 419 EXPECT_FALSE(pattern.match_subdomains()); |
| 420 EXPECT_FALSE(pattern.match_all_urls()); |
| 421 EXPECT_EQ("/foo", pattern.path()); |
| 422 EXPECT_EQ("80", pattern.port()); |
| 423 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); |
| 424 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); |
| 425 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); |
| 426 } |
| 427 |
| 428 // Explicit port wildcard |
| 429 TEST(ExtensionURLPatternTest, Match18) { |
| 430 URLPattern pattern(kAllSchemes); |
| 431 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 432 pattern.Parse("http://www.example.com:*/foo", |
| 433 URLPattern::USE_PORTS)); |
| 434 EXPECT_EQ("http", pattern.scheme()); |
| 435 EXPECT_EQ("www.example.com", pattern.host()); |
| 436 EXPECT_FALSE(pattern.match_subdomains()); |
| 437 EXPECT_FALSE(pattern.match_all_urls()); |
| 438 EXPECT_EQ("/foo", pattern.path()); |
| 439 EXPECT_EQ("*", pattern.port()); |
| 440 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); |
| 441 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); |
| 442 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); |
| 443 } |
| 444 |
| 359 static const struct GetAsStringPatterns { | 445 static const struct GetAsStringPatterns { |
| 360 const char* pattern; | 446 const char* pattern; |
| 361 } kGetAsStringTestCases[] = { | 447 } kGetAsStringTestCases[] = { |
| 362 { "http://www/" }, | 448 { "http://www/" }, |
| 363 { "http://*/*" }, | 449 { "http://*/*" }, |
| 364 { "chrome://*/*" }, | 450 { "chrome://*/*" }, |
| 365 { "chrome://newtab/" }, | 451 { "chrome://newtab/" }, |
| 366 { "about:*" }, | 452 { "about:*" }, |
| 367 { "about:blank" }, | 453 { "about:blank" }, |
| 368 { "chrome-extension://*/*" }, | 454 { "chrome-extension://*/*" }, |
| 369 { "chrome-extension://FTW/" }, | 455 { "chrome-extension://FTW/" }, |
| 370 { "data:*" }, | 456 { "data:*" }, |
| 371 { "data:monkey" }, | 457 { "data:monkey" }, |
| 372 { "javascript:*" }, | 458 { "javascript:*" }, |
| 373 { "javascript:atemyhomework" }, | 459 { "javascript:atemyhomework" }, |
| 460 { "http://www.example.com:8080/foo" }, |
| 374 }; | 461 }; |
| 375 | 462 |
| 376 TEST(ExtensionURLPatternTest, GetAsString) { | 463 TEST(ExtensionURLPatternTest, GetAsString) { |
| 377 for (size_t i = 0; i < arraysize(kGetAsStringTestCases); ++i) { | 464 for (size_t i = 0; i < arraysize(kGetAsStringTestCases); ++i) { |
| 378 URLPattern pattern(URLPattern::SCHEME_ALL); | 465 URLPattern pattern1(URLPattern::SCHEME_ALL); |
| 379 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 466 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 380 pattern.Parse(kGetAsStringTestCases[i].pattern, | 467 pattern1.Parse(kGetAsStringTestCases[i].pattern, |
| 381 URLPattern::PARSE_STRICT)); | 468 URLPattern::USE_PORTS)) |
| 382 EXPECT_STREQ(kGetAsStringTestCases[i].pattern, | 469 << "Error parsing " << kGetAsStringTestCases[i].pattern; |
| 383 pattern.GetAsString().c_str()); | 470 EXPECT_EQ(kGetAsStringTestCases[i].pattern, |
| 471 pattern1.GetAsString()); |
| 472 URLPattern pattern2(URLPattern::SCHEME_ALL); |
| 473 |
| 474 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 475 pattern2.Parse(kGetAsStringTestCases[i].pattern, |
| 476 URLPattern::IGNORE_PORTS)) |
| 477 << "Error parsing " << kGetAsStringTestCases[i].pattern; |
| 478 EXPECT_EQ(kGetAsStringTestCases[i].pattern, |
| 479 pattern2.GetAsString()); |
| 384 } | 480 } |
| 385 } | 481 } |
| 386 | 482 |
| 387 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2, | 483 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2, |
| 388 bool expect_overlap) { | 484 bool expect_overlap) { |
| 389 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2)) | 485 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2)) |
| 390 << pattern1.GetAsString() << ", " << pattern2.GetAsString(); | 486 << pattern1.GetAsString() << ", " << pattern2.GetAsString(); |
| 391 EXPECT_EQ(expect_overlap, pattern2.OverlapsWith(pattern1)) | 487 EXPECT_EQ(expect_overlap, pattern2.OverlapsWith(pattern1)) |
| 392 << pattern2.GetAsString() << ", " << pattern1.GetAsString(); | 488 << pattern2.GetAsString() << ", " << pattern1.GetAsString(); |
| 393 } | 489 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 460 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); | 556 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); |
| 461 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); | 557 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); |
| 462 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); | 558 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); |
| 463 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); | 559 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); |
| 464 | 560 |
| 465 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); | 561 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); |
| 466 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); | 562 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); |
| 467 | 563 |
| 468 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); | 564 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); |
| 469 } | 565 } |
| 566 |
| 567 TEST(ExtensionURLPatternTest, IgnorePorts) { |
| 568 std::string pattern_str = "http://www.example.com:8080/foo"; |
| 569 GURL url("http://www.example.com:1234/foo"); |
| 570 |
| 571 URLPattern pattern1(kAllSchemes); |
| 572 URLPattern pattern2(kAllSchemes); |
| 573 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 574 pattern1.Parse(pattern_str, URLPattern::IGNORE_PORTS)); |
| 575 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
| 576 pattern2.Parse(pattern_str, URLPattern::USE_PORTS)); |
| 577 |
| 578 EXPECT_EQ(pattern_str, pattern1.GetAsString()); |
| 579 EXPECT_EQ(pattern_str, pattern2.GetAsString()); |
| 580 EXPECT_FALSE(pattern1.MatchesURL(url)); |
| 581 EXPECT_FALSE(pattern2.MatchesURL(url)); |
| 582 } |
| OLD | NEW |