OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/strings/utf_string_conversions.h" | |
7 #include "chrome/browser/google/google_url_tracker.h" | 6 #include "chrome/browser/google/google_url_tracker.h" |
8 #include "chrome/browser/google/google_util.h" | 7 #include "chrome/browser/google/google_util.h" |
9 #include "chrome/common/chrome_switches.h" | 8 #include "chrome/common/chrome_switches.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
11 | 10 |
12 using google_util::IsGoogleDomainUrl; | 11 using google_util::IsGoogleDomainUrl; |
13 using google_util::IsGoogleHomePageUrl; | 12 |
14 using google_util::IsGoogleSearchUrl; | 13 |
14 // Helpers -------------------------------------------------------------------- | |
Jered
2013/06/26 00:32:16
Omit the ------- stuff here and below.
Peter Kasting
2013/06/26 00:40:27
This is how we separate sections of files in a lar
| |
15 | |
16 namespace { | |
17 | |
18 // These functions merely provide brevity in the callers. | |
19 | |
20 bool IsHomePage(const std::string& url) { | |
21 return google_util::IsGoogleHomePageUrl(GURL(url)); | |
22 } | |
23 | |
24 bool IsSearch(const std::string& url) { | |
25 return google_util::IsGoogleSearchUrl(GURL(url)); | |
26 } | |
27 | |
28 bool StartsWithBaseURL(const std::string& url) { | |
29 return google_util::StartsWithCommandLineGoogleBaseURL(GURL(url)); | |
30 } | |
31 | |
32 } // namespace | |
33 | |
34 | |
35 // Actual tests --------------------------------------------------------------- | |
15 | 36 |
16 TEST(GoogleUtilTest, GoodHomePagesNonSecure) { | 37 TEST(GoogleUtilTest, GoodHomePagesNonSecure) { |
17 // Valid home page hosts. | 38 // Valid home page hosts. |
18 EXPECT_TRUE(IsGoogleHomePageUrl(GoogleURLTracker::kDefaultGoogleHomepage)); | 39 EXPECT_TRUE(IsHomePage(GoogleURLTracker::kDefaultGoogleHomepage)); |
19 EXPECT_TRUE(IsGoogleHomePageUrl("http://google.com")); | 40 EXPECT_TRUE(IsHomePage("http://google.com")); |
20 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com")); | 41 EXPECT_TRUE(IsHomePage("http://www.google.com")); |
21 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.ca")); | 42 EXPECT_TRUE(IsHomePage("http://www.google.ca")); |
22 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.co.uk")); | 43 EXPECT_TRUE(IsHomePage("http://www.google.co.uk")); |
23 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com:80/")); | 44 EXPECT_TRUE(IsHomePage("http://www.google.com:80/")); |
24 | 45 |
25 // Only the paths /, /webhp, and /ig.* are valid. Query parameters are | 46 // Only the paths /, /webhp, and /ig.* are valid. Query parameters are |
26 // ignored. | 47 // ignored. |
27 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/")); | 48 EXPECT_TRUE(IsHomePage("http://www.google.com/")); |
28 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/webhp")); | 49 EXPECT_TRUE(IsHomePage("http://www.google.com/webhp")); |
29 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/webhp?rlz=TEST")); | 50 EXPECT_TRUE(IsHomePage("http://www.google.com/webhp?rlz=TEST")); |
30 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/ig")); | 51 EXPECT_TRUE(IsHomePage("http://www.google.com/ig")); |
31 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/ig/foo")); | 52 EXPECT_TRUE(IsHomePage("http://www.google.com/ig/foo")); |
32 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/ig?rlz=TEST")); | 53 EXPECT_TRUE(IsHomePage("http://www.google.com/ig?rlz=TEST")); |
33 EXPECT_TRUE(IsGoogleHomePageUrl("http://www.google.com/ig/foo?rlz=TEST")); | 54 EXPECT_TRUE(IsHomePage("http://www.google.com/ig/foo?rlz=TEST")); |
34 } | 55 } |
35 | 56 |
36 TEST(GoogleUtilTest, GoodHomePagesSecure) { | 57 TEST(GoogleUtilTest, GoodHomePagesSecure) { |
37 // Valid home page hosts. | 58 // Valid home page hosts. |
38 EXPECT_TRUE(IsGoogleHomePageUrl("https://google.com")); | 59 EXPECT_TRUE(IsHomePage("https://google.com")); |
39 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com")); | 60 EXPECT_TRUE(IsHomePage("https://www.google.com")); |
40 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.ca")); | 61 EXPECT_TRUE(IsHomePage("https://www.google.ca")); |
41 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.co.uk")); | 62 EXPECT_TRUE(IsHomePage("https://www.google.co.uk")); |
42 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com:443/")); | 63 EXPECT_TRUE(IsHomePage("https://www.google.com:443/")); |
43 | 64 |
44 // Only the paths /, /webhp, and /ig.* are valid. Query parameters are | 65 // Only the paths /, /webhp, and /ig.* are valid. Query parameters are |
45 // ignored. | 66 // ignored. |
46 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/")); | 67 EXPECT_TRUE(IsHomePage("https://www.google.com/")); |
47 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/webhp")); | 68 EXPECT_TRUE(IsHomePage("https://www.google.com/webhp")); |
48 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/webhp?rlz=TEST")); | 69 EXPECT_TRUE(IsHomePage("https://www.google.com/webhp?rlz=TEST")); |
49 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/ig")); | 70 EXPECT_TRUE(IsHomePage("https://www.google.com/ig")); |
50 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/ig/foo")); | 71 EXPECT_TRUE(IsHomePage("https://www.google.com/ig/foo")); |
51 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/ig?rlz=TEST")); | 72 EXPECT_TRUE(IsHomePage("https://www.google.com/ig?rlz=TEST")); |
52 EXPECT_TRUE(IsGoogleHomePageUrl("https://www.google.com/ig/foo?rlz=TEST")); | 73 EXPECT_TRUE(IsHomePage("https://www.google.com/ig/foo?rlz=TEST")); |
53 } | 74 } |
54 | 75 |
55 TEST(GoogleUtilTest, BadHomePages) { | 76 TEST(GoogleUtilTest, BadHomePages) { |
56 EXPECT_FALSE(IsGoogleHomePageUrl(std::string())); | 77 EXPECT_FALSE(IsHomePage(std::string())); |
57 | 78 |
58 // If specified, only the "www" subdomain is OK. | 79 // If specified, only the "www" subdomain is OK. |
59 EXPECT_FALSE(IsGoogleHomePageUrl("http://maps.google.com")); | 80 EXPECT_FALSE(IsHomePage("http://maps.google.com")); |
60 EXPECT_FALSE(IsGoogleHomePageUrl("http://foo.google.com")); | 81 EXPECT_FALSE(IsHomePage("http://foo.google.com")); |
61 | 82 |
62 // No non-standard port numbers. | 83 // No non-standard port numbers. |
63 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com:1234")); | 84 EXPECT_FALSE(IsHomePage("http://www.google.com:1234")); |
64 EXPECT_FALSE(IsGoogleHomePageUrl("https://www.google.com:5678")); | 85 EXPECT_FALSE(IsHomePage("https://www.google.com:5678")); |
65 | 86 |
66 // Invalid TLDs. | 87 // Invalid TLDs. |
67 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.abc")); | 88 EXPECT_FALSE(IsHomePage("http://www.google.abc")); |
68 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com.abc")); | 89 EXPECT_FALSE(IsHomePage("http://www.google.com.abc")); |
69 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.abc.com")); | 90 EXPECT_FALSE(IsHomePage("http://www.google.abc.com")); |
70 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.ab.cd")); | 91 EXPECT_FALSE(IsHomePage("http://www.google.ab.cd")); |
71 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.uk.qq")); | 92 EXPECT_FALSE(IsHomePage("http://www.google.uk.qq")); |
72 | 93 |
73 // Must be http or https. | 94 // Must be http or https. |
74 EXPECT_FALSE(IsGoogleHomePageUrl("ftp://www.google.com")); | 95 EXPECT_FALSE(IsHomePage("ftp://www.google.com")); |
75 EXPECT_FALSE(IsGoogleHomePageUrl("file://does/not/exist")); | 96 EXPECT_FALSE(IsHomePage("file://does/not/exist")); |
76 EXPECT_FALSE(IsGoogleHomePageUrl("bad://www.google.com")); | 97 EXPECT_FALSE(IsHomePage("bad://www.google.com")); |
77 EXPECT_FALSE(IsGoogleHomePageUrl("www.google.com")); | 98 EXPECT_FALSE(IsHomePage("www.google.com")); |
78 | 99 |
79 // Only the paths /, /webhp, and /ig.* are valid. | 100 // Only the paths /, /webhp, and /ig.* are valid. |
80 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com/abc")); | 101 EXPECT_FALSE(IsHomePage("http://www.google.com/abc")); |
81 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com/webhpabc")); | 102 EXPECT_FALSE(IsHomePage("http://www.google.com/webhpabc")); |
82 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com/webhp/abc")); | 103 EXPECT_FALSE(IsHomePage("http://www.google.com/webhp/abc")); |
83 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com/abcig")); | 104 EXPECT_FALSE(IsHomePage("http://www.google.com/abcig")); |
84 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com/webhp/ig")); | 105 EXPECT_FALSE(IsHomePage("http://www.google.com/webhp/ig")); |
85 | 106 |
86 // A search URL should not be identified as a home page URL. | 107 // A search URL should not be identified as a home page URL. |
87 EXPECT_FALSE(IsGoogleHomePageUrl("http://www.google.com/search?q=something")); | 108 EXPECT_FALSE(IsHomePage("http://www.google.com/search?q=something")); |
88 | 109 |
89 // Path is case sensitive. | 110 // Path is case sensitive. |
90 EXPECT_FALSE(IsGoogleHomePageUrl("https://www.google.com/WEBHP")); | 111 EXPECT_FALSE(IsHomePage("https://www.google.com/WEBHP")); |
91 } | 112 } |
92 | 113 |
93 TEST(GoogleUtilTest, GoodSearchPagesNonSecure) { | 114 TEST(GoogleUtilTest, GoodSearchPagesNonSecure) { |
94 // Queries with path "/search" need to have the query parameter in either | 115 // Queries with path "/search" need to have the query parameter in either |
95 // the url parameter or the hash fragment. | 116 // the url parameter or the hash fragment. |
96 EXPECT_TRUE(IsGoogleSearchUrl( | 117 EXPECT_TRUE(IsSearch("http://www.google.com/search?q=something")); |
97 "http://www.google.com/search?q=something")); | 118 EXPECT_TRUE(IsSearch("http://www.google.com/search#q=something")); |
98 EXPECT_TRUE(IsGoogleSearchUrl( | 119 EXPECT_TRUE(IsSearch("http://www.google.com/search?name=bob&q=something")); |
99 "http://www.google.com/search#q=something")); | 120 EXPECT_TRUE(IsSearch("http://www.google.com/search?name=bob#q=something")); |
100 EXPECT_TRUE(IsGoogleSearchUrl( | 121 EXPECT_TRUE(IsSearch("http://www.google.com/search?name=bob#age=24&q=thing")); |
101 "http://www.google.com/search?name=bob&q=something")); | 122 EXPECT_TRUE(IsSearch("http://www.google.co.uk/search?q=something")); |
102 EXPECT_TRUE(IsGoogleSearchUrl( | |
103 "http://www.google.com/search?name=bob#q=something")); | |
104 EXPECT_TRUE(IsGoogleSearchUrl( | |
105 "http://www.google.com/search?name=bob#age=24&q=something")); | |
106 EXPECT_TRUE(IsGoogleSearchUrl( | |
107 "http://www.google.co.uk/search?q=something")); | |
108 // It's actually valid for both to have the query parameter. | 123 // It's actually valid for both to have the query parameter. |
109 EXPECT_TRUE(IsGoogleSearchUrl( | 124 EXPECT_TRUE(IsSearch("http://www.google.com/search?q=something#q=other")); |
110 "http://www.google.com/search?q=something#q=other")); | |
111 | 125 |
112 // Queries with path "/webhp", "/" or "" need to have the query parameter in | 126 // Queries with path "/webhp", "/" or "" need to have the query parameter in |
113 // the hash fragment. | 127 // the hash fragment. |
114 EXPECT_TRUE(IsGoogleSearchUrl( | 128 EXPECT_TRUE(IsSearch("http://www.google.com/webhp#q=something")); |
115 "http://www.google.com/webhp#q=something")); | 129 EXPECT_TRUE(IsSearch("http://www.google.com/webhp#name=bob&q=something")); |
116 EXPECT_TRUE(IsGoogleSearchUrl( | 130 EXPECT_TRUE(IsSearch("http://www.google.com/webhp?name=bob#q=something")); |
117 "http://www.google.com/webhp#name=bob&q=something")); | 131 EXPECT_TRUE(IsSearch("http://www.google.com/webhp?name=bob#age=24&q=thing")); |
118 EXPECT_TRUE(IsGoogleSearchUrl( | 132 |
119 "http://www.google.com/webhp?name=bob#q=something")); | 133 EXPECT_TRUE(IsSearch("http://www.google.com/#q=something")); |
120 EXPECT_TRUE(IsGoogleSearchUrl( | 134 EXPECT_TRUE(IsSearch("http://www.google.com/#name=bob&q=something")); |
121 "http://www.google.com/webhp?name=bob#age=24&q=something")); | 135 EXPECT_TRUE(IsSearch("http://www.google.com/?name=bob#q=something")); |
122 | 136 EXPECT_TRUE(IsSearch("http://www.google.com/?name=bob#age=24&q=something")); |
123 EXPECT_TRUE(IsGoogleSearchUrl( | 137 |
124 "http://www.google.com/#q=something")); | 138 EXPECT_TRUE(IsSearch("http://www.google.com#q=something")); |
125 EXPECT_TRUE(IsGoogleSearchUrl( | 139 EXPECT_TRUE(IsSearch("http://www.google.com#name=bob&q=something")); |
126 "http://www.google.com/#name=bob&q=something")); | 140 EXPECT_TRUE(IsSearch("http://www.google.com?name=bob#q=something")); |
127 EXPECT_TRUE(IsGoogleSearchUrl( | 141 EXPECT_TRUE(IsSearch("http://www.google.com?name=bob#age=24&q=something")); |
128 "http://www.google.com/?name=bob#q=something")); | |
129 EXPECT_TRUE(IsGoogleSearchUrl( | |
130 "http://www.google.com/?name=bob#age=24&q=something")); | |
131 | |
132 EXPECT_TRUE(IsGoogleSearchUrl( | |
133 "http://www.google.com#q=something")); | |
134 EXPECT_TRUE(IsGoogleSearchUrl( | |
135 "http://www.google.com#name=bob&q=something")); | |
136 EXPECT_TRUE(IsGoogleSearchUrl( | |
137 "http://www.google.com?name=bob#q=something")); | |
138 EXPECT_TRUE(IsGoogleSearchUrl( | |
139 "http://www.google.com?name=bob#age=24&q=something")); | |
140 } | 142 } |
141 | 143 |
142 TEST(GoogleUtilTest, GoodSearchPagesSecure) { | 144 TEST(GoogleUtilTest, GoodSearchPagesSecure) { |
143 // Queries with path "/search" need to have the query parameter in either | 145 // Queries with path "/search" need to have the query parameter in either |
144 // the url parameter or the hash fragment. | 146 // the url parameter or the hash fragment. |
145 EXPECT_TRUE(IsGoogleSearchUrl( | 147 EXPECT_TRUE(IsSearch("https://www.google.com/search?q=something")); |
146 "https://www.google.com/search?q=something")); | 148 EXPECT_TRUE(IsSearch("https://www.google.com/search#q=something")); |
147 EXPECT_TRUE(IsGoogleSearchUrl( | 149 EXPECT_TRUE(IsSearch("https://www.google.com/search?name=bob&q=something")); |
148 "https://www.google.com/search#q=something")); | 150 EXPECT_TRUE(IsSearch("https://www.google.com/search?name=bob#q=something")); |
149 EXPECT_TRUE(IsGoogleSearchUrl( | 151 EXPECT_TRUE(IsSearch("https://www.google.com/search?name=bob#age=24&q=q")); |
150 "https://www.google.com/search?name=bob&q=something")); | 152 EXPECT_TRUE(IsSearch("https://www.google.co.uk/search?q=something")); |
151 EXPECT_TRUE(IsGoogleSearchUrl( | |
152 "https://www.google.com/search?name=bob#q=something")); | |
153 EXPECT_TRUE(IsGoogleSearchUrl( | |
154 "https://www.google.com/search?name=bob#age=24&q=something")); | |
155 EXPECT_TRUE(IsGoogleSearchUrl( | |
156 "https://www.google.co.uk/search?q=something")); | |
157 // It's actually valid for both to have the query parameter. | 153 // It's actually valid for both to have the query parameter. |
158 EXPECT_TRUE(IsGoogleSearchUrl( | 154 EXPECT_TRUE(IsSearch("https://www.google.com/search?q=something#q=other")); |
159 "https://www.google.com/search?q=something#q=other")); | |
160 | 155 |
161 // Queries with path "/webhp", "/" or "" need to have the query parameter in | 156 // Queries with path "/webhp", "/" or "" need to have the query parameter in |
162 // the hash fragment. | 157 // the hash fragment. |
163 EXPECT_TRUE(IsGoogleSearchUrl( | 158 EXPECT_TRUE(IsSearch("https://www.google.com/webhp#q=something")); |
164 "https://www.google.com/webhp#q=something")); | 159 EXPECT_TRUE(IsSearch("https://www.google.com/webhp#name=bob&q=something")); |
165 EXPECT_TRUE(IsGoogleSearchUrl( | 160 EXPECT_TRUE(IsSearch("https://www.google.com/webhp?name=bob#q=something")); |
166 "https://www.google.com/webhp#name=bob&q=something")); | 161 EXPECT_TRUE(IsSearch("https://www.google.com/webhp?name=bob#age=24&q=thing")); |
167 EXPECT_TRUE(IsGoogleSearchUrl( | 162 |
168 "https://www.google.com/webhp?name=bob#q=something")); | 163 EXPECT_TRUE(IsSearch("https://www.google.com/#q=something")); |
169 EXPECT_TRUE(IsGoogleSearchUrl( | 164 EXPECT_TRUE(IsSearch("https://www.google.com/#name=bob&q=something")); |
170 "https://www.google.com/webhp?name=bob#age=24&q=something")); | 165 EXPECT_TRUE(IsSearch("https://www.google.com/?name=bob#q=something")); |
171 | 166 EXPECT_TRUE(IsSearch("https://www.google.com/?name=bob#age=24&q=something")); |
172 EXPECT_TRUE(IsGoogleSearchUrl( | 167 |
173 "https://www.google.com/#q=something")); | 168 EXPECT_TRUE(IsSearch("https://www.google.com#q=something")); |
174 EXPECT_TRUE(IsGoogleSearchUrl( | 169 EXPECT_TRUE(IsSearch("https://www.google.com#name=bob&q=something")); |
175 "https://www.google.com/#name=bob&q=something")); | 170 EXPECT_TRUE(IsSearch("https://www.google.com?name=bob#q=something")); |
176 EXPECT_TRUE(IsGoogleSearchUrl( | 171 EXPECT_TRUE(IsSearch("https://www.google.com?name=bob#age=24&q=something")); |
177 "https://www.google.com/?name=bob#q=something")); | |
178 EXPECT_TRUE(IsGoogleSearchUrl( | |
179 "https://www.google.com/?name=bob#age=24&q=something")); | |
180 | |
181 EXPECT_TRUE(IsGoogleSearchUrl( | |
182 "https://www.google.com#q=something")); | |
183 EXPECT_TRUE(IsGoogleSearchUrl( | |
184 "https://www.google.com#name=bob&q=something")); | |
185 EXPECT_TRUE(IsGoogleSearchUrl( | |
186 "https://www.google.com?name=bob#q=something")); | |
187 EXPECT_TRUE(IsGoogleSearchUrl( | |
188 "https://www.google.com?name=bob#age=24&q=something")); | |
189 } | 172 } |
190 | 173 |
191 TEST(GoogleUtilTest, BadSearches) { | 174 TEST(GoogleUtilTest, BadSearches) { |
192 // A home page URL should not be identified as a search URL. | 175 // A home page URL should not be identified as a search URL. |
193 EXPECT_FALSE(IsGoogleSearchUrl(GoogleURLTracker::kDefaultGoogleHomepage)); | 176 EXPECT_FALSE(IsSearch(GoogleURLTracker::kDefaultGoogleHomepage)); |
194 EXPECT_FALSE(IsGoogleSearchUrl("http://google.com")); | 177 EXPECT_FALSE(IsSearch("http://google.com")); |
195 EXPECT_FALSE(IsGoogleSearchUrl("http://www.google.com")); | 178 EXPECT_FALSE(IsSearch("http://www.google.com")); |
196 EXPECT_FALSE(IsGoogleSearchUrl("http://www.google.com/search")); | 179 EXPECT_FALSE(IsSearch("http://www.google.com/search")); |
197 EXPECT_FALSE(IsGoogleSearchUrl("http://www.google.com/search?")); | 180 EXPECT_FALSE(IsSearch("http://www.google.com/search?")); |
198 | 181 |
199 // Must be http or https | 182 // Must be http or https |
200 EXPECT_FALSE(IsGoogleSearchUrl( | 183 EXPECT_FALSE(IsSearch("ftp://www.google.com/search?q=something")); |
201 "ftp://www.google.com/search?q=something")); | 184 EXPECT_FALSE(IsSearch("file://does/not/exist/search?q=something")); |
202 EXPECT_FALSE(IsGoogleSearchUrl( | 185 EXPECT_FALSE(IsSearch("bad://www.google.com/search?q=something")); |
203 "file://does/not/exist/search?q=something")); | 186 EXPECT_FALSE(IsSearch("www.google.com/search?q=something")); |
204 EXPECT_FALSE(IsGoogleSearchUrl( | |
205 "bad://www.google.com/search?q=something")); | |
206 EXPECT_FALSE(IsGoogleSearchUrl( | |
207 "www.google.com/search?q=something")); | |
208 | 187 |
209 // Can't have an empty query parameter. | 188 // Can't have an empty query parameter. |
210 EXPECT_FALSE(IsGoogleSearchUrl( | 189 EXPECT_FALSE(IsSearch("http://www.google.com/search?q=")); |
211 "http://www.google.com/search?q=")); | 190 EXPECT_FALSE(IsSearch("http://www.google.com/search?name=bob&q=")); |
212 EXPECT_FALSE(IsGoogleSearchUrl( | 191 EXPECT_FALSE(IsSearch("http://www.google.com/webhp#q=")); |
213 "http://www.google.com/search?name=bob&q=")); | 192 EXPECT_FALSE(IsSearch("http://www.google.com/webhp#name=bob&q=")); |
214 EXPECT_FALSE(IsGoogleSearchUrl( | |
215 "http://www.google.com/webhp#q=")); | |
216 EXPECT_FALSE(IsGoogleSearchUrl( | |
217 "http://www.google.com/webhp#name=bob&q=")); | |
218 | 193 |
219 // Home page searches without a hash fragment query parameter are invalid. | 194 // Home page searches without a hash fragment query parameter are invalid. |
220 EXPECT_FALSE(IsGoogleSearchUrl( | 195 EXPECT_FALSE(IsSearch("http://www.google.com/webhp?q=something")); |
221 "http://www.google.com/webhp?q=something")); | 196 EXPECT_FALSE(IsSearch("http://www.google.com/webhp?q=something#no=good")); |
222 EXPECT_FALSE(IsGoogleSearchUrl( | 197 EXPECT_FALSE(IsSearch("http://www.google.com/webhp?name=bob&q=something")); |
223 "http://www.google.com/webhp?q=something#no=good")); | 198 EXPECT_FALSE(IsSearch("http://www.google.com/?q=something")); |
224 EXPECT_FALSE(IsGoogleSearchUrl( | 199 EXPECT_FALSE(IsSearch("http://www.google.com?q=something")); |
225 "http://www.google.com/webhp?name=bob&q=something")); | |
226 EXPECT_FALSE(IsGoogleSearchUrl( | |
227 "http://www.google.com/?q=something")); | |
228 EXPECT_FALSE(IsGoogleSearchUrl( | |
229 "http://www.google.com?q=something")); | |
230 | 200 |
231 // Some paths are outright invalid as searches. | 201 // Some paths are outright invalid as searches. |
232 EXPECT_FALSE(IsGoogleSearchUrl( | 202 EXPECT_FALSE(IsSearch("http://www.google.com/notreal?q=something")); |
233 "http://www.google.com/notreal?q=something")); | 203 EXPECT_FALSE(IsSearch("http://www.google.com/chrome?q=something")); |
234 EXPECT_FALSE(IsGoogleSearchUrl( | 204 EXPECT_FALSE(IsSearch("http://www.google.com/search/nogood?q=something")); |
235 "http://www.google.com/chrome?q=something")); | 205 EXPECT_FALSE(IsSearch("http://www.google.com/webhp/nogood#q=something")); |
236 EXPECT_FALSE(IsGoogleSearchUrl( | 206 EXPECT_FALSE(IsSearch(std::string())); |
237 "http://www.google.com/search/nogood?q=something")); | |
238 EXPECT_FALSE(IsGoogleSearchUrl( | |
239 "http://www.google.com/webhp/nogood#q=something")); | |
240 EXPECT_FALSE(IsGoogleSearchUrl(std::string())); | |
241 | 207 |
242 // Case sensitive paths. | 208 // Case sensitive paths. |
243 EXPECT_FALSE(IsGoogleSearchUrl( | 209 EXPECT_FALSE(IsSearch("http://www.google.com/SEARCH?q=something")); |
244 "http://www.google.com/SEARCH?q=something")); | 210 EXPECT_FALSE(IsSearch("http://www.google.com/WEBHP#q=something")); |
245 EXPECT_FALSE(IsGoogleSearchUrl( | |
246 "http://www.google.com/WEBHP#q=something")); | |
247 } | 211 } |
248 | 212 |
249 TEST(GoogleUtilTest, GoogleDomains) { | 213 TEST(GoogleUtilTest, GoogleDomains) { |
250 // Test some good Google domains (valid TLDs). | 214 // Test some good Google domains (valid TLDs). |
251 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com", | 215 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com"), |
252 google_util::ALLOW_SUBDOMAIN, | 216 google_util::ALLOW_SUBDOMAIN, |
253 google_util::DISALLOW_NON_STANDARD_PORTS)); | 217 google_util::DISALLOW_NON_STANDARD_PORTS)); |
254 EXPECT_TRUE(IsGoogleDomainUrl("http://google.com", | 218 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://google.com"), |
255 google_util::ALLOW_SUBDOMAIN, | 219 google_util::ALLOW_SUBDOMAIN, |
256 google_util::DISALLOW_NON_STANDARD_PORTS)); | 220 google_util::DISALLOW_NON_STANDARD_PORTS)); |
257 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.ca", | 221 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.ca"), |
258 google_util::ALLOW_SUBDOMAIN, | 222 google_util::ALLOW_SUBDOMAIN, |
259 google_util::DISALLOW_NON_STANDARD_PORTS)); | 223 google_util::DISALLOW_NON_STANDARD_PORTS)); |
260 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.biz.tj", | 224 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.biz.tj"), |
261 google_util::ALLOW_SUBDOMAIN, | 225 google_util::ALLOW_SUBDOMAIN, |
262 google_util::DISALLOW_NON_STANDARD_PORTS)); | 226 google_util::DISALLOW_NON_STANDARD_PORTS)); |
263 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com/search?q=something", | 227 EXPECT_TRUE(IsGoogleDomainUrl( |
264 google_util::ALLOW_SUBDOMAIN, | 228 GURL("http://www.google.com/search?q=something"), |
265 google_util::DISALLOW_NON_STANDARD_PORTS)); | 229 google_util::ALLOW_SUBDOMAIN, google_util::DISALLOW_NON_STANDARD_PORTS)); |
266 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com/webhp", | 230 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com/webhp"), |
267 google_util::ALLOW_SUBDOMAIN, | 231 google_util::ALLOW_SUBDOMAIN, |
268 google_util::DISALLOW_NON_STANDARD_PORTS)); | 232 google_util::DISALLOW_NON_STANDARD_PORTS)); |
269 | 233 |
270 // Test some bad Google domains (invalid TLDs). | 234 // Test some bad Google domains (invalid TLDs). |
271 EXPECT_FALSE(IsGoogleDomainUrl("http://www.google.notrealtld", | 235 EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.notrealtld"), |
272 google_util::ALLOW_SUBDOMAIN, | 236 google_util::ALLOW_SUBDOMAIN, |
273 google_util::DISALLOW_NON_STANDARD_PORTS)); | 237 google_util::DISALLOW_NON_STANDARD_PORTS)); |
274 EXPECT_FALSE(IsGoogleDomainUrl("http://www.google.faketld/search?q=something", | 238 EXPECT_FALSE(IsGoogleDomainUrl( |
239 GURL("http://www.google.faketld/search?q=something"), | |
240 google_util::ALLOW_SUBDOMAIN, google_util::DISALLOW_NON_STANDARD_PORTS)); | |
241 EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.yahoo.com"), | |
275 google_util::ALLOW_SUBDOMAIN, | 242 google_util::ALLOW_SUBDOMAIN, |
276 google_util::DISALLOW_NON_STANDARD_PORTS)); | 243 google_util::DISALLOW_NON_STANDARD_PORTS)); |
277 EXPECT_FALSE(IsGoogleDomainUrl("http://www.yahoo.com", | |
278 google_util::ALLOW_SUBDOMAIN, | |
279 google_util::DISALLOW_NON_STANDARD_PORTS)); | |
280 | 244 |
281 // Test subdomain checks. | 245 // Test subdomain checks. |
282 EXPECT_TRUE(IsGoogleDomainUrl("http://images.google.com", | 246 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://images.google.com"), |
283 google_util::ALLOW_SUBDOMAIN, | 247 google_util::ALLOW_SUBDOMAIN, |
284 google_util::DISALLOW_NON_STANDARD_PORTS)); | 248 google_util::DISALLOW_NON_STANDARD_PORTS)); |
285 EXPECT_FALSE(IsGoogleDomainUrl("http://images.google.com", | 249 EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://images.google.com"), |
286 google_util::DISALLOW_SUBDOMAIN, | 250 google_util::DISALLOW_SUBDOMAIN, |
287 google_util::DISALLOW_NON_STANDARD_PORTS)); | 251 google_util::DISALLOW_NON_STANDARD_PORTS)); |
288 EXPECT_TRUE(IsGoogleDomainUrl("http://google.com", | 252 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://google.com"), |
289 google_util::DISALLOW_SUBDOMAIN, | 253 google_util::DISALLOW_SUBDOMAIN, |
290 google_util::DISALLOW_NON_STANDARD_PORTS)); | 254 google_util::DISALLOW_NON_STANDARD_PORTS)); |
291 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com", | 255 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com"), |
292 google_util::DISALLOW_SUBDOMAIN, | 256 google_util::DISALLOW_SUBDOMAIN, |
293 google_util::DISALLOW_NON_STANDARD_PORTS)); | 257 google_util::DISALLOW_NON_STANDARD_PORTS)); |
294 | 258 |
295 // Port and scheme checks. | 259 // Port and scheme checks. |
296 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com:80", | 260 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com:80"), |
297 google_util::DISALLOW_SUBDOMAIN, | 261 google_util::DISALLOW_SUBDOMAIN, |
298 google_util::DISALLOW_NON_STANDARD_PORTS)); | 262 google_util::DISALLOW_NON_STANDARD_PORTS)); |
299 EXPECT_FALSE(IsGoogleDomainUrl("http://www.google.com:123", | 263 EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.com:123"), |
300 google_util::DISALLOW_SUBDOMAIN, | 264 google_util::DISALLOW_SUBDOMAIN, |
301 google_util::DISALLOW_NON_STANDARD_PORTS)); | 265 google_util::DISALLOW_NON_STANDARD_PORTS)); |
302 EXPECT_TRUE(IsGoogleDomainUrl("https://www.google.com:443", | 266 EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.google.com:443"), |
303 google_util::DISALLOW_SUBDOMAIN, | 267 google_util::DISALLOW_SUBDOMAIN, |
304 google_util::DISALLOW_NON_STANDARD_PORTS)); | 268 google_util::DISALLOW_NON_STANDARD_PORTS)); |
305 EXPECT_FALSE(IsGoogleDomainUrl("http://www.google.com:123", | 269 EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.google.com:123"), |
306 google_util::DISALLOW_SUBDOMAIN, | 270 google_util::DISALLOW_SUBDOMAIN, |
307 google_util::DISALLOW_NON_STANDARD_PORTS)); | 271 google_util::DISALLOW_NON_STANDARD_PORTS)); |
308 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com:123", | 272 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com:123"), |
309 google_util::DISALLOW_SUBDOMAIN, | 273 google_util::DISALLOW_SUBDOMAIN, |
310 google_util::ALLOW_NON_STANDARD_PORTS)); | 274 google_util::ALLOW_NON_STANDARD_PORTS)); |
311 EXPECT_TRUE(IsGoogleDomainUrl("https://www.google.com:123", | 275 EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.google.com:123"), |
312 google_util::DISALLOW_SUBDOMAIN, | 276 google_util::DISALLOW_SUBDOMAIN, |
313 google_util::ALLOW_NON_STANDARD_PORTS)); | 277 google_util::ALLOW_NON_STANDARD_PORTS)); |
314 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com:80", | 278 EXPECT_TRUE(IsGoogleDomainUrl(GURL("http://www.google.com:80"), |
315 google_util::DISALLOW_SUBDOMAIN, | 279 google_util::DISALLOW_SUBDOMAIN, |
316 google_util::ALLOW_NON_STANDARD_PORTS)); | 280 google_util::ALLOW_NON_STANDARD_PORTS)); |
317 EXPECT_TRUE(IsGoogleDomainUrl("https://www.google.com:443", | 281 EXPECT_TRUE(IsGoogleDomainUrl(GURL("https://www.google.com:443"), |
318 google_util::DISALLOW_SUBDOMAIN, | 282 google_util::DISALLOW_SUBDOMAIN, |
319 google_util::ALLOW_NON_STANDARD_PORTS)); | 283 google_util::ALLOW_NON_STANDARD_PORTS)); |
320 EXPECT_FALSE(IsGoogleDomainUrl("file://www.google.com", | 284 EXPECT_FALSE(IsGoogleDomainUrl(GURL("file://www.google.com"), |
321 google_util::DISALLOW_SUBDOMAIN, | 285 google_util::DISALLOW_SUBDOMAIN, |
322 google_util::DISALLOW_NON_STANDARD_PORTS)); | 286 google_util::DISALLOW_NON_STANDARD_PORTS)); |
323 EXPECT_FALSE(IsGoogleDomainUrl("doesnotexist://www.google.com", | 287 EXPECT_FALSE(IsGoogleDomainUrl(GURL("doesnotexist://www.google.com"), |
324 google_util::DISALLOW_SUBDOMAIN, | 288 google_util::DISALLOW_SUBDOMAIN, |
325 google_util::DISALLOW_NON_STANDARD_PORTS)); | 289 google_util::DISALLOW_NON_STANDARD_PORTS)); |
326 | 290 } |
327 // Test overriding with --instant-url works. | 291 |
328 EXPECT_FALSE(IsGoogleDomainUrl("http://test.foo.com", | 292 TEST(GoogleUtilTest, GoogleBaseURL) { |
329 google_util::DISALLOW_SUBDOMAIN, | 293 // When no command-line flag is specified, no input to |
330 google_util::DISALLOW_NON_STANDARD_PORTS)); | 294 // StartsWithCommandLineGoogleBaseURL() should return true. |
331 EXPECT_FALSE(IsGoogleDomainUrl("http://test.foo.com:1234", | 295 EXPECT_FALSE(StartsWithBaseURL(std::string())); |
332 google_util::DISALLOW_SUBDOMAIN, | 296 EXPECT_FALSE(StartsWithBaseURL("http://www.foo.com/")); |
333 google_util::DISALLOW_NON_STANDARD_PORTS)); | 297 EXPECT_FALSE(StartsWithBaseURL("http://www.google.com/")); |
334 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 298 |
335 switches::kInstantURL, "http://test.foo.com:1234/bar"); | 299 // By default, none of the IsGoogleXXX functions should return true for a |
336 EXPECT_FALSE(IsGoogleDomainUrl("http://test.foo.com", | 300 // "foo.com" URL. |
337 google_util::DISALLOW_SUBDOMAIN, | 301 EXPECT_FALSE(IsGoogleHostname("www.foo.com", |
338 google_util::DISALLOW_NON_STANDARD_PORTS)); | 302 google_util::DISALLOW_SUBDOMAIN)); |
339 EXPECT_TRUE(IsGoogleDomainUrl("http://test.foo.com:1234", | 303 EXPECT_FALSE(IsGoogleDomainUrl(GURL("http://www.foo.com/xyz"), |
340 google_util::DISALLOW_SUBDOMAIN, | 304 google_util::DISALLOW_SUBDOMAIN, |
341 google_util::DISALLOW_NON_STANDARD_PORTS)); | 305 google_util::DISALLOW_NON_STANDARD_PORTS)); |
342 EXPECT_FALSE(IsGoogleDomainUrl("file://test.foo.com:1234", | 306 EXPECT_FALSE(IsGoogleDomainUrl(GURL("https://www.foo.com/"), |
343 google_util::DISALLOW_SUBDOMAIN, | 307 google_util::DISALLOW_SUBDOMAIN, |
344 google_util::DISALLOW_NON_STANDARD_PORTS)); | 308 google_util::DISALLOW_NON_STANDARD_PORTS)); |
345 EXPECT_TRUE(IsGoogleDomainUrl("http://www.google.com", | 309 EXPECT_FALSE(IsHomePage("https://www.foo.com/webhp")); |
346 google_util::DISALLOW_SUBDOMAIN, | 310 EXPECT_FALSE(IsSearch("http://www.foo.com/search?q=a")); |
347 google_util::DISALLOW_NON_STANDARD_PORTS)); | 311 |
348 } | 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 } | |
OLD | NEW |