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

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

Issue 3039005: Fix some issues with extensions: (Closed)
Patch Set: fix host perms 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
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
11 static const int kAllSchemes =
12 URLPattern::SCHEME_HTTP |
13 URLPattern::SCHEME_HTTPS |
14 URLPattern::SCHEME_FILE |
15 URLPattern::SCHEME_FTP |
16 URLPattern::SCHEME_CHROMEUI;
17
11 TEST(URLPatternTest, ParseInvalid) { 18 TEST(URLPatternTest, ParseInvalid) {
12 const char* kInvalidPatterns[] = { 19 const char* kInvalidPatterns[] = {
13 "http", // no scheme 20 "http", // no scheme
14 "http://", // no path separator 21 "http://", // no path separator
15 "http://foo", // no path separator 22 "http://foo", // no path separator
16 "http://*foo/bar", // not allowed as substring of host component 23 "http://*foo/bar", // not allowed as substring of host component
17 "http://foo.*.bar/baz", // must be first component 24 "http://foo.*.bar/baz", // must be first component
18 "http:/bar", // scheme separator not found 25 "http:/bar", // scheme separator not found
19 "foo://*", // invalid scheme 26 "foo://*", // invalid scheme
20 "chrome-extenstions://*/*", // we don't support chrome extension URLs 27 "chrome-extenstions://*/*", // we don't support chrome extension URLs
21 }; 28 };
22 29
23 for (size_t i = 0; i < arraysize(kInvalidPatterns); ++i) { 30 for (size_t i = 0; i < arraysize(kInvalidPatterns); ++i) {
24 URLPattern pattern; 31 URLPattern pattern;
25 EXPECT_FALSE(pattern.Parse(kInvalidPatterns[i])); 32 EXPECT_FALSE(pattern.Parse(kInvalidPatterns[i]));
26 } 33 }
27 }; 34 };
28 35
29 // all pages for a given scheme 36 // all pages for a given scheme
30 TEST(URLPatternTest, Match1) { 37 TEST(URLPatternTest, Match1) {
31 URLPattern pattern(URLPattern::SCHEMES_ALL); 38 URLPattern pattern(kAllSchemes);
32 EXPECT_TRUE(pattern.Parse("http://*/*")); 39 EXPECT_TRUE(pattern.Parse("http://*/*"));
33 EXPECT_EQ("http", pattern.scheme()); 40 EXPECT_EQ("http", pattern.scheme());
34 EXPECT_EQ("", pattern.host()); 41 EXPECT_EQ("", pattern.host());
35 EXPECT_TRUE(pattern.match_subdomains()); 42 EXPECT_TRUE(pattern.match_subdomains());
36 EXPECT_FALSE(pattern.match_all_urls()); 43 EXPECT_FALSE(pattern.match_all_urls());
37 EXPECT_EQ("/*", pattern.path()); 44 EXPECT_EQ("/*", pattern.path());
38 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com"))); 45 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com")));
39 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com"))); 46 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://yahoo.com")));
40 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo"))); 47 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foo")));
41 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com"))); 48 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://google.com")));
42 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search"))); 49 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://74.125.127.100/search")));
43 } 50 }
44 51
45 // all domains 52 // all domains
46 TEST(URLPatternTest, Match2) { 53 TEST(URLPatternTest, Match2) {
47 URLPattern pattern(URLPattern::SCHEMES_ALL); 54 URLPattern pattern(kAllSchemes);
48 EXPECT_TRUE(pattern.Parse("https://*/foo*")); 55 EXPECT_TRUE(pattern.Parse("https://*/foo*"));
49 EXPECT_EQ("https", pattern.scheme()); 56 EXPECT_EQ("https", pattern.scheme());
50 EXPECT_EQ("", pattern.host()); 57 EXPECT_EQ("", pattern.host());
51 EXPECT_TRUE(pattern.match_subdomains()); 58 EXPECT_TRUE(pattern.match_subdomains());
52 EXPECT_FALSE(pattern.match_all_urls()); 59 EXPECT_FALSE(pattern.match_all_urls());
53 EXPECT_EQ("/foo*", pattern.path()); 60 EXPECT_EQ("/foo*", pattern.path());
54 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo"))); 61 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foo")));
55 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar"))); 62 EXPECT_TRUE(pattern.MatchesUrl(GURL("https://www.google.com/foobar")));
56 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo"))); 63 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://www.google.com/foo")));
57 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/"))); 64 EXPECT_FALSE(pattern.MatchesUrl(GURL("https://www.google.com/")));
58 } 65 }
59 66
60 // subdomains 67 // subdomains
61 TEST(URLPatternTest, Match3) { 68 TEST(URLPatternTest, Match3) {
62 URLPattern pattern(URLPattern::SCHEMES_ALL); 69 URLPattern pattern(kAllSchemes);
63 EXPECT_TRUE(pattern.Parse("http://*.google.com/foo*bar")); 70 EXPECT_TRUE(pattern.Parse("http://*.google.com/foo*bar"));
64 EXPECT_EQ("http", pattern.scheme()); 71 EXPECT_EQ("http", pattern.scheme());
65 EXPECT_EQ("google.com", pattern.host()); 72 EXPECT_EQ("google.com", pattern.host());
66 EXPECT_TRUE(pattern.match_subdomains()); 73 EXPECT_TRUE(pattern.match_subdomains());
67 EXPECT_FALSE(pattern.match_all_urls()); 74 EXPECT_FALSE(pattern.match_all_urls());
68 EXPECT_EQ("/foo*bar", pattern.path()); 75 EXPECT_EQ("/foo*bar", pattern.path());
69 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foobar"))); 76 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://google.com/foobar")));
70 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://www.google.com/foo?bar"))); 77 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://www.google.com/foo?bar")));
71 EXPECT_TRUE(pattern.MatchesUrl( 78 EXPECT_TRUE(pattern.MatchesUrl(
72 GURL("http://monkey.images.google.com/foooobar"))); 79 GURL("http://monkey.images.google.com/foooobar")));
73 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://yahoo.com/foobar"))); 80 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://yahoo.com/foobar")));
74 } 81 }
75 82
76 // glob escaping 83 // glob escaping
77 TEST(URLPatternTest, Match5) { 84 TEST(URLPatternTest, Match5) {
78 URLPattern pattern(URLPattern::SCHEMES_ALL); 85 URLPattern pattern(kAllSchemes);
79 EXPECT_TRUE(pattern.Parse("file:///foo?bar\\*baz")); 86 EXPECT_TRUE(pattern.Parse("file:///foo?bar\\*baz"));
80 EXPECT_EQ("file", pattern.scheme()); 87 EXPECT_EQ("file", pattern.scheme());
81 EXPECT_EQ("", pattern.host()); 88 EXPECT_EQ("", pattern.host());
82 EXPECT_FALSE(pattern.match_subdomains()); 89 EXPECT_FALSE(pattern.match_subdomains());
83 EXPECT_FALSE(pattern.match_all_urls()); 90 EXPECT_FALSE(pattern.match_all_urls());
84 EXPECT_EQ("/foo?bar\\*baz", pattern.path()); 91 EXPECT_EQ("/foo?bar\\*baz", pattern.path());
85 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo?bar\\hellobaz"))); 92 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo?bar\\hellobaz")));
86 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///fooXbar\\hellobaz"))); 93 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///fooXbar\\hellobaz")));
87 } 94 }
88 95
89 // ip addresses 96 // ip addresses
90 TEST(URLPatternTest, Match6) { 97 TEST(URLPatternTest, Match6) {
91 URLPattern pattern(URLPattern::SCHEMES_ALL); 98 URLPattern pattern(kAllSchemes);
92 EXPECT_TRUE(pattern.Parse("http://127.0.0.1/*")); 99 EXPECT_TRUE(pattern.Parse("http://127.0.0.1/*"));
93 EXPECT_EQ("http", pattern.scheme()); 100 EXPECT_EQ("http", pattern.scheme());
94 EXPECT_EQ("127.0.0.1", pattern.host()); 101 EXPECT_EQ("127.0.0.1", pattern.host());
95 EXPECT_FALSE(pattern.match_subdomains()); 102 EXPECT_FALSE(pattern.match_subdomains());
96 EXPECT_FALSE(pattern.match_all_urls()); 103 EXPECT_FALSE(pattern.match_all_urls());
97 EXPECT_EQ("/*", pattern.path()); 104 EXPECT_EQ("/*", pattern.path());
98 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 105 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
99 } 106 }
100 107
101 // subdomain matching with ip addresses 108 // subdomain matching with ip addresses
102 TEST(URLPatternTest, Match7) { 109 TEST(URLPatternTest, Match7) {
103 URLPattern pattern(URLPattern::SCHEMES_ALL); 110 URLPattern pattern(kAllSchemes);
104 EXPECT_TRUE(pattern.Parse("http://*.0.0.1/*")); // allowed, but useless 111 EXPECT_TRUE(pattern.Parse("http://*.0.0.1/*")); // allowed, but useless
105 EXPECT_EQ("http", pattern.scheme()); 112 EXPECT_EQ("http", pattern.scheme());
106 EXPECT_EQ("0.0.1", pattern.host()); 113 EXPECT_EQ("0.0.1", pattern.host());
107 EXPECT_TRUE(pattern.match_subdomains()); 114 EXPECT_TRUE(pattern.match_subdomains());
108 EXPECT_FALSE(pattern.match_all_urls()); 115 EXPECT_FALSE(pattern.match_all_urls());
109 EXPECT_EQ("/*", pattern.path()); 116 EXPECT_EQ("/*", pattern.path());
110 // Subdomain matching is never done if the argument has an IP address host. 117 // Subdomain matching is never done if the argument has an IP address host.
111 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 118 EXPECT_FALSE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
112 }; 119 };
113 120
114 // unicode 121 // unicode
115 TEST(URLPatternTest, Match8) { 122 TEST(URLPatternTest, Match8) {
116 URLPattern pattern(URLPattern::SCHEMES_ALL); 123 URLPattern pattern(kAllSchemes);
117 // The below is the ASCII encoding of the following URL: 124 // The below is the ASCII encoding of the following URL:
118 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1* 125 // http://*.\xe1\x80\xbf/a\xc2\x81\xe1*
119 EXPECT_TRUE(pattern.Parse("http://*.xn--gkd/a%C2%81%E1*")); 126 EXPECT_TRUE(pattern.Parse("http://*.xn--gkd/a%C2%81%E1*"));
120 EXPECT_EQ("http", pattern.scheme()); 127 EXPECT_EQ("http", pattern.scheme());
121 EXPECT_EQ("xn--gkd", pattern.host()); 128 EXPECT_EQ("xn--gkd", pattern.host());
122 EXPECT_TRUE(pattern.match_subdomains()); 129 EXPECT_TRUE(pattern.match_subdomains());
123 EXPECT_FALSE(pattern.match_all_urls()); 130 EXPECT_FALSE(pattern.match_all_urls());
124 EXPECT_EQ("/a%C2%81%E1*", pattern.path()); 131 EXPECT_EQ("/a%C2%81%E1*", pattern.path());
125 EXPECT_TRUE(pattern.MatchesUrl( 132 EXPECT_TRUE(pattern.MatchesUrl(
126 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz"))); 133 GURL("http://abc.\xe1\x80\xbf/a\xc2\x81\xe1xyz")));
127 EXPECT_TRUE(pattern.MatchesUrl( 134 EXPECT_TRUE(pattern.MatchesUrl(
128 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1"))); 135 GURL("http://\xe1\x80\xbf/a\xc2\x81\xe1\xe1")));
129 }; 136 };
130 137
131 // chrome:// 138 // chrome://
132 TEST(URLPatternTest, Match9) { 139 TEST(URLPatternTest, Match9) {
133 URLPattern pattern(URLPattern::SCHEMES_ALL); 140 URLPattern pattern(kAllSchemes);
134 EXPECT_TRUE(pattern.Parse("chrome://favicon/*")); 141 EXPECT_TRUE(pattern.Parse("chrome://favicon/*"));
135 EXPECT_EQ("chrome", pattern.scheme()); 142 EXPECT_EQ("chrome", pattern.scheme());
136 EXPECT_EQ("favicon", pattern.host()); 143 EXPECT_EQ("favicon", pattern.host());
137 EXPECT_FALSE(pattern.match_subdomains()); 144 EXPECT_FALSE(pattern.match_subdomains());
138 EXPECT_FALSE(pattern.match_all_urls()); 145 EXPECT_FALSE(pattern.match_all_urls());
139 EXPECT_EQ("/*", pattern.path()); 146 EXPECT_EQ("/*", pattern.path());
140 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 147 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
141 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com"))); 148 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/https://google.com")));
142 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history"))); 149 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://history")));
143 }; 150 };
144 151
145 // *:// 152 // *://
146 TEST(URLPatternTest, Match10) { 153 TEST(URLPatternTest, Match10) {
147 URLPattern pattern(URLPattern::SCHEMES_ALL); 154 URLPattern pattern(kAllSchemes);
148 EXPECT_TRUE(pattern.Parse("*://*/*")); 155 EXPECT_TRUE(pattern.Parse("*://*/*"));
149 EXPECT_TRUE(pattern.MatchesScheme("http")); 156 EXPECT_TRUE(pattern.MatchesScheme("http"));
150 EXPECT_TRUE(pattern.MatchesScheme("https")); 157 EXPECT_TRUE(pattern.MatchesScheme("https"));
151 EXPECT_FALSE(pattern.MatchesScheme("chrome")); 158 EXPECT_FALSE(pattern.MatchesScheme("chrome"));
152 EXPECT_FALSE(pattern.MatchesScheme("file")); 159 EXPECT_FALSE(pattern.MatchesScheme("file"));
153 EXPECT_FALSE(pattern.MatchesScheme("ftp")); 160 EXPECT_FALSE(pattern.MatchesScheme("ftp"));
154 EXPECT_TRUE(pattern.match_subdomains()); 161 EXPECT_TRUE(pattern.match_subdomains());
155 EXPECT_FALSE(pattern.match_all_urls()); 162 EXPECT_FALSE(pattern.match_all_urls());
156 EXPECT_EQ("/*", pattern.path()); 163 EXPECT_EQ("/*", pattern.path());
157 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 164 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
158 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 165 EXPECT_FALSE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
159 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar"))); 166 EXPECT_FALSE(pattern.MatchesUrl(GURL("file:///foo/bar")));
160 }; 167 };
161 168
162 // <all_urls> 169 // <all_urls>
163 TEST(URLPatternTest, Match11) { 170 TEST(URLPatternTest, Match11) {
164 URLPattern pattern(URLPattern::SCHEMES_ALL); 171 URLPattern pattern(kAllSchemes);
165 EXPECT_TRUE(pattern.Parse("<all_urls>")); 172 EXPECT_TRUE(pattern.Parse("<all_urls>"));
166 EXPECT_TRUE(pattern.MatchesScheme("chrome")); 173 EXPECT_TRUE(pattern.MatchesScheme("chrome"));
167 EXPECT_TRUE(pattern.MatchesScheme("http")); 174 EXPECT_TRUE(pattern.MatchesScheme("http"));
168 EXPECT_TRUE(pattern.MatchesScheme("https")); 175 EXPECT_TRUE(pattern.MatchesScheme("https"));
169 EXPECT_TRUE(pattern.MatchesScheme("file")); 176 EXPECT_TRUE(pattern.MatchesScheme("file"));
170 EXPECT_TRUE(pattern.match_subdomains()); 177 EXPECT_TRUE(pattern.match_subdomains());
171 EXPECT_TRUE(pattern.match_all_urls()); 178 EXPECT_TRUE(pattern.match_all_urls());
172 EXPECT_EQ("/*", pattern.path()); 179 EXPECT_EQ("/*", pattern.path());
173 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com"))); 180 EXPECT_TRUE(pattern.MatchesUrl(GURL("chrome://favicon/http://google.com")));
174 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1"))); 181 EXPECT_TRUE(pattern.MatchesUrl(GURL("http://127.0.0.1")));
175 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar"))); 182 EXPECT_TRUE(pattern.MatchesUrl(GURL("file:///foo/bar")));
176 }; 183 };
177 184
178 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2, 185 void TestPatternOverlap(const URLPattern& pattern1, const URLPattern& pattern2,
179 bool expect_overlap) { 186 bool expect_overlap) {
180 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2)) 187 EXPECT_EQ(expect_overlap, pattern1.OverlapsWith(pattern2))
181 << pattern1.GetAsString() << ", " << pattern2.GetAsString(); 188 << pattern1.GetAsString() << ", " << pattern2.GetAsString();
182 EXPECT_EQ(expect_overlap, pattern2.OverlapsWith(pattern1)) 189 EXPECT_EQ(expect_overlap, pattern2.OverlapsWith(pattern1))
183 << pattern2.GetAsString() << ", " << pattern1.GetAsString(); 190 << pattern2.GetAsString() << ", " << pattern1.GetAsString();
184 } 191 }
185 192
186 TEST(URLPatternTest, OverlapsWith) { 193 TEST(URLPatternTest, OverlapsWith) {
187 URLPattern pattern1(URLPattern::SCHEMES_ALL, "http://www.google.com/foo/*"); 194 URLPattern pattern1(kAllSchemes, "http://www.google.com/foo/*");
188 URLPattern pattern2(URLPattern::SCHEMES_ALL, "https://www.google.com/foo/*"); 195 URLPattern pattern2(kAllSchemes, "https://www.google.com/foo/*");
189 URLPattern pattern3(URLPattern::SCHEMES_ALL, "http://*.google.com/foo/*"); 196 URLPattern pattern3(kAllSchemes, "http://*.google.com/foo/*");
190 URLPattern pattern4(URLPattern::SCHEMES_ALL, "http://*.yahooo.com/foo/*"); 197 URLPattern pattern4(kAllSchemes, "http://*.yahooo.com/foo/*");
191 URLPattern pattern5(URLPattern::SCHEMES_ALL, "http://www.yahooo.com/bar/*"); 198 URLPattern pattern5(kAllSchemes, "http://www.yahooo.com/bar/*");
192 URLPattern pattern6(URLPattern::SCHEMES_ALL, 199 URLPattern pattern6(kAllSchemes,
193 "http://www.yahooo.com/bar/baz/*"); 200 "http://www.yahooo.com/bar/baz/*");
194 URLPattern pattern7(URLPattern::SCHEMES_ALL, "file:///*"); 201 URLPattern pattern7(kAllSchemes, "file:///*");
195 URLPattern pattern8(URLPattern::SCHEMES_ALL, "*://*/*"); 202 URLPattern pattern8(kAllSchemes, "*://*/*");
196 URLPattern pattern9(URLPattern::SCHEME_HTTPS, "*://*/*"); 203 URLPattern pattern9(URLPattern::SCHEME_HTTPS, "*://*/*");
197 URLPattern pattern10(URLPattern::SCHEMES_ALL, "<all_urls>"); 204 URLPattern pattern10(kAllSchemes, "<all_urls>");
198 205
199 TestPatternOverlap(pattern1, pattern1, true); 206 TestPatternOverlap(pattern1, pattern1, true);
200 TestPatternOverlap(pattern1, pattern2, false); 207 TestPatternOverlap(pattern1, pattern2, false);
201 TestPatternOverlap(pattern1, pattern3, true); 208 TestPatternOverlap(pattern1, pattern3, true);
202 TestPatternOverlap(pattern1, pattern4, false); 209 TestPatternOverlap(pattern1, pattern4, false);
203 TestPatternOverlap(pattern3, pattern4, false); 210 TestPatternOverlap(pattern3, pattern4, false);
204 TestPatternOverlap(pattern4, pattern5, false); 211 TestPatternOverlap(pattern4, pattern5, false);
205 TestPatternOverlap(pattern5, pattern6, true); 212 TestPatternOverlap(pattern5, pattern6, true);
206 213
207 // Test that scheme restrictions work. 214 // Test that scheme restrictions work.
208 TestPatternOverlap(pattern1, pattern8, true); 215 TestPatternOverlap(pattern1, pattern8, true);
209 TestPatternOverlap(pattern1, pattern9, false); 216 TestPatternOverlap(pattern1, pattern9, false);
210 TestPatternOverlap(pattern1, pattern10, true); 217 TestPatternOverlap(pattern1, pattern10, true);
211 218
212 // Test that '<all_urls>' includes file URLs, while scheme '*' does not. 219 // Test that '<all_urls>' includes file URLs, while scheme '*' does not.
213 TestPatternOverlap(pattern7, pattern8, false); 220 TestPatternOverlap(pattern7, pattern8, false);
214 TestPatternOverlap(pattern7, pattern10, true); 221 TestPatternOverlap(pattern7, pattern10, true);
215 } 222 }
216 223
217 TEST(URLPatternTest, ConvertToExplicitSchemes) { 224 TEST(URLPatternTest, ConvertToExplicitSchemes) {
218 std::vector<URLPattern> all_urls(URLPattern( 225 std::vector<URLPattern> all_urls(URLPattern(
219 URLPattern::SCHEMES_ALL, 226 kAllSchemes,
220 "<all_urls>").ConvertToExplicitSchemes()); 227 "<all_urls>").ConvertToExplicitSchemes());
221 228
222 std::vector<URLPattern> all_schemes(URLPattern( 229 std::vector<URLPattern> all_schemes(URLPattern(
223 URLPattern::SCHEMES_ALL, 230 kAllSchemes,
224 "*://google.com/foo").ConvertToExplicitSchemes()); 231 "*://google.com/foo").ConvertToExplicitSchemes());
225 232
226 std::vector<URLPattern> monkey(URLPattern( 233 std::vector<URLPattern> monkey(URLPattern(
227 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | 234 URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS |
228 URLPattern::SCHEME_FTP, 235 URLPattern::SCHEME_FTP,
229 "http://google.com/monkey").ConvertToExplicitSchemes()); 236 "http://google.com/monkey").ConvertToExplicitSchemes());
230 237
231 ASSERT_EQ(5u, all_urls.size()); 238 ASSERT_EQ(5u, all_urls.size());
232 ASSERT_EQ(2u, all_schemes.size()); 239 ASSERT_EQ(2u, all_schemes.size());
233 ASSERT_EQ(1u, monkey.size()); 240 ASSERT_EQ(1u, monkey.size());
234 241
235 EXPECT_EQ("http://*/*", all_urls[0].GetAsString()); 242 EXPECT_EQ("http://*/*", all_urls[0].GetAsString());
236 EXPECT_EQ("https://*/*", all_urls[1].GetAsString()); 243 EXPECT_EQ("https://*/*", all_urls[1].GetAsString());
237 EXPECT_EQ("file:///*", all_urls[2].GetAsString()); 244 EXPECT_EQ("file:///*", all_urls[2].GetAsString());
238 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString()); 245 EXPECT_EQ("ftp://*/*", all_urls[3].GetAsString());
239 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString()); 246 EXPECT_EQ("chrome://*/*", all_urls[4].GetAsString());
240 247
241 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString()); 248 EXPECT_EQ("http://google.com/foo", all_schemes[0].GetAsString());
242 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString()); 249 EXPECT_EQ("https://google.com/foo", all_schemes[1].GetAsString());
243 250
244 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString()); 251 EXPECT_EQ("http://google.com/monkey", monkey[0].GetAsString());
245 } 252 }
OLDNEW
« no previous file with comments | « chrome/common/extensions/url_pattern.h ('k') | chrome/common/extensions/user_script_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698