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
3// found in the LICENSE file.
4
5#include "base/command_line.h"
6#include "components/google/core/browser/google_switches.h"
7#include "components/google/core/browser/google_url_tracker.h"
8#include "components/google/core/browser/google_util.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11using google_util::IsGoogleDomainUrl;
12
13
14// Helpers --------------------------------------------------------------------
15
16namespace {
17
18// These functions merely provide brevity in the callers.
19
20bool IsHomePage(const std::string& url) {
21  return google_util::IsGoogleHomePageUrl(GURL(url));
22}
23
24bool IsSearch(const std::string& url) {
25  return google_util::IsGoogleSearchUrl(GURL(url));
26}
27
28bool StartsWithBaseURL(const std::string& url) {
29  return google_util::StartsWithCommandLineGoogleBaseURL(GURL(url));
30}
31
32}  // namespace
33
34
35// Actual tests ---------------------------------------------------------------
36
37TEST(GoogleUtilTest, GoodHomePagesNonSecure) {
38  // Valid home page hosts.
39  EXPECT_TRUE(IsHomePage(GoogleURLTracker::kDefaultGoogleHomepage));
40  EXPECT_TRUE(IsHomePage("http://google.com"));
41  EXPECT_TRUE(IsHomePage("http://www.google.com"));
42  EXPECT_TRUE(IsHomePage("http://www.google.ca"));
43  EXPECT_TRUE(IsHomePage("http://www.google.co.uk"));
44  EXPECT_TRUE(IsHomePage("http://www.google.com:80/"));
45
46  // Only the paths /, /webhp, and /ig.* are valid.  Query parameters are
47  // ignored.
48  EXPECT_TRUE(IsHomePage("http://www.google.com/"));
49  EXPECT_TRUE(IsHomePage("http://www.google.com/webhp"));
50  EXPECT_TRUE(IsHomePage("http://www.google.com/webhp?rlz=TEST"));
51  EXPECT_TRUE(IsHomePage("http://www.google.com/ig"));
52  EXPECT_TRUE(IsHomePage("http://www.google.com/ig/foo"));
53  EXPECT_TRUE(IsHomePage("http://www.google.com/ig?rlz=TEST"));
54  EXPECT_TRUE(IsHomePage("http://www.google.com/ig/foo?rlz=TEST"));
55}
56
57TEST(GoogleUtilTest, GoodHomePagesSecure) {
58  // Valid home page hosts.
59  EXPECT_TRUE(IsHomePage("https://google.com"));
60  EXPECT_TRUE(IsHomePage("https://www.google.com"));
61  EXPECT_TRUE(IsHomePage("https://www.google.ca"));
62  EXPECT_TRUE(IsHomePage("https://www.google.co.uk"));
63  EXPECT_TRUE(IsHomePage("https://www.google.com:443/"));
64
65  // Only the paths /, /webhp, and /ig.* are valid.  Query parameters are
66  // ignored.
67  EXPECT_TRUE(IsHomePage("https://www.google.com/"));
68  EXPECT_TRUE(IsHomePage("https://www.google.com/webhp"));
69  EXPECT_TRUE(IsHomePage("https://www.google.com/webhp?rlz=TEST"));
70  EXPECT_TRUE(IsHomePage("https://www.google.com/ig"));
71  EXPECT_TRUE(IsHomePage("https://www.google.com/ig/foo"));
72  EXPECT_TRUE(IsHomePage("https://www.google.com/ig?rlz=TEST"));
73  EXPECT_TRUE(IsHomePage("https://www.google.com/ig/foo?rlz=TEST"));
74}
75
76TEST(GoogleUtilTest, BadHomePages) {
77  EXPECT_FALSE(IsHomePage(std::string()));
78
79  // If specified, only the "www" subdomain is OK.
80  EXPECT_FALSE(IsHomePage("http://maps.google.com"));
81  EXPECT_FALSE(IsHomePage("http://foo.google.com"));
82
83  // No non-standard port numbers.
84  EXPECT_FALSE(IsHomePage("http://www.google.com:1234"));
85  EXPECT_FALSE(IsHomePage("https://www.google.com:5678"));
86
87  // Invalid TLDs.
88  EXPECT_FALSE(IsHomePage("http://www.google.abc"));
89  EXPECT_FALSE(IsHomePage("http://www.google.com.abc"));
90  EXPECT_FALSE(IsHomePage("http://www.google.abc.com"));
91  EXPECT_FALSE(IsHomePage("http://www.google.ab.cd"));
92  EXPECT_FALSE(IsHomePage("http://www.google.uk.qq"));
93
94  // Must be http or https.
95  EXPECT_FALSE(IsHomePage("ftp://www.google.com"));
96  EXPECT_FALSE(IsHomePage("file://does/not/exist"));
97  EXPECT_FALSE(IsHomePage("bad://www.google.com"));
98  EXPECT_FALSE(IsHomePage("www.google.com"));
99
100  // Only the paths /, /webhp, and /ig.* are valid.
101  EXPECT_FALSE(IsHomePage("http://www.google.com/abc"));
102  EXPECT_FALSE(IsHomePage("http://www.google.com/webhpabc"));
103  EXPECT_FALSE(IsHomePage("http://www.google.com/webhp/abc"));
104  EXPECT_FALSE(IsHomePage("http://www.google.com/abcig"));
105  EXPECT_FALSE(IsHomePage("http://www.google.com/webhp/ig"));
106
107  // A search URL should not be identified as a home page URL.
108  EXPECT_FALSE(IsHomePage("http://www.google.com/search?q=something"));
109
110  // Path is case sensitive.
111  EXPECT_FALSE(IsHomePage("https://www.google.com/WEBHP"));
112}
113
114TEST(GoogleUtilTest, GoodSearchPagesNonSecure) {
115  // Queries with path "/search" need to have the query parameter in either
116  // the url parameter or the hash fragment.
117  EXPECT_TRUE(IsSearch("http://www.google.com/search?q=something"));
118  EXPECT_TRUE(IsSearch("http://www.google.com/search#q=something"));
119  EXPECT_TRUE(IsSearch("http://www.google.com/search?name=bob&q=something"));
120  EXPECT_TRUE(IsSearch("http://www.google.com/search?name=bob#q=something"));
121  EXPECT_TRUE(IsSearch("http://www.google.com/search?name=bob#age=24&q=thing"));
122  EXPECT_TRUE(IsSearch("http://www.google.co.uk/search?q=something"));
123  // It's actually valid for both to have the query parameter.
124  EXPECT_TRUE(IsSearch("http://www.google.com/search?q=something#q=other"));
125
126  // Queries with path "/webhp", "/" or "" need to have the query parameter in
127  // the hash fragment.
128  EXPECT_TRUE(IsSearch("http://www.google.com/webhp#q=something"));
129  EXPECT_TRUE(IsSearch("http://www.google.com/webhp#name=bob&q=something"));
130  EXPECT_TRUE(IsSearch("http://www.google.com/webhp?name=bob#q=something"));
131  EXPECT_TRUE(IsSearch("http://www.google.com/webhp?name=bob#age=24&q=thing"));
132
133  EXPECT_TRUE(IsSearch("http://www.google.com/#q=something"));
134  EXPECT_TRUE(IsSearch("http://www.google.com/#name=bob&q=something"));
135  EXPECT_TRUE(IsSearch("http://www.google.com/?name=bob#q=something"));
136  EXPECT_TRUE(IsSearch("http://www.google.com/?name=bob#age=24&q=something"));
137
138  EXPECT_TRUE(IsSearch("http://www.google.com#q=something"));
139  EXPECT_TRUE(IsSearch("http://www.google.com#name=bob&q=something"));
140  EXPECT_TRUE(IsSearch("http://www.google.com?name=bob#q=something"));
141  EXPECT_TRUE(IsSearch("http://www.google.com?name=bob#age=24&q=something"));
142}
143
144TEST(GoogleUtilTest, GoodSearchPagesSecure) {
145  // Queries with path "/search" need to have the query parameter in either
146  // the url parameter or the hash fragment.
147  EXPECT_TRUE(IsSearch("https://www.google.com/search?q=something"));
148  EXPECT_TRUE(IsSearch("https://www.google.com/search#q=something"));
149  EXPECT_TRUE(IsSearch("https://www.google.com/search?name=bob&q=something"));
150  EXPECT_TRUE(IsSearch("https://www.google.com/search?name=bob#q=something"));
151  EXPECT_TRUE(IsSearch("https://www.google.com/search?name=bob#age=24&q=q"));
152  EXPECT_TRUE(IsSearch("https://www.google.co.uk/search?q=something"));
153  // It's actually valid for both to have the query parameter.
154  EXPECT_TRUE(IsSearch("https://www.google.com/search?q=something#q=other"));
155
156  // Queries with path "/webhp", "/" or "" need to have the query parameter in
157  // the hash fragment.
158  EXPECT_TRUE(IsSearch("https://www.google.com/webhp#q=something"));
159  EXPECT_TRUE(IsSearch("https://www.google.com/webhp#name=bob&q=something"));
160  EXPECT_TRUE(IsSearch("https://www.google.com/webhp?name=bob#q=something"));
161  EXPECT_TRUE(IsSearch("https://www.google.com/webhp?name=bob#age=24&q=thing"));
162
163  EXPECT_TRUE(IsSearch("https://www.google.com/#q=something"));
164  EXPECT_TRUE(IsSearch("https://www.google.com/#name=bob&q=something"));
165  EXPECT_TRUE(IsSearch("https://www.google.com/?name=bob#q=something"));
166  EXPECT_TRUE(IsSearch("https://www.google.com/?name=bob#age=24&q=something"));
167
168  EXPECT_TRUE(IsSearch("https://www.google.com#q=something"));
169  EXPECT_TRUE(IsSearch("https://www.google.com#name=bob&q=something"));
170  EXPECT_TRUE(IsSearch("https://www.google.com?name=bob#q=something"));
171  EXPECT_TRUE(IsSearch("https://www.google.com?name=bob#age=24&q=something"));
172}
173
174TEST(GoogleUtilTest, BadSearches) {
175  // A home page URL should not be identified as a search URL.
176  EXPECT_FALSE(IsSearch(GoogleURLTracker::kDefaultGoogleHomepage));
177  EXPECT_FALSE(IsSearch("http://google.com"));
178  EXPECT_FALSE(IsSearch("http://www.google.com"));
179  EXPECT_FALSE(IsSearch("http://www.google.com/search"));
180  EXPECT_FALSE(IsSearch("http://www.google.com/search?"));
181
182  // Must be http or https
183  EXPECT_FALSE(IsSearch("ftp://www.google.com/search?q=something"));
184  EXPECT_FALSE(IsSearch("file://does/not/exist/search?q=something"));
185  EXPECT_FALSE(IsSearch("bad://www.google.com/search?q=something"));
186  EXPECT_FALSE(IsSearch("www.google.com/search?q=something"));
187
188  // Can't have an empty query parameter.
189  EXPECT_FALSE(IsSearch("http://www.google.com/search?q="));
190  EXPECT_FALSE(IsSearch("http://www.google.com/search?name=bob&q="));
191  EXPECT_FALSE(IsSearch("http://www.google.com/webhp#q="));
192  EXPECT_FALSE(IsSearch("http://www.google.com/webhp#name=bob&q="));
193
194  // Home page searches without a hash fragment query parameter are invalid.
195  EXPECT_FALSE(IsSearch("http://www.google.com/webhp?q=something"));
196  EXPECT_FALSE(IsSearch("http://www.google.com/webhp?q=something#no=good"));
197  EXPECT_FALSE(IsSearch("http://www.google.com/webhp?name=bob&q=something"));
198  EXPECT_FALSE(IsSearch("http://www.google.com/?q=something"));
199  EXPECT_FALSE(IsSearch("http://www.google.com?q=something"));
200
201  // Some paths are outright invalid as searches.
202  EXPECT_FALSE(IsSearch("http://www.google.com/notreal?q=something"));
203  EXPECT_FALSE(IsSearch("http://www.google.com/chrome?q=something"));
204  EXPECT_FALSE(IsSearch("http://www.google.com/search/nogood?q=something"));
205  EXPECT_FALSE(IsSearch("http://www.google.com/webhp/nogood#q=something"));
206  EXPECT_FALSE(IsSearch(std::string()));
207
208  // Case sensitive paths.
209  EXPECT_FALSE(IsSearch("http://www.google.com/SEARCH?q=something"));
210  EXPECT_FALSE(IsSearch("http://www.google.com/WEBHP#q=something"));
211}
212
213TEST(GoogleUtilTest, GoogleDomains) {
214  // Test some good Google domains (valid TLDs).
215  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com"),
216                                google_util::ALLOW_SUBDOMAIN,
217                                google_util::DISALLOW_NON_STANDARD_PORTS));
218  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://google.com"),
219                                google_util::ALLOW_SUBDOMAIN,
220                                google_util::DISALLOW_NON_STANDARD_PORTS));
221  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.ca"),
222                                google_util::ALLOW_SUBDOMAIN,
223                                google_util::DISALLOW_NON_STANDARD_PORTS));
224  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.biz.tj"),
225                                google_util::ALLOW_SUBDOMAIN,
226                                google_util::DISALLOW_NON_STANDARD_PORTS));
227  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com/search?q=thing"),
228                                google_util::ALLOW_SUBDOMAIN,
229                                google_util::DISALLOW_NON_STANDARD_PORTS));
230  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com/webhp"),
231                                google_util::ALLOW_SUBDOMAIN,
232                                google_util::DISALLOW_NON_STANDARD_PORTS));
233
234  // Test some bad Google domains (invalid TLDs).
235  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.notrealtld"),
236                                 google_util::ALLOW_SUBDOMAIN,
237                                 google_util::DISALLOW_NON_STANDARD_PORTS));
238  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.faketld/search?q=q"),
239                                 google_util::ALLOW_SUBDOMAIN,
240                                 google_util::DISALLOW_NON_STANDARD_PORTS));
241  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.yahoo.com"),
242                                 google_util::ALLOW_SUBDOMAIN,
243                                 google_util::DISALLOW_NON_STANDARD_PORTS));
244
245  // Test subdomain checks.
246  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://images.google.com"),
247                                google_util::ALLOW_SUBDOMAIN,
248                                google_util::DISALLOW_NON_STANDARD_PORTS));
249  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://images.google.com"),
250                                 google_util::DISALLOW_SUBDOMAIN,
251                                 google_util::DISALLOW_NON_STANDARD_PORTS));
252  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://google.com"),
253                                google_util::DISALLOW_SUBDOMAIN,
254                                google_util::DISALLOW_NON_STANDARD_PORTS));
255  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com"),
256                                google_util::DISALLOW_SUBDOMAIN,
257                                google_util::DISALLOW_NON_STANDARD_PORTS));
258
259  // Port and scheme checks.
260  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com:80"),
261                                google_util::DISALLOW_SUBDOMAIN,
262                                google_util::DISALLOW_NON_STANDARD_PORTS));
263  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.com:123"),
264                                 google_util::DISALLOW_SUBDOMAIN,
265                                 google_util::DISALLOW_NON_STANDARD_PORTS));
266  EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.google.com:443"),
267                                google_util::DISALLOW_SUBDOMAIN,
268                                google_util::DISALLOW_NON_STANDARD_PORTS));
269  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.com:123"),
270                                 google_util::DISALLOW_SUBDOMAIN,
271                                 google_util::DISALLOW_NON_STANDARD_PORTS));
272  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com:123"),
273                                google_util::DISALLOW_SUBDOMAIN,
274                                google_util::ALLOW_NON_STANDARD_PORTS));
275  EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.google.com:123"),
276                                google_util::DISALLOW_SUBDOMAIN,
277                                google_util::ALLOW_NON_STANDARD_PORTS));
278  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com:80"),
279                                google_util::DISALLOW_SUBDOMAIN,
280                                google_util::ALLOW_NON_STANDARD_PORTS));
281  EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.google.com:443"),
282                                google_util::DISALLOW_SUBDOMAIN,
283                                google_util::ALLOW_NON_STANDARD_PORTS));
284  EXPECT_FALSE(IsGoogleDomainUrl(GURL("file://www.google.com"),
285                                 google_util::DISALLOW_SUBDOMAIN,
286                                 google_util::DISALLOW_NON_STANDARD_PORTS));
287  EXPECT_FALSE(IsGoogleDomainUrl(GURL("doesnotexist://www.google.com"),
288                                 google_util::DISALLOW_SUBDOMAIN,
289                                 google_util::DISALLOW_NON_STANDARD_PORTS));
290}
291
292TEST(GoogleUtilTest, GoogleBaseURLNotSpecified) {
293  // When no command-line flag is specified, no input to
294  // StartsWithCommandLineGoogleBaseURL() should return true.
295  EXPECT_FALSE(StartsWithBaseURL(std::string()));
296  EXPECT_FALSE(StartsWithBaseURL("http://www.foo.com/"));
297  EXPECT_FALSE(StartsWithBaseURL("http://www.google.com/"));
298
299  // By default, none of the IsGoogleXXX functions should return true for a
300  // "foo.com" URL.
301  EXPECT_FALSE(IsGoogleHostname("www.foo.com",
302                                google_util::DISALLOW_SUBDOMAIN));
303  EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.foo.com/xyz"),
304                                 google_util::DISALLOW_SUBDOMAIN,
305                                 google_util::DISALLOW_NON_STANDARD_PORTS));
306  EXPECT_FALSE(IsGoogleDomainUrl(GURL("https://www.foo.com/"),
307                                 google_util::DISALLOW_SUBDOMAIN,
308                                 google_util::DISALLOW_NON_STANDARD_PORTS));
309  EXPECT_FALSE(IsHomePage("https://www.foo.com/webhp"));
310  EXPECT_FALSE(IsSearch("http://www.foo.com/search?q=a"));
311
312  // Override the Google base URL on the command line.
313  CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL,
314                                                      "http://www.foo.com/");
315
316  // Only URLs which start with exactly the string on the command line should
317  // cause StartsWithCommandLineGoogleBaseURL() to return true.
318  EXPECT_FALSE(StartsWithBaseURL(std::string()));
319  EXPECT_TRUE(StartsWithBaseURL("http://www.foo.com/"));
320  EXPECT_TRUE(StartsWithBaseURL("http://www.foo.com/abc"));
321  EXPECT_FALSE(StartsWithBaseURL("https://www.foo.com/"));
322  EXPECT_FALSE(StartsWithBaseURL("http://www.google.com/"));
323
324  // The various IsGoogleXXX functions should respect the command-line flag.
325  EXPECT_TRUE(IsGoogleHostname("www.foo.com", google_util::DISALLOW_SUBDOMAIN));
326  EXPECT_FALSE(IsGoogleHostname("foo.com", google_util::ALLOW_SUBDOMAIN));
327  EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.foo.com/xyz"),
328                                google_util::DISALLOW_SUBDOMAIN,
329                                google_util::DISALLOW_NON_STANDARD_PORTS));
330  EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.foo.com/"),
331                                google_util::DISALLOW_SUBDOMAIN,
332                                google_util::DISALLOW_NON_STANDARD_PORTS));
333  EXPECT_TRUE(IsHomePage("https://www.foo.com/webhp"));
334  EXPECT_FALSE(IsHomePage("http://www.foo.com/xyz"));
335  EXPECT_TRUE(IsSearch("http://www.foo.com/search?q=a"));
336}
337
338TEST(GoogleUtilTest, GoogleBaseURLDisallowQuery) {
339  CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL,
340                                                      "http://www.foo.com/?q=");
341  EXPECT_FALSE(google_util::CommandLineGoogleBaseURL().is_valid());
342}
343
344TEST(GoogleUtilTest, GoogleBaseURLDisallowRef) {
345  CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL,
346                                                      "http://www.foo.com/#q=");
347  EXPECT_FALSE(google_util::CommandLineGoogleBaseURL().is_valid());
348}
349
350TEST(GoogleUtilTest, GoogleBaseURLFixup) {
351  CommandLine::ForCurrentProcess()->AppendSwitchASCII(switches::kGoogleBaseURL,
352                                                      "www.foo.com");
353  ASSERT_TRUE(google_util::CommandLineGoogleBaseURL().is_valid());
354  EXPECT_EQ("http://www.foo.com/",
355            google_util::CommandLineGoogleBaseURL().spec());
356}
357
358TEST(GoogleUtilTest, YoutubeDomains) {
359  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://www.youtube.com"),
360                                 google_util::ALLOW_SUBDOMAIN,
361                                 google_util::DISALLOW_NON_STANDARD_PORTS));
362  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://youtube.com"),
363                                 google_util::ALLOW_SUBDOMAIN,
364                                 google_util::DISALLOW_NON_STANDARD_PORTS));
365  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://youtube.com/path/main.html"),
366                                 google_util::ALLOW_SUBDOMAIN,
367                                 google_util::DISALLOW_NON_STANDARD_PORTS));
368  EXPECT_FALSE(IsYoutubeDomainUrl(GURL("http://notyoutube.com"),
369                                 google_util::ALLOW_SUBDOMAIN,
370                                 google_util::DISALLOW_NON_STANDARD_PORTS));
371
372  // TLD checks.
373  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://www.youtube.ca"),
374                                 google_util::ALLOW_SUBDOMAIN,
375                                 google_util::DISALLOW_NON_STANDARD_PORTS));
376  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://www.youtube.co.uk"),
377                                 google_util::ALLOW_SUBDOMAIN,
378                                 google_util::DISALLOW_NON_STANDARD_PORTS));
379  EXPECT_FALSE(IsYoutubeDomainUrl(GURL("http://www.youtube.notrealtld"),
380                                  google_util::ALLOW_SUBDOMAIN,
381                                  google_util::DISALLOW_NON_STANDARD_PORTS));
382
383  // Subdomain checks.
384  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://images.youtube.com"),
385                                 google_util::ALLOW_SUBDOMAIN,
386                                 google_util::DISALLOW_NON_STANDARD_PORTS));
387  EXPECT_FALSE(IsYoutubeDomainUrl(GURL("http://images.youtube.com"),
388                                  google_util::DISALLOW_SUBDOMAIN,
389                                  google_util::DISALLOW_NON_STANDARD_PORTS));
390
391  // Port and scheme checks.
392  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://www.youtube.com:80"),
393                                 google_util::DISALLOW_SUBDOMAIN,
394                                 google_util::DISALLOW_NON_STANDARD_PORTS));
395  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("https://www.youtube.com:443"),
396                                 google_util::DISALLOW_SUBDOMAIN,
397                                 google_util::DISALLOW_NON_STANDARD_PORTS));
398  EXPECT_FALSE(IsYoutubeDomainUrl(GURL("http://www.youtube.com:123"),
399                                  google_util::DISALLOW_SUBDOMAIN,
400                                  google_util::DISALLOW_NON_STANDARD_PORTS));
401  EXPECT_TRUE(IsYoutubeDomainUrl(GURL("http://www.youtube.com:123"),
402                                 google_util::DISALLOW_SUBDOMAIN,
403                                 google_util::ALLOW_NON_STANDARD_PORTS));
404  EXPECT_FALSE(IsYoutubeDomainUrl(GURL("file://www.youtube.com"),
405                                  google_util::DISALLOW_SUBDOMAIN,
406                                  google_util::DISALLOW_NON_STANDARD_PORTS));
407}
408