Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(548)

Side by Side Diff: chrome/common/extensions/url_pattern_unittest.cc

Issue 7811006: Add full support for filesystem URLs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix merge errors Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/common/extensions/url_pattern.cc ('k') | chrome/test/data/extensions/api_test/filebrowser_component/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698