OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/google/core/browser/google_url_tracker.h" | 5 #include "components/google/core/browser/google_url_tracker.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
200 base::MessageLoop::current()->RunUntilIdle(); | 200 base::MessageLoop::current()->RunUntilIdle(); |
201 } | 201 } |
202 | 202 |
203 // Tests ---------------------------------------------------------------------- | 203 // Tests ---------------------------------------------------------------------- |
204 | 204 |
205 TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) { | 205 TEST_F(GoogleURLTrackerTest, DontFetchWhenNoOneRequestsCheck) { |
206 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); | 206 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
207 FinishSleep(); | 207 FinishSleep(); |
208 // No one called RequestServerCheck() so nothing should have happened. | 208 // No one called RequestServerCheck() so nothing should have happened. |
209 EXPECT_FALSE(GetFetcher()); | 209 EXPECT_FALSE(GetFetcher()); |
210 MockSearchDomainCheckResponse("http://www.google.co.uk/"); | 210 MockSearchDomainCheckResponse(".google.co.uk"); |
211 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); | 211 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
212 EXPECT_FALSE(listener_notified()); | 212 EXPECT_FALSE(listener_notified()); |
213 } | 213 } |
214 | 214 |
215 TEST_F(GoogleURLTrackerTest, Update) { | 215 TEST_F(GoogleURLTrackerTest, Update) { |
216 RequestServerCheck(); | 216 RequestServerCheck(); |
217 EXPECT_FALSE(GetFetcher()); | 217 EXPECT_FALSE(GetFetcher()); |
218 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); | 218 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
219 EXPECT_FALSE(listener_notified()); | 219 EXPECT_FALSE(listener_notified()); |
220 | 220 |
221 FinishSleep(); | 221 FinishSleep(); |
222 MockSearchDomainCheckResponse("http://www.google.co.uk/"); | 222 MockSearchDomainCheckResponse(".google.co.uk"); |
223 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); | 223 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); |
224 EXPECT_TRUE(listener_notified()); | 224 EXPECT_TRUE(listener_notified()); |
225 } | 225 } |
226 | 226 |
227 TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) { | 227 TEST_F(GoogleURLTrackerTest, DontUpdateWhenUnchanged) { |
228 GURL original_google_url("http://www.google.co.uk/"); | 228 GURL original_google_url("https://www.google.co.uk/"); |
229 set_google_url(original_google_url); | 229 set_google_url(original_google_url); |
230 | 230 |
231 RequestServerCheck(); | 231 RequestServerCheck(); |
232 EXPECT_FALSE(GetFetcher()); | 232 EXPECT_FALSE(GetFetcher()); |
233 EXPECT_EQ(original_google_url, google_url()); | 233 EXPECT_EQ(original_google_url, google_url()); |
234 EXPECT_FALSE(listener_notified()); | 234 EXPECT_FALSE(listener_notified()); |
235 | 235 |
236 FinishSleep(); | 236 FinishSleep(); |
237 MockSearchDomainCheckResponse(original_google_url.spec()); | 237 MockSearchDomainCheckResponse(".google.co.uk"); |
238 EXPECT_EQ(original_google_url, google_url()); | 238 EXPECT_EQ(original_google_url, google_url()); |
239 // No one should be notified, because the new URL matches the old. | 239 // No one should be notified, because the new URL matches the old. |
240 EXPECT_FALSE(listener_notified()); | 240 EXPECT_FALSE(listener_notified()); |
241 } | 241 } |
242 | 242 |
243 TEST_F(GoogleURLTrackerTest, DontPromptOnBadReplies) { | 243 TEST_F(GoogleURLTrackerTest, DontUpdateOnBadReplies) { |
244 GURL original_google_url("http://www.google.co.uk/"); | 244 GURL original_google_url("https://www.google.co.uk/"); |
245 set_google_url(original_google_url); | 245 set_google_url(original_google_url); |
246 | 246 |
247 RequestServerCheck(); | 247 RequestServerCheck(); |
248 EXPECT_FALSE(GetFetcher()); | 248 EXPECT_FALSE(GetFetcher()); |
249 EXPECT_EQ(original_google_url, google_url()); | 249 EXPECT_EQ(original_google_url, google_url()); |
250 EXPECT_FALSE(listener_notified()); | 250 EXPECT_FALSE(listener_notified()); |
251 | 251 |
252 // Old-style domain string. | 252 // Not a Google domain. |
253 FinishSleep(); | 253 FinishSleep(); |
254 MockSearchDomainCheckResponse(".google.co.in"); | 254 MockSearchDomainCheckResponse(".google.evil.com"); |
Ilya Sherman
2015/02/05 00:44:50
Please add a test case for a full URL, i.e. "https
| |
255 EXPECT_EQ(original_google_url, google_url()); | 255 EXPECT_EQ(original_google_url, google_url()); |
256 EXPECT_FALSE(listener_notified()); | 256 EXPECT_FALSE(listener_notified()); |
257 | 257 |
258 // Bad subdomain. | 258 // Doesn't start with .google. |
259 NotifyNetworkChanged(); | 259 NotifyNetworkChanged(); |
260 MockSearchDomainCheckResponse("http://mail.google.com/"); | 260 MockSearchDomainCheckResponse(".mail.google.com"); |
261 EXPECT_EQ(original_google_url, google_url()); | 261 EXPECT_EQ(original_google_url, google_url()); |
262 EXPECT_FALSE(listener_notified()); | 262 EXPECT_FALSE(listener_notified()); |
263 | 263 |
264 // Non-empty path. | 264 // Non-empty path. |
265 NotifyNetworkChanged(); | 265 NotifyNetworkChanged(); |
266 MockSearchDomainCheckResponse("http://www.google.com/search"); | 266 MockSearchDomainCheckResponse(".google.com/search"); |
267 EXPECT_EQ(original_google_url, google_url()); | 267 EXPECT_EQ(original_google_url, google_url()); |
268 EXPECT_FALSE(listener_notified()); | 268 EXPECT_FALSE(listener_notified()); |
269 | 269 |
270 // Non-empty query. | 270 // Non-empty query. |
271 NotifyNetworkChanged(); | 271 NotifyNetworkChanged(); |
272 MockSearchDomainCheckResponse("http://www.google.com/?q=foo"); | 272 MockSearchDomainCheckResponse(".google.com/?q=foo"); |
273 EXPECT_EQ(original_google_url, google_url()); | 273 EXPECT_EQ(original_google_url, google_url()); |
274 EXPECT_FALSE(listener_notified()); | 274 EXPECT_FALSE(listener_notified()); |
275 | 275 |
276 // Non-empty ref. | 276 // Non-empty ref. |
277 NotifyNetworkChanged(); | 277 NotifyNetworkChanged(); |
278 MockSearchDomainCheckResponse("http://www.google.com/#anchor"); | 278 MockSearchDomainCheckResponse(".google.com/#anchor"); |
279 EXPECT_EQ(original_google_url, google_url()); | 279 EXPECT_EQ(original_google_url, google_url()); |
280 EXPECT_FALSE(listener_notified()); | 280 EXPECT_FALSE(listener_notified()); |
281 | 281 |
282 // Complete garbage. | 282 // Complete garbage. |
283 NotifyNetworkChanged(); | 283 NotifyNetworkChanged(); |
284 MockSearchDomainCheckResponse("HJ)*qF)_*&@f1"); | 284 MockSearchDomainCheckResponse("HJ)*qF)_*&@f1"); |
285 EXPECT_EQ(original_google_url, google_url()); | 285 EXPECT_EQ(original_google_url, google_url()); |
286 EXPECT_FALSE(listener_notified()); | 286 EXPECT_FALSE(listener_notified()); |
287 } | 287 } |
288 | 288 |
289 TEST_F(GoogleURLTrackerTest, RefetchOnNetworkChange) { | 289 TEST_F(GoogleURLTrackerTest, RefetchOnNetworkChange) { |
290 RequestServerCheck(); | 290 RequestServerCheck(); |
291 FinishSleep(); | 291 FinishSleep(); |
292 MockSearchDomainCheckResponse("http://www.google.co.uk/"); | 292 MockSearchDomainCheckResponse(".google.co.uk"); |
293 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); | 293 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); |
294 EXPECT_TRUE(listener_notified()); | 294 EXPECT_TRUE(listener_notified()); |
295 clear_listener_notified(); | 295 clear_listener_notified(); |
296 | 296 |
297 NotifyNetworkChanged(); | 297 NotifyNetworkChanged(); |
298 MockSearchDomainCheckResponse("http://www.google.co.in/"); | 298 MockSearchDomainCheckResponse(".google.co.in"); |
299 EXPECT_EQ(GURL("http://www.google.co.in/"), google_url()); | 299 EXPECT_EQ(GURL("https://www.google.co.in/"), google_url()); |
300 EXPECT_TRUE(listener_notified()); | 300 EXPECT_TRUE(listener_notified()); |
301 } | 301 } |
302 | 302 |
303 TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) { | 303 TEST_F(GoogleURLTrackerTest, DontRefetchWhenNoOneRequestsCheck) { |
304 FinishSleep(); | 304 FinishSleep(); |
305 NotifyNetworkChanged(); | 305 NotifyNetworkChanged(); |
306 // No one called RequestServerCheck() so nothing should have happened. | 306 // No one called RequestServerCheck() so nothing should have happened. |
307 EXPECT_FALSE(GetFetcher()); | 307 EXPECT_FALSE(GetFetcher()); |
308 MockSearchDomainCheckResponse("http://www.google.co.uk/"); | 308 MockSearchDomainCheckResponse(".google.co.uk"); |
309 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); | 309 EXPECT_EQ(GURL(GoogleURLTracker::kDefaultGoogleHomepage), google_url()); |
310 EXPECT_FALSE(listener_notified()); | 310 EXPECT_FALSE(listener_notified()); |
311 } | 311 } |
312 | 312 |
313 TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) { | 313 TEST_F(GoogleURLTrackerTest, FetchOnLateRequest) { |
314 FinishSleep(); | 314 FinishSleep(); |
315 NotifyNetworkChanged(); | 315 NotifyNetworkChanged(); |
316 MockSearchDomainCheckResponse("http://www.google.co.jp/"); | 316 MockSearchDomainCheckResponse(".google.co.jp"); |
317 | 317 |
318 RequestServerCheck(); | 318 RequestServerCheck(); |
319 // The first request for a check should trigger a fetch if it hasn't happened | 319 // The first request for a check should trigger a fetch if it hasn't happened |
320 // already. | 320 // already. |
321 MockSearchDomainCheckResponse("http://www.google.co.uk/"); | 321 MockSearchDomainCheckResponse(".google.co.uk"); |
322 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); | 322 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); |
323 EXPECT_TRUE(listener_notified()); | 323 EXPECT_TRUE(listener_notified()); |
324 } | 324 } |
325 | 325 |
326 TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) { | 326 TEST_F(GoogleURLTrackerTest, DontFetchTwiceOnLateRequests) { |
327 FinishSleep(); | 327 FinishSleep(); |
328 NotifyNetworkChanged(); | 328 NotifyNetworkChanged(); |
329 MockSearchDomainCheckResponse("http://www.google.co.jp/"); | 329 MockSearchDomainCheckResponse(".google.co.jp"); |
330 | 330 |
331 RequestServerCheck(); | 331 RequestServerCheck(); |
332 // The first request for a check should trigger a fetch if it hasn't happened | 332 // The first request for a check should trigger a fetch if it hasn't happened |
333 // already. | 333 // already. |
334 MockSearchDomainCheckResponse("http://www.google.co.uk/"); | 334 MockSearchDomainCheckResponse(".google.co.uk"); |
335 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); | 335 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); |
336 EXPECT_TRUE(listener_notified()); | 336 EXPECT_TRUE(listener_notified()); |
337 clear_listener_notified(); | 337 clear_listener_notified(); |
338 | 338 |
339 RequestServerCheck(); | 339 RequestServerCheck(); |
340 // The second request should be ignored. | 340 // The second request should be ignored. |
341 EXPECT_FALSE(GetFetcher()); | 341 EXPECT_FALSE(GetFetcher()); |
342 MockSearchDomainCheckResponse("http://www.google.co.in/"); | 342 MockSearchDomainCheckResponse(".google.co.in"); |
343 EXPECT_EQ(GURL("http://www.google.co.uk/"), google_url()); | 343 EXPECT_EQ(GURL("https://www.google.co.uk/"), google_url()); |
344 EXPECT_FALSE(listener_notified()); | 344 EXPECT_FALSE(listener_notified()); |
345 } | 345 } |
OLD | NEW |