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 17 matching lines...) Expand all Loading... |
28 { "http://", URLPattern::PARSE_ERROR_EMPTY_HOST }, | 28 { "http://", URLPattern::PARSE_ERROR_EMPTY_HOST }, |
29 { "http:///", URLPattern::PARSE_ERROR_EMPTY_HOST }, | 29 { "http:///", URLPattern::PARSE_ERROR_EMPTY_HOST }, |
30 { "http://*foo/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, | 30 { "http://*foo/bar", URLPattern::PARSE_ERROR_INVALID_HOST_WILDCARD }, |
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::IGNORE_PORTS, 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::IGNORE_PORTS)) | |
42 << kInvalidPatterns[i].pattern; | 41 << kInvalidPatterns[i].pattern; |
43 } | 42 } |
44 }; | 43 }; |
45 | 44 |
46 TEST(ExtensionURLPatternTest, Ports) { | 45 TEST(ExtensionURLPatternTest, Ports) { |
47 const struct { | 46 const struct { |
48 const char* pattern; | 47 const char* pattern; |
49 URLPattern::ParseResult expected_result_error_on_ports; | 48 URLPattern::ParseResult expected_result_error_on_ports; |
50 URLPattern::ParseResult expected_result_ignore_ports; | 49 URLPattern::ParseResult expected_result_ignore_ports; |
51 URLPattern::ParseResult expected_result_use_ports; | 50 URLPattern::ParseResult expected_result_use_ports; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 "*", "*", "*" }, | 95 "*", "*", "*" }, |
97 { "http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, | 96 { "http://*.foo/bar:1234", URLPattern::PARSE_SUCCESS, |
98 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, | 97 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
99 "*.foo", "*.foo", "*" }, | 98 "*.foo", "*.foo", "*" }, |
100 { "http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, | 99 { "http://foo/bar:1234/path", URLPattern::PARSE_SUCCESS, |
101 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, | 100 URLPattern::PARSE_SUCCESS, URLPattern::PARSE_SUCCESS, |
102 "foo", "foo", "*" }, | 101 "foo", "foo", "*" }, |
103 }; | 102 }; |
104 | 103 |
105 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) { | 104 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) { |
106 URLPattern use_ports_pattern(URLPattern::SCHEME_ALL); | 105 URLPattern use_ports_pattern(URLPattern::USE_PORTS, URLPattern::SCHEME_ALL); |
107 // Check results with |USE_PORTS|. | 106 // Check results with |USE_PORTS|. |
108 EXPECT_EQ(kTestPatterns[i].expected_result_use_ports, | 107 EXPECT_EQ(kTestPatterns[i].expected_result_use_ports, |
109 use_ports_pattern.Parse(kTestPatterns[i].pattern, | 108 use_ports_pattern.Parse(kTestPatterns[i].pattern)) |
110 URLPattern::USE_PORTS)) | |
111 << "Got unexpected result for URL pattern: " | 109 << "Got unexpected result for URL pattern: " |
112 << kTestPatterns[i].pattern; | 110 << kTestPatterns[i].pattern; |
113 EXPECT_EQ(kTestPatterns[i].expected_port, use_ports_pattern.port()) | 111 EXPECT_EQ(kTestPatterns[i].expected_port, use_ports_pattern.port()) |
114 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; | 112 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; |
115 | 113 |
116 URLPattern ignore_ports_pattern(URLPattern::SCHEME_ALL); | 114 URLPattern ignore_ports_pattern(URLPattern::IGNORE_PORTS, |
| 115 URLPattern::SCHEME_ALL); |
117 // Check results with |IGNORE_PORTS|. | 116 // Check results with |IGNORE_PORTS|. |
118 EXPECT_EQ(kTestPatterns[i].expected_result_ignore_ports, | 117 EXPECT_EQ(kTestPatterns[i].expected_result_ignore_ports, |
119 ignore_ports_pattern.Parse(kTestPatterns[i].pattern, | 118 ignore_ports_pattern.Parse(kTestPatterns[i].pattern)) |
120 URLPattern::IGNORE_PORTS)) | |
121 << "Got unexpected result for URL pattern: " | 119 << "Got unexpected result for URL pattern: " |
122 << kTestPatterns[i].pattern; | 120 << kTestPatterns[i].pattern; |
123 EXPECT_EQ("*", ignore_ports_pattern.port()) | 121 EXPECT_EQ("*", ignore_ports_pattern.port()) |
124 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; | 122 << "Got unexpected port for URL pattern: " << kTestPatterns[i].pattern; |
125 | 123 |
126 URLPattern error_on_ports_pattern(URLPattern::SCHEME_ALL); | 124 URLPattern error_on_ports_pattern(URLPattern::ERROR_ON_PORTS, |
| 125 URLPattern::SCHEME_ALL); |
127 // Check results with |ERROR_ON_PORTS|. | 126 // Check results with |ERROR_ON_PORTS|. |
128 EXPECT_EQ(kTestPatterns[i].expected_result_error_on_ports, | 127 EXPECT_EQ(kTestPatterns[i].expected_result_error_on_ports, |
129 error_on_ports_pattern.Parse(kTestPatterns[i].pattern, | 128 error_on_ports_pattern.Parse(kTestPatterns[i].pattern)) |
130 URLPattern::ERROR_ON_PORTS)) | |
131 << "Got unexpected result for URL pattern: " | 129 << "Got unexpected result for URL pattern: " |
132 << kTestPatterns[i].pattern; | 130 << kTestPatterns[i].pattern; |
133 } | 131 } |
134 }; | 132 }; |
135 | 133 |
136 // all pages for a given scheme | 134 // all pages for a given scheme |
137 TEST(ExtensionURLPatternTest, Match1) { | 135 TEST(ExtensionURLPatternTest, Match1) { |
138 URLPattern pattern(kAllSchemes); | 136 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
139 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 137 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*/*")); |
140 pattern.Parse("http://*/*", URLPattern::ERROR_ON_PORTS)); | |
141 EXPECT_EQ("http", pattern.scheme()); | 138 EXPECT_EQ("http", pattern.scheme()); |
142 EXPECT_EQ("", pattern.host()); | 139 EXPECT_EQ("", pattern.host()); |
143 EXPECT_TRUE(pattern.match_subdomains()); | 140 EXPECT_TRUE(pattern.match_subdomains()); |
144 EXPECT_FALSE(pattern.match_all_urls()); | 141 EXPECT_FALSE(pattern.match_all_urls()); |
145 EXPECT_EQ("/*", pattern.path()); | 142 EXPECT_EQ("/*", pattern.path()); |
146 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com"))); | 143 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com"))); |
147 EXPECT_TRUE(pattern.MatchesURL(GURL("http://yahoo.com"))); | 144 EXPECT_TRUE(pattern.MatchesURL(GURL("http://yahoo.com"))); |
148 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foo"))); | 145 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foo"))); |
149 EXPECT_FALSE(pattern.MatchesURL(GURL("https://google.com"))); | 146 EXPECT_FALSE(pattern.MatchesURL(GURL("https://google.com"))); |
150 EXPECT_TRUE(pattern.MatchesURL(GURL("http://74.125.127.100/search"))); | 147 EXPECT_TRUE(pattern.MatchesURL(GURL("http://74.125.127.100/search"))); |
151 } | 148 } |
152 | 149 |
153 // all domains | 150 // all domains |
154 TEST(ExtensionURLPatternTest, Match2) { | 151 TEST(ExtensionURLPatternTest, Match2) { |
155 URLPattern pattern(kAllSchemes); | 152 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
156 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 153 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("https://*/foo*")); |
157 pattern.Parse("https://*/foo*", URLPattern::ERROR_ON_PORTS)); | |
158 EXPECT_EQ("https", pattern.scheme()); | 154 EXPECT_EQ("https", pattern.scheme()); |
159 EXPECT_EQ("", pattern.host()); | 155 EXPECT_EQ("", pattern.host()); |
160 EXPECT_TRUE(pattern.match_subdomains()); | 156 EXPECT_TRUE(pattern.match_subdomains()); |
161 EXPECT_FALSE(pattern.match_all_urls()); | 157 EXPECT_FALSE(pattern.match_all_urls()); |
162 EXPECT_EQ("/foo*", pattern.path()); | 158 EXPECT_EQ("/foo*", pattern.path()); |
163 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); | 159 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foo"))); |
164 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); | 160 EXPECT_TRUE(pattern.MatchesURL(GURL("https://www.google.com/foobar"))); |
165 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); | 161 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.google.com/foo"))); |
166 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); | 162 EXPECT_FALSE(pattern.MatchesURL(GURL("https://www.google.com/"))); |
167 } | 163 } |
168 | 164 |
169 // subdomains | 165 // subdomains |
170 TEST(URLPatternTest, Match3) { | 166 TEST(URLPatternTest, Match3) { |
171 URLPattern pattern(kAllSchemes); | 167 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
172 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 168 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
173 pattern.Parse("http://*.google.com/foo*bar", | 169 pattern.Parse("http://*.google.com/foo*bar")); |
174 URLPattern::ERROR_ON_PORTS)); | |
175 EXPECT_EQ("http", pattern.scheme()); | 170 EXPECT_EQ("http", pattern.scheme()); |
176 EXPECT_EQ("google.com", pattern.host()); | 171 EXPECT_EQ("google.com", pattern.host()); |
177 EXPECT_TRUE(pattern.match_subdomains()); | 172 EXPECT_TRUE(pattern.match_subdomains()); |
178 EXPECT_FALSE(pattern.match_all_urls()); | 173 EXPECT_FALSE(pattern.match_all_urls()); |
179 EXPECT_EQ("/foo*bar", pattern.path()); | 174 EXPECT_EQ("/foo*bar", pattern.path()); |
180 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); | 175 EXPECT_TRUE(pattern.MatchesURL(GURL("http://google.com/foobar"))); |
181 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); | 176 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.google.com/foo?bar"))); |
182 EXPECT_TRUE(pattern.MatchesURL( | 177 EXPECT_TRUE(pattern.MatchesURL( |
183 GURL("http://monkey.images.google.com/foooobar"))); | 178 GURL("http://monkey.images.google.com/foooobar"))); |
184 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); | 179 EXPECT_FALSE(pattern.MatchesURL(GURL("http://yahoo.com/foobar"))); |
185 } | 180 } |
186 | 181 |
187 // glob escaping | 182 // glob escaping |
188 TEST(ExtensionURLPatternTest, Match5) { | 183 TEST(ExtensionURLPatternTest, Match5) { |
189 URLPattern pattern(kAllSchemes); | 184 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
190 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 185 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo?bar\\*baz")); |
191 pattern.Parse("file:///foo?bar\\*baz", URLPattern::ERROR_ON_PORTS)); | |
192 EXPECT_EQ("file", pattern.scheme()); | 186 EXPECT_EQ("file", pattern.scheme()); |
193 EXPECT_EQ("", pattern.host()); | 187 EXPECT_EQ("", pattern.host()); |
194 EXPECT_FALSE(pattern.match_subdomains()); | 188 EXPECT_FALSE(pattern.match_subdomains()); |
195 EXPECT_FALSE(pattern.match_all_urls()); | 189 EXPECT_FALSE(pattern.match_all_urls()); |
196 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); | 190 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); |
197 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz"))); | 191 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo?bar\\hellobaz"))); |
198 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///fooXbar\\hellobaz"))); | 192 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///fooXbar\\hellobaz"))); |
199 } | 193 } |
200 | 194 |
201 // ip addresses | 195 // ip addresses |
202 TEST(ExtensionURLPatternTest, Match6) { | 196 TEST(ExtensionURLPatternTest, Match6) { |
203 URLPattern pattern(kAllSchemes); | 197 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
204 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 198 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://127.0.0.1/*")); |
205 pattern.Parse("http://127.0.0.1/*", URLPattern::ERROR_ON_PORTS)); | |
206 EXPECT_EQ("http", pattern.scheme()); | 199 EXPECT_EQ("http", pattern.scheme()); |
207 EXPECT_EQ("127.0.0.1", pattern.host()); | 200 EXPECT_EQ("127.0.0.1", pattern.host()); |
208 EXPECT_FALSE(pattern.match_subdomains()); | 201 EXPECT_FALSE(pattern.match_subdomains()); |
209 EXPECT_FALSE(pattern.match_all_urls()); | 202 EXPECT_FALSE(pattern.match_all_urls()); |
210 EXPECT_EQ("/*", pattern.path()); | 203 EXPECT_EQ("/*", pattern.path()); |
211 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 204 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
212 } | 205 } |
213 | 206 |
214 // subdomain matching with ip addresses | 207 // subdomain matching with ip addresses |
215 TEST(ExtensionURLPatternTest, Match7) { | 208 TEST(ExtensionURLPatternTest, Match7) { |
216 URLPattern pattern(kAllSchemes); | 209 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
217 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 210 // allowed, but useless |
218 pattern.Parse("http://*.0.0.1/*", | 211 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("http://*.0.0.1/*")); |
219 URLPattern::ERROR_ON_PORTS)); // allowed, but useless | |
220 EXPECT_EQ("http", pattern.scheme()); | 212 EXPECT_EQ("http", pattern.scheme()); |
221 EXPECT_EQ("0.0.1", pattern.host()); | 213 EXPECT_EQ("0.0.1", pattern.host()); |
222 EXPECT_TRUE(pattern.match_subdomains()); | 214 EXPECT_TRUE(pattern.match_subdomains()); |
223 EXPECT_FALSE(pattern.match_all_urls()); | 215 EXPECT_FALSE(pattern.match_all_urls()); |
224 EXPECT_EQ("/*", pattern.path()); | 216 EXPECT_EQ("/*", pattern.path()); |
225 // Subdomain matching is never done if the argument has an IP address host. | 217 // Subdomain matching is never done if the argument has an IP address host. |
226 EXPECT_FALSE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 218 EXPECT_FALSE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
227 }; | 219 }; |
228 | 220 |
229 // unicode | 221 // unicode |
230 TEST(ExtensionURLPatternTest, Match8) { | 222 TEST(ExtensionURLPatternTest, Match8) { |
231 URLPattern pattern(kAllSchemes); | 223 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
232 // The below is the ASCII encoding of the following URL: | 224 // The below is the ASCII encoding of the following URL: |
233 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* | 225 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* |
234 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 226 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
235 pattern.Parse("http://*.xn--gkd/a%C2%81%E1*", | 227 pattern.Parse("http://*.xn--gkd/a%C2%81%E1*")); |
236 URLPattern::ERROR_ON_PORTS)); | |
237 EXPECT_EQ("http", pattern.scheme()); | 228 EXPECT_EQ("http", pattern.scheme()); |
238 EXPECT_EQ("xn--gkd", pattern.host()); | 229 EXPECT_EQ("xn--gkd", pattern.host()); |
239 EXPECT_TRUE(pattern.match_subdomains()); | 230 EXPECT_TRUE(pattern.match_subdomains()); |
240 EXPECT_FALSE(pattern.match_all_urls()); | 231 EXPECT_FALSE(pattern.match_all_urls()); |
241 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); | 232 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); |
242 EXPECT_TRUE(pattern.MatchesURL( | 233 EXPECT_TRUE(pattern.MatchesURL( |
243 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); | 234 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); |
244 EXPECT_TRUE(pattern.MatchesURL( | 235 EXPECT_TRUE(pattern.MatchesURL( |
245 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); | 236 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); |
246 }; | 237 }; |
247 | 238 |
248 // chrome:// | 239 // chrome:// |
249 TEST(ExtensionURLPatternTest, Match9) { | 240 TEST(ExtensionURLPatternTest, Match9) { |
250 URLPattern pattern(kAllSchemes); | 241 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
251 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 242 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("chrome://favicon/*")); |
252 pattern.Parse("chrome://favicon/*", URLPattern::ERROR_ON_PORTS)); | |
253 EXPECT_EQ("chrome", pattern.scheme()); | 243 EXPECT_EQ("chrome", pattern.scheme()); |
254 EXPECT_EQ("favicon", pattern.host()); | 244 EXPECT_EQ("favicon", pattern.host()); |
255 EXPECT_FALSE(pattern.match_subdomains()); | 245 EXPECT_FALSE(pattern.match_subdomains()); |
256 EXPECT_FALSE(pattern.match_all_urls()); | 246 EXPECT_FALSE(pattern.match_all_urls()); |
257 EXPECT_EQ("/*", pattern.path()); | 247 EXPECT_EQ("/*", pattern.path()); |
258 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 248 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
259 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/https://google.com"))); | 249 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/https://google.com"))); |
260 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://history"))); | 250 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://history"))); |
261 }; | 251 }; |
262 | 252 |
263 // *:// | 253 // *:// |
264 TEST(ExtensionURLPatternTest, Match10) { | 254 TEST(ExtensionURLPatternTest, Match10) { |
265 URLPattern pattern(kAllSchemes); | 255 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
266 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 256 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("*://*/*")); |
267 pattern.Parse("*://*/*", URLPattern::ERROR_ON_PORTS)); | |
268 EXPECT_TRUE(pattern.MatchesScheme("http")); | 257 EXPECT_TRUE(pattern.MatchesScheme("http")); |
269 EXPECT_TRUE(pattern.MatchesScheme("https")); | 258 EXPECT_TRUE(pattern.MatchesScheme("https")); |
270 EXPECT_FALSE(pattern.MatchesScheme("chrome")); | 259 EXPECT_FALSE(pattern.MatchesScheme("chrome")); |
271 EXPECT_FALSE(pattern.MatchesScheme("file")); | 260 EXPECT_FALSE(pattern.MatchesScheme("file")); |
272 EXPECT_FALSE(pattern.MatchesScheme("ftp")); | 261 EXPECT_FALSE(pattern.MatchesScheme("ftp")); |
273 EXPECT_TRUE(pattern.match_subdomains()); | 262 EXPECT_TRUE(pattern.match_subdomains()); |
274 EXPECT_FALSE(pattern.match_all_urls()); | 263 EXPECT_FALSE(pattern.match_all_urls()); |
275 EXPECT_EQ("/*", pattern.path()); | 264 EXPECT_EQ("/*", pattern.path()); |
276 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 265 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
277 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 266 EXPECT_FALSE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
278 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 267 EXPECT_FALSE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
279 EXPECT_FALSE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 268 EXPECT_FALSE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
280 }; | 269 }; |
281 | 270 |
282 // <all_urls> | 271 // <all_urls> |
283 TEST(ExtensionURLPatternTest, Match11) { | 272 TEST(ExtensionURLPatternTest, Match11) { |
284 URLPattern pattern(kAllSchemes); | 273 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
285 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 274 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
286 pattern.Parse("<all_urls>", URLPattern::ERROR_ON_PORTS)); | |
287 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 275 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
288 EXPECT_TRUE(pattern.MatchesScheme("http")); | 276 EXPECT_TRUE(pattern.MatchesScheme("http")); |
289 EXPECT_TRUE(pattern.MatchesScheme("https")); | 277 EXPECT_TRUE(pattern.MatchesScheme("https")); |
290 EXPECT_TRUE(pattern.MatchesScheme("file")); | 278 EXPECT_TRUE(pattern.MatchesScheme("file")); |
291 EXPECT_TRUE(pattern.match_subdomains()); | 279 EXPECT_TRUE(pattern.match_subdomains()); |
292 EXPECT_TRUE(pattern.match_all_urls()); | 280 EXPECT_TRUE(pattern.match_all_urls()); |
293 EXPECT_EQ("/*", pattern.path()); | 281 EXPECT_EQ("/*", pattern.path()); |
294 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); | 282 EXPECT_TRUE(pattern.MatchesURL(GURL("chrome://favicon/http://google.com"))); |
295 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); | 283 EXPECT_TRUE(pattern.MatchesURL(GURL("http://127.0.0.1"))); |
296 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); | 284 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo/bar"))); |
297 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); | 285 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo/bar"))); |
298 | 286 |
299 // Make sure the properties are the same when creating an <all_urls> pattern | 287 // Make sure the properties are the same when creating an <all_urls> pattern |
300 // via SetMatchAllURLs and by parsing <all_urls>. | 288 // via SetMatchAllURLs and by parsing <all_urls>. |
301 URLPattern pattern2(kAllSchemes); | 289 URLPattern pattern2(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
302 pattern2.SetMatchAllURLs(true); | 290 pattern2.SetMatchAllURLs(true); |
303 | 291 |
304 EXPECT_EQ(pattern.valid_schemes(), pattern2.valid_schemes()); | 292 EXPECT_EQ(pattern.valid_schemes(), pattern2.valid_schemes()); |
305 EXPECT_EQ(pattern.match_subdomains(), pattern2.match_subdomains()); | 293 EXPECT_EQ(pattern.match_subdomains(), pattern2.match_subdomains()); |
306 EXPECT_EQ(pattern.path(), pattern2.path()); | 294 EXPECT_EQ(pattern.path(), pattern2.path()); |
307 EXPECT_EQ(pattern.match_all_urls(), pattern2.match_all_urls()); | 295 EXPECT_EQ(pattern.match_all_urls(), pattern2.match_all_urls()); |
308 EXPECT_EQ(pattern.scheme(), pattern2.scheme()); | 296 EXPECT_EQ(pattern.scheme(), pattern2.scheme()); |
309 EXPECT_EQ(pattern.port(), pattern2.port()); | 297 EXPECT_EQ(pattern.port(), pattern2.port()); |
310 EXPECT_EQ(pattern.GetAsString(), pattern2.GetAsString()); | 298 EXPECT_EQ(pattern.GetAsString(), pattern2.GetAsString()); |
311 }; | 299 }; |
312 | 300 |
313 // SCHEME_ALL matches all schemes. | 301 // SCHEME_ALL matches all schemes. |
314 TEST(ExtensionURLPatternTest, Match12) { | 302 TEST(ExtensionURLPatternTest, Match12) { |
315 URLPattern pattern(URLPattern::SCHEME_ALL); | 303 URLPattern pattern(URLPattern::ERROR_ON_PORTS, URLPattern::SCHEME_ALL); |
316 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 304 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("<all_urls>")); |
317 pattern.Parse("<all_urls>", URLPattern::ERROR_ON_PORTS)); | |
318 EXPECT_TRUE(pattern.MatchesScheme("chrome")); | 305 EXPECT_TRUE(pattern.MatchesScheme("chrome")); |
319 EXPECT_TRUE(pattern.MatchesScheme("http")); | 306 EXPECT_TRUE(pattern.MatchesScheme("http")); |
320 EXPECT_TRUE(pattern.MatchesScheme("https")); | 307 EXPECT_TRUE(pattern.MatchesScheme("https")); |
321 EXPECT_TRUE(pattern.MatchesScheme("file")); | 308 EXPECT_TRUE(pattern.MatchesScheme("file")); |
322 EXPECT_TRUE(pattern.MatchesScheme("javascript")); | 309 EXPECT_TRUE(pattern.MatchesScheme("javascript")); |
323 EXPECT_TRUE(pattern.MatchesScheme("data")); | 310 EXPECT_TRUE(pattern.MatchesScheme("data")); |
324 EXPECT_TRUE(pattern.MatchesScheme("about")); | 311 EXPECT_TRUE(pattern.MatchesScheme("about")); |
325 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); | 312 EXPECT_TRUE(pattern.MatchesScheme("chrome-extension")); |
326 EXPECT_TRUE(pattern.match_subdomains()); | 313 EXPECT_TRUE(pattern.match_subdomains()); |
327 EXPECT_TRUE(pattern.match_all_urls()); | 314 EXPECT_TRUE(pattern.match_all_urls()); |
(...skipping 17 matching lines...) Expand all Loading... |
345 {"about:blank", "about:blank"}, | 332 {"about:blank", "about:blank"}, |
346 {"about:*", "about:version"}, | 333 {"about:*", "about:version"}, |
347 {"chrome-extension://*/*", "chrome-extension://FTW"}, | 334 {"chrome-extension://*/*", "chrome-extension://FTW"}, |
348 {"data:*", "data:monkey"}, | 335 {"data:*", "data:monkey"}, |
349 {"javascript:*", "javascript:atemyhomework"}, | 336 {"javascript:*", "javascript:atemyhomework"}, |
350 }; | 337 }; |
351 | 338 |
352 // SCHEME_ALL and specific schemes. | 339 // SCHEME_ALL and specific schemes. |
353 TEST(ExtensionURLPatternTest, Match13) { | 340 TEST(ExtensionURLPatternTest, Match13) { |
354 for (size_t i = 0; i < arraysize(kMatch13UrlPatternTestCases); ++i) { | 341 for (size_t i = 0; i < arraysize(kMatch13UrlPatternTestCases); ++i) { |
355 URLPattern pattern(URLPattern::SCHEME_ALL); | 342 URLPattern pattern(URLPattern::ERROR_ON_PORTS, URLPattern::SCHEME_ALL); |
356 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 343 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
357 pattern.Parse(kMatch13UrlPatternTestCases[i].pattern, | 344 pattern.Parse(kMatch13UrlPatternTestCases[i].pattern)) |
358 URLPattern::ERROR_ON_PORTS)) | |
359 << " while parsing " << kMatch13UrlPatternTestCases[i].pattern; | 345 << " while parsing " << kMatch13UrlPatternTestCases[i].pattern; |
360 EXPECT_TRUE(pattern.MatchesURL( | 346 EXPECT_TRUE(pattern.MatchesURL( |
361 GURL(kMatch13UrlPatternTestCases[i].matches))) | 347 GURL(kMatch13UrlPatternTestCases[i].matches))) |
362 << " while matching " << kMatch13UrlPatternTestCases[i].matches; | 348 << " while matching " << kMatch13UrlPatternTestCases[i].matches; |
363 } | 349 } |
364 | 350 |
365 // Negative test. | 351 // Negative test. |
366 URLPattern pattern(URLPattern::SCHEME_ALL); | 352 URLPattern pattern(URLPattern::ERROR_ON_PORTS, URLPattern::SCHEME_ALL); |
367 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 353 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("data:*")); |
368 pattern.Parse("data:*", URLPattern::ERROR_ON_PORTS)); | |
369 EXPECT_FALSE(pattern.MatchesURL(GURL("about:blank"))); | 354 EXPECT_FALSE(pattern.MatchesURL(GURL("about:blank"))); |
370 }; | 355 }; |
371 | 356 |
372 // file scheme with empty hostname | 357 // file scheme with empty hostname |
373 TEST(ExtensionURLPatternTest, Match14) { | 358 TEST(ExtensionURLPatternTest, Match14) { |
374 URLPattern pattern(kAllSchemes); | 359 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
375 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 360 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file:///foo*")); |
376 pattern.Parse("file:///foo*", URLPattern::ERROR_ON_PORTS)); | |
377 EXPECT_EQ("file", pattern.scheme()); | 361 EXPECT_EQ("file", pattern.scheme()); |
378 EXPECT_EQ("", pattern.host()); | 362 EXPECT_EQ("", pattern.host()); |
379 EXPECT_FALSE(pattern.match_subdomains()); | 363 EXPECT_FALSE(pattern.match_subdomains()); |
380 EXPECT_FALSE(pattern.match_all_urls()); | 364 EXPECT_FALSE(pattern.match_all_urls()); |
381 EXPECT_EQ("/foo*", pattern.path()); | 365 EXPECT_EQ("/foo*", pattern.path()); |
382 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 366 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
383 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 367 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
384 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 368 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
385 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 369 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
386 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 370 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
387 } | 371 } |
388 | 372 |
389 // file scheme without hostname part | 373 // file scheme without hostname part |
390 TEST(ExtensionURLPatternTest, Match15) { | 374 TEST(ExtensionURLPatternTest, Match15) { |
391 URLPattern pattern(kAllSchemes); | 375 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
392 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 376 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file://foo*")); |
393 pattern.Parse("file://foo*", URLPattern::ERROR_ON_PORTS)); | |
394 EXPECT_EQ("file", pattern.scheme()); | 377 EXPECT_EQ("file", pattern.scheme()); |
395 EXPECT_EQ("", pattern.host()); | 378 EXPECT_EQ("", pattern.host()); |
396 EXPECT_FALSE(pattern.match_subdomains()); | 379 EXPECT_FALSE(pattern.match_subdomains()); |
397 EXPECT_FALSE(pattern.match_all_urls()); | 380 EXPECT_FALSE(pattern.match_all_urls()); |
398 EXPECT_EQ("/foo*", pattern.path()); | 381 EXPECT_EQ("/foo*", pattern.path()); |
399 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 382 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
400 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 383 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
401 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 384 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
402 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 385 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
403 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 386 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
404 } | 387 } |
405 | 388 |
406 // file scheme with hostname | 389 // file scheme with hostname |
407 TEST(ExtensionURLPatternTest, Match16) { | 390 TEST(ExtensionURLPatternTest, Match16) { |
408 URLPattern pattern(kAllSchemes); | 391 URLPattern pattern(URLPattern::ERROR_ON_PORTS, kAllSchemes); |
409 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 392 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern.Parse("file://localhost/foo*")); |
410 pattern.Parse("file://localhost/foo*", URLPattern::ERROR_ON_PORTS)); | |
411 EXPECT_EQ("file", pattern.scheme()); | 393 EXPECT_EQ("file", pattern.scheme()); |
412 // Since hostname is ignored for file://. | 394 // Since hostname is ignored for file://. |
413 EXPECT_EQ("", pattern.host()); | 395 EXPECT_EQ("", pattern.host()); |
414 EXPECT_FALSE(pattern.match_subdomains()); | 396 EXPECT_FALSE(pattern.match_subdomains()); |
415 EXPECT_FALSE(pattern.match_all_urls()); | 397 EXPECT_FALSE(pattern.match_all_urls()); |
416 EXPECT_EQ("/foo*", pattern.path()); | 398 EXPECT_EQ("/foo*", pattern.path()); |
417 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); | 399 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foo"))); |
418 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); | 400 EXPECT_FALSE(pattern.MatchesURL(GURL("file://foobar"))); |
419 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); | 401 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foo"))); |
420 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); | 402 EXPECT_TRUE(pattern.MatchesURL(GURL("file:///foobar"))); |
421 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); | 403 EXPECT_TRUE(pattern.MatchesURL(GURL("file://localhost/foo"))); |
422 } | 404 } |
423 | 405 |
424 // Specific port | 406 // Specific port |
425 TEST(ExtensionURLPatternTest, Match17) { | 407 TEST(ExtensionURLPatternTest, Match17) { |
426 URLPattern pattern(kAllSchemes); | 408 URLPattern pattern(URLPattern::USE_PORTS, kAllSchemes); |
427 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 409 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
428 pattern.Parse("http://www.example.com:80/foo", | 410 pattern.Parse("http://www.example.com:80/foo")); |
429 URLPattern::USE_PORTS)); | |
430 EXPECT_EQ("http", pattern.scheme()); | 411 EXPECT_EQ("http", pattern.scheme()); |
431 EXPECT_EQ("www.example.com", pattern.host()); | 412 EXPECT_EQ("www.example.com", pattern.host()); |
432 EXPECT_FALSE(pattern.match_subdomains()); | 413 EXPECT_FALSE(pattern.match_subdomains()); |
433 EXPECT_FALSE(pattern.match_all_urls()); | 414 EXPECT_FALSE(pattern.match_all_urls()); |
434 EXPECT_EQ("/foo", pattern.path()); | 415 EXPECT_EQ("/foo", pattern.path()); |
435 EXPECT_EQ("80", pattern.port()); | 416 EXPECT_EQ("80", pattern.port()); |
436 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); | 417 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); |
437 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); | 418 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); |
438 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); | 419 EXPECT_FALSE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); |
439 } | 420 } |
440 | 421 |
441 // Explicit port wildcard | 422 // Explicit port wildcard |
442 TEST(ExtensionURLPatternTest, Match18) { | 423 TEST(ExtensionURLPatternTest, Match18) { |
443 URLPattern pattern(kAllSchemes); | 424 URLPattern pattern(URLPattern::USE_PORTS, kAllSchemes); |
444 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 425 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
445 pattern.Parse("http://www.example.com:*/foo", | 426 pattern.Parse("http://www.example.com:*/foo")); |
446 URLPattern::USE_PORTS)); | |
447 EXPECT_EQ("http", pattern.scheme()); | 427 EXPECT_EQ("http", pattern.scheme()); |
448 EXPECT_EQ("www.example.com", pattern.host()); | 428 EXPECT_EQ("www.example.com", pattern.host()); |
449 EXPECT_FALSE(pattern.match_subdomains()); | 429 EXPECT_FALSE(pattern.match_subdomains()); |
450 EXPECT_FALSE(pattern.match_all_urls()); | 430 EXPECT_FALSE(pattern.match_all_urls()); |
451 EXPECT_EQ("/foo", pattern.path()); | 431 EXPECT_EQ("/foo", pattern.path()); |
452 EXPECT_EQ("*", pattern.port()); | 432 EXPECT_EQ("*", pattern.port()); |
453 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); | 433 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:80/foo"))); |
454 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); | 434 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com/foo"))); |
455 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); | 435 EXPECT_TRUE(pattern.MatchesURL(GURL("http://www.example.com:8080/foo"))); |
456 } | 436 } |
(...skipping 11 matching lines...) Expand all Loading... |
468 { "chrome-extension://FTW/" }, | 448 { "chrome-extension://FTW/" }, |
469 { "data:*" }, | 449 { "data:*" }, |
470 { "data:monkey" }, | 450 { "data:monkey" }, |
471 { "javascript:*" }, | 451 { "javascript:*" }, |
472 { "javascript:atemyhomework" }, | 452 { "javascript:atemyhomework" }, |
473 { "http://www.example.com:8080/foo" }, | 453 { "http://www.example.com:8080/foo" }, |
474 }; | 454 }; |
475 | 455 |
476 TEST(ExtensionURLPatternTest, GetAsString) { | 456 TEST(ExtensionURLPatternTest, GetAsString) { |
477 for (size_t i = 0; i < arraysize(kGetAsStringTestCases); ++i) { | 457 for (size_t i = 0; i < arraysize(kGetAsStringTestCases); ++i) { |
478 URLPattern pattern1(URLPattern::SCHEME_ALL); | 458 URLPattern pattern1(URLPattern::USE_PORTS, URLPattern::SCHEME_ALL); |
479 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 459 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
480 pattern1.Parse(kGetAsStringTestCases[i].pattern, | 460 pattern1.Parse(kGetAsStringTestCases[i].pattern)) |
481 URLPattern::USE_PORTS)) | |
482 << "Error parsing " << kGetAsStringTestCases[i].pattern; | 461 << "Error parsing " << kGetAsStringTestCases[i].pattern; |
483 EXPECT_EQ(kGetAsStringTestCases[i].pattern, | 462 EXPECT_EQ(kGetAsStringTestCases[i].pattern, |
484 pattern1.GetAsString()); | 463 pattern1.GetAsString()); |
485 URLPattern pattern2(URLPattern::SCHEME_ALL); | |
486 | 464 |
| 465 URLPattern pattern2(URLPattern::IGNORE_PORTS, URLPattern::SCHEME_ALL); |
487 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 466 EXPECT_EQ(URLPattern::PARSE_SUCCESS, |
488 pattern2.Parse(kGetAsStringTestCases[i].pattern, | 467 pattern2.Parse(kGetAsStringTestCases[i].pattern)) |
489 URLPattern::IGNORE_PORTS)) | |
490 << "Error parsing " << kGetAsStringTestCases[i].pattern; | 468 << "Error parsing " << kGetAsStringTestCases[i].pattern; |
491 EXPECT_EQ(kGetAsStringTestCases[i].pattern, | 469 EXPECT_EQ(kGetAsStringTestCases[i].pattern, |
492 pattern2.GetAsString()); | 470 pattern2.GetAsString()); |
493 } | 471 } |
494 } | 472 } |
495 | 473 |
496 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2, | 474 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2, |
497 bool expect_overlap) { | 475 bool expect_overlap) { |
498 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2)) | 476 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2)) |
499 << pattern1.GetAsString() << ", " << pattern2.GetAsString(); | 477 << pattern1.GetAsString() << ", " << pattern2.GetAsString(); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); | 552 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); |
575 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); | 553 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); |
576 | 554 |
577 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); | 555 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); |
578 } | 556 } |
579 | 557 |
580 TEST(ExtensionURLPatternTest, IgnorePorts) { | 558 TEST(ExtensionURLPatternTest, IgnorePorts) { |
581 std::string pattern_str = "http://www.example.com:8080/foo"; | 559 std::string pattern_str = "http://www.example.com:8080/foo"; |
582 GURL url("http://www.example.com:1234/foo"); | 560 GURL url("http://www.example.com:1234/foo"); |
583 | 561 |
584 URLPattern pattern1(kAllSchemes); | 562 URLPattern pattern1(URLPattern::IGNORE_PORTS, kAllSchemes); |
585 URLPattern pattern2(kAllSchemes); | 563 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern1.Parse(pattern_str)); |
586 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 564 |
587 pattern1.Parse(pattern_str, URLPattern::IGNORE_PORTS)); | 565 URLPattern pattern2(URLPattern::USE_PORTS, kAllSchemes); |
588 EXPECT_EQ(URLPattern::PARSE_SUCCESS, | 566 EXPECT_EQ(URLPattern::PARSE_SUCCESS, pattern2.Parse(pattern_str)); |
589 pattern2.Parse(pattern_str, URLPattern::USE_PORTS)); | |
590 | 567 |
591 EXPECT_EQ(pattern_str, pattern1.GetAsString()); | 568 EXPECT_EQ(pattern_str, pattern1.GetAsString()); |
592 EXPECT_EQ(pattern_str, pattern2.GetAsString()); | 569 EXPECT_EQ(pattern_str, pattern2.GetAsString()); |
593 EXPECT_FALSE(pattern1.MatchesURL(url)); | 570 EXPECT_FALSE(pattern1.MatchesURL(url)); |
594 EXPECT_FALSE(pattern2.MatchesURL(url)); | 571 EXPECT_FALSE(pattern2.MatchesURL(url)); |
595 } | 572 } |
596 | 573 |
597 TEST(ExtensionURLPatternTest, Equals) { | 574 TEST(ExtensionURLPatternTest, Equals) { |
598 const struct { | 575 const struct { |
599 const char* pattern1; | 576 const char* pattern1; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
671 "http://*/*", | 648 "http://*/*", |
672 false | 649 false |
673 } | 650 } |
674 }; | 651 }; |
675 | 652 |
676 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEqualsTestCases); ++i) { | 653 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEqualsTestCases); ++i) { |
677 std::string message = kEqualsTestCases[i].pattern1; | 654 std::string message = kEqualsTestCases[i].pattern1; |
678 message += " "; | 655 message += " "; |
679 message += kEqualsTestCases[i].pattern2; | 656 message += kEqualsTestCases[i].pattern2; |
680 | 657 |
681 URLPattern pattern1(URLPattern::SCHEME_ALL); | 658 URLPattern pattern1(URLPattern::USE_PORTS, URLPattern::SCHEME_ALL); |
682 URLPattern pattern2(URLPattern::SCHEME_ALL); | 659 URLPattern pattern2(URLPattern::USE_PORTS, URLPattern::SCHEME_ALL); |
683 | 660 |
684 pattern1.Parse(kEqualsTestCases[i].pattern1, URLPattern::USE_PORTS); | 661 pattern1.Parse(kEqualsTestCases[i].pattern1); |
685 pattern2.Parse(kEqualsTestCases[i].pattern2, URLPattern::USE_PORTS); | 662 pattern2.Parse(kEqualsTestCases[i].pattern2); |
686 EXPECT_EQ(kEqualsTestCases[i].expected_equal, pattern1 == pattern2) | 663 EXPECT_EQ(kEqualsTestCases[i].expected_equal, pattern1 == pattern2) |
687 << message; | 664 << message; |
688 } | 665 } |
689 } | 666 } |
OLD | NEW |