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

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

Issue 2932007: Use WebCore's built in support for user styles (Closed)
Patch Set: whoops Created 10 years, 5 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
« no previous file with comments | « chrome/common/extensions/url_pattern.cc ('k') | chrome/renderer/user_script_slave.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/scoped_ptr.h" 5 #include "base/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 8
9 // See url_pattern.h for examples of valid and invalid patterns. 9 // See url_pattern.h for examples of valid and invalid patterns.
10 10
(...skipping 15 matching lines...) Expand all
26 } 26 }
27 }; 27 };
28 28
29 // all pages for a given scheme 29 // all pages for a given scheme
30 TEST(URLPatternTest, Match1) { 30 TEST(URLPatternTest, Match1) {
31 URLPattern pattern(URLPattern::SCHEMES_ALL); 31 URLPattern pattern(URLPattern::SCHEMES_ALL);
32 EXPECT_TRUE(pattern.Parse("http://*/*")); 32 EXPECT_TRUE(pattern.Parse("http://*/*"));
33 EXPECT_EQ("http", pattern.scheme()); 33 EXPECT_EQ("http", pattern.scheme());
34 EXPECT_EQ("", pattern.host()); 34 EXPECT_EQ("", pattern.host());
35 EXPECT_TRUE(pattern.match_subdomains()); 35 EXPECT_TRUE(pattern.match_subdomains());
36 EXPECT_FALSE(pattern.match_all_urls());
36 EXPECT_EQ("/*", pattern.path()); 37 EXPECT_EQ("/*", pattern.path());
37 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com"))); 38 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com")));
38 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com"))); 39 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com")));
39 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo"))); 40 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo")));
40 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com"))); 41 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com")));
41 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search"))); 42 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search")));
42 } 43 }
43 44
44 // all domains 45 // all domains
45 TEST(URLPatternTest, Match2) { 46 TEST(URLPatternTest, Match2) {
46 URLPattern pattern(URLPattern::SCHEMES_ALL); 47 URLPattern pattern(URLPattern::SCHEMES_ALL);
47 EXPECT_TRUE(pattern.Parse("https://*/foo*")); 48 EXPECT_TRUE(pattern.Parse("https://*/foo*"));
48 EXPECT_EQ("https", pattern.scheme()); 49 EXPECT_EQ("https", pattern.scheme());
49 EXPECT_EQ("", pattern.host()); 50 EXPECT_EQ("", pattern.host());
50 EXPECT_TRUE(pattern.match_subdomains()); 51 EXPECT_TRUE(pattern.match_subdomains());
52 EXPECT_FALSE(pattern.match_all_urls());
51 EXPECT_EQ("/foo*", pattern.path()); 53 EXPECT_EQ("/foo*", pattern.path());
52 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo"))); 54 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo")));
53 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar"))); 55 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar")));
54 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo"))); 56 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo")));
55 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/"))); 57 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/")));
56 } 58 }
57 59
58 // subdomains 60 // subdomains
59 TEST(URLPatternTest, Match3) { 61 TEST(URLPatternTest, Match3) {
60 URLPattern pattern(URLPattern::SCHEMES_ALL); 62 URLPattern pattern(URLPattern::SCHEMES_ALL);
61 EXPECT_TRUE(pattern.Parse("http://*.google.com/foo*bar")); 63 EXPECT_TRUE(pattern.Parse("http://*.google.com/foo*bar"));
62 EXPECT_EQ("http", pattern.scheme()); 64 EXPECT_EQ("http", pattern.scheme());
63 EXPECT_EQ("google.com", pattern.host()); 65 EXPECT_EQ("google.com", pattern.host());
64 EXPECT_TRUE(pattern.match_subdomains()); 66 EXPECT_TRUE(pattern.match_subdomains());
67 EXPECT_FALSE(pattern.match_all_urls());
65 EXPECT_EQ("/foo*bar", pattern.path()); 68 EXPECT_EQ("/foo*bar", pattern.path());
66 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foobar"))); 69 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foobar")));
67 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://www.google.com/foo?bar"))); 70 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://www.google.com/foo?bar")));
68 EXPECT_TRUE(pattern.MatchesUrl( 71 EXPECT_TRUE(pattern.MatchesUrl(
69 GURL("http://monkey.images.google.com/foooobar"))); 72 GURL("http://monkey.images.google.com/foooobar")));
70 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://yahoo.com/foobar"))); 73 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://yahoo.com/foobar")));
71 } 74 }
72 75
73 // glob escaping 76 // glob escaping
74 TEST(URLPatternTest, Match5) { 77 TEST(URLPatternTest, Match5) {
75 URLPattern pattern(URLPattern::SCHEMES_ALL); 78 URLPattern pattern(URLPattern::SCHEMES_ALL);
76 EXPECT_TRUE(pattern.Parse("file:///foo?bar\\*baz")); 79 EXPECT_TRUE(pattern.Parse("file:///foo?bar\\*baz"));
77 EXPECT_EQ("file", pattern.scheme()); 80 EXPECT_EQ("file", pattern.scheme());
78 EXPECT_EQ("", pattern.host()); 81 EXPECT_EQ("", pattern.host());
79 EXPECT_FALSE(pattern.match_subdomains()); 82 EXPECT_FALSE(pattern.match_subdomains());
83 EXPECT_FALSE(pattern.match_all_urls());
80 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); 84 EXPECT_EQ("/foo?bar\\*baz", pattern.path());
81 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo?bar\\hellobaz"))); 85 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo?bar\\hellobaz")));
82 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///fooXbar\\hellobaz"))); 86 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///fooXbar\\hellobaz")));
83 } 87 }
84 88
85 // ip addresses 89 // ip addresses
86 TEST(URLPatternTest, Match6) { 90 TEST(URLPatternTest, Match6) {
87 URLPattern pattern(URLPattern::SCHEMES_ALL); 91 URLPattern pattern(URLPattern::SCHEMES_ALL);
88 EXPECT_TRUE(pattern.Parse("http://127.0.0.1/*")); 92 EXPECT_TRUE(pattern.Parse("http://127.0.0.1/*"));
89 EXPECT_EQ("http", pattern.scheme()); 93 EXPECT_EQ("http", pattern.scheme());
90 EXPECT_EQ("127.0.0.1", pattern.host()); 94 EXPECT_EQ("127.0.0.1", pattern.host());
91 EXPECT_FALSE(pattern.match_subdomains()); 95 EXPECT_FALSE(pattern.match_subdomains());
96 EXPECT_FALSE(pattern.match_all_urls());
92 EXPECT_EQ("/*", pattern.path()); 97 EXPECT_EQ("/*", pattern.path());
93 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 98 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
94 } 99 }
95 100
96 // subdomain matching with ip addresses 101 // subdomain matching with ip addresses
97 TEST(URLPatternTest, Match7) { 102 TEST(URLPatternTest, Match7) {
98 URLPattern pattern(URLPattern::SCHEMES_ALL); 103 URLPattern pattern(URLPattern::SCHEMES_ALL);
99 EXPECT_TRUE(pattern.Parse("http://*.0.0.1/*")); // allowed, but useless 104 EXPECT_TRUE(pattern.Parse("http://*.0.0.1/*")); // allowed, but useless
100 EXPECT_EQ("http", pattern.scheme()); 105 EXPECT_EQ("http", pattern.scheme());
101 EXPECT_EQ("0.0.1", pattern.host()); 106 EXPECT_EQ("0.0.1", pattern.host());
102 EXPECT_TRUE(pattern.match_subdomains()); 107 EXPECT_TRUE(pattern.match_subdomains());
108 EXPECT_FALSE(pattern.match_all_urls());
103 EXPECT_EQ("/*", pattern.path()); 109 EXPECT_EQ("/*", pattern.path());
104 // Subdomain matching is never done if the argument has an IP address host. 110 // Subdomain matching is never done if the argument has an IP address host.
105 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 111 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
106 }; 112 };
107 113
108 // unicode 114 // unicode
109 TEST(URLPatternTest, Match8) { 115 TEST(URLPatternTest, Match8) {
110 URLPattern pattern(URLPattern::SCHEMES_ALL); 116 URLPattern pattern(URLPattern::SCHEMES_ALL);
111 // The below is the ASCII encoding of the following URL: 117 // The below is the ASCII encoding of the following URL:
112 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* 118 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1*
113 EXPECT_TRUE(pattern.Parse("http://*.xn--gkd/a%C2%81%E1*")); 119 EXPECT_TRUE(pattern.Parse("http://*.xn--gkd/a%C2%81%E1*"));
114 EXPECT_EQ("http", pattern.scheme()); 120 EXPECT_EQ("http", pattern.scheme());
115 EXPECT_EQ("xn--gkd", pattern.host()); 121 EXPECT_EQ("xn--gkd", pattern.host());
116 EXPECT_TRUE(pattern.match_subdomains()); 122 EXPECT_TRUE(pattern.match_subdomains());
123 EXPECT_FALSE(pattern.match_all_urls());
117 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); 124 EXPECT_EQ("/a%C2%81%E1*", pattern.path());
118 EXPECT_TRUE(pattern.MatchesUrl( 125 EXPECT_TRUE(pattern.MatchesUrl(
119 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); 126 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz")));
120 EXPECT_TRUE(pattern.MatchesUrl( 127 EXPECT_TRUE(pattern.MatchesUrl(
121 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); 128 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1")));
122 }; 129 };
123 130
124 // chrome:// 131 // chrome://
125 TEST(URLPatternTest, Match9) { 132 TEST(URLPatternTest, Match9) {
126 URLPattern pattern(URLPattern::SCHEMES_ALL); 133 URLPattern pattern(URLPattern::SCHEMES_ALL);
127 EXPECT_TRUE(pattern.Parse("chrome://favicon/*")); 134 EXPECT_TRUE(pattern.Parse("chrome://favicon/*"));
128 EXPECT_EQ("chrome", pattern.scheme()); 135 EXPECT_EQ("chrome", pattern.scheme());
129 EXPECT_EQ("favicon", pattern.host()); 136 EXPECT_EQ("favicon", pattern.host());
130 EXPECT_FALSE(pattern.match_subdomains()); 137 EXPECT_FALSE(pattern.match_subdomains());
138 EXPECT_FALSE(pattern.match_all_urls());
131 EXPECT_EQ("/*", pattern.path()); 139 EXPECT_EQ("/*", pattern.path());
132 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 140 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
133 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com"))); 141 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com")));
134 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history"))); 142 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history")));
135 }; 143 };
136 144
137 // *:// 145 // *://
138 TEST(URLPatternTest, Match10) { 146 TEST(URLPatternTest, Match10) {
139 URLPattern pattern(URLPattern::SCHEMES_ALL); 147 URLPattern pattern(URLPattern::SCHEMES_ALL);
140 EXPECT_TRUE(pattern.Parse("*://*/*")); 148 EXPECT_TRUE(pattern.Parse("*://*/*"));
141 EXPECT_TRUE(pattern.MatchesScheme("http")); 149 EXPECT_TRUE(pattern.MatchesScheme("http"));
142 EXPECT_TRUE(pattern.MatchesScheme("https")); 150 EXPECT_TRUE(pattern.MatchesScheme("https"));
143 EXPECT_FALSE(pattern.MatchesScheme("chrome")); 151 EXPECT_FALSE(pattern.MatchesScheme("chrome"));
144 EXPECT_FALSE(pattern.MatchesScheme("file")); 152 EXPECT_FALSE(pattern.MatchesScheme("file"));
145 EXPECT_FALSE(pattern.MatchesScheme("ftp")); 153 EXPECT_FALSE(pattern.MatchesScheme("ftp"));
146 EXPECT_TRUE(pattern.match_subdomains()); 154 EXPECT_TRUE(pattern.match_subdomains());
155 EXPECT_FALSE(pattern.match_all_urls());
147 EXPECT_EQ("/*", pattern.path()); 156 EXPECT_EQ("/*", pattern.path());
148 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 157 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
149 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 158 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
150 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar"))); 159 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar")));
151 }; 160 };
152 161
153 // <all_urls> 162 // <all_urls>
154 TEST(URLPatternTest, Match11) { 163 TEST(URLPatternTest, Match11) {
155 URLPattern pattern(URLPattern::SCHEMES_ALL); 164 URLPattern pattern(URLPattern::SCHEMES_ALL);
156 EXPECT_TRUE(pattern.Parse("<all_urls>")); 165 EXPECT_TRUE(pattern.Parse("<all_urls>"));
157 EXPECT_TRUE(pattern.MatchesScheme("chrome")); 166 EXPECT_TRUE(pattern.MatchesScheme("chrome"));
158 EXPECT_TRUE(pattern.MatchesScheme("http")); 167 EXPECT_TRUE(pattern.MatchesScheme("http"));
159 EXPECT_TRUE(pattern.MatchesScheme("https")); 168 EXPECT_TRUE(pattern.MatchesScheme("https"));
160 EXPECT_TRUE(pattern.MatchesScheme("file")); 169 EXPECT_TRUE(pattern.MatchesScheme("file"));
161 EXPECT_TRUE(pattern.match_subdomains()); 170 EXPECT_TRUE(pattern.match_subdomains());
171 EXPECT_TRUE(pattern.match_all_urls());
162 EXPECT_EQ("/*", pattern.path()); 172 EXPECT_EQ("/*", pattern.path());
163 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 173 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
164 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 174 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
165 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar"))); 175 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar")));
166 }; 176 };
167 177
168 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2, 178 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2,
169 bool expect_overlap) { 179 bool expect_overlap) {
170 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2)) 180 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2))
171 << pattern1.GetAsString() << ", " << pattern2.GetAsString(); 181 << pattern1.GetAsString() << ", " << pattern2.GetAsString();
(...skipping 24 matching lines...) Expand all
196 206
197 // Test that scheme restrictions work. 207 // Test that scheme restrictions work.
198 TestPatternOverlap(pattern1, pattern8, true); 208 TestPatternOverlap(pattern1, pattern8, true);
199 TestPatternOverlap(pattern1, pattern9, false); 209 TestPatternOverlap(pattern1, pattern9, false);
200 TestPatternOverlap(pattern1, pattern10, true); 210 TestPatternOverlap(pattern1, pattern10, true);
201 211
202 // Test that '<all_urls>' includes file URLs, while scheme '*' does not. 212 // Test that '<all_urls>' includes file URLs, while scheme '*' does not.
203 TestPatternOverlap(pattern7, pattern8, false); 213 TestPatternOverlap(pattern7, pattern8, false);
204 TestPatternOverlap(pattern7, pattern10, true); 214 TestPatternOverlap(pattern7, pattern10, true);
205 } 215 }
216
217 TEST(URLPatternTest, ConvertToExplicitSchemes) {
218 std::vector<URLPattern> all_urls(URLPattern(
219 URLPattern::SCHEMES_ALL,
220 "<all_urls>").ConvertToExplicitSchemes());
221
222 std::vector<URLPattern> all_schemes(URLPattern(
223 URLPattern::SCHEMES_ALL,
224 "*://google.com/foo").ConvertToExplicitSchemes());
225
226 std::vector<URLPattern> monkey(URLPattern(
227 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS |
228 URLPattern::SCHEME_FTP,
229 "http://google.com/monkey").ConvertToExplicitSchemes());
230
231 ASSERT_EQ(5u, all_urls.size());
232 ASSERT_EQ(2u, all_schemes.size());
233 ASSERT_EQ(1u, monkey.size());
234
235 EXPECT_EQ("http://*/*", all_urls[0].GetAsString());
236 EXPECT_EQ("https://*/*", all_urls[1].GetAsString());
237 EXPECT_EQ("file:///*", all_urls[2].GetAsString());
238 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString());
239 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString());
240
241 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString());
242 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString());
243
244 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString());
245 }
OLDNEW
« no previous file with comments | « chrome/common/extensions/url_pattern.cc ('k') | chrome/renderer/user_script_slave.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698