Chromium Code Reviews| 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 |