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

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

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

Powered by Google App Engine
This is Rietveld 408576698