| 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 "chrome/browser/metrics/variations/variations_service.h" | 5 #include "chrome/browser/metrics/variations/variations_service.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/base64.h" | 9 #include "base/base64.h" |
| 10 #include "base/prefs/testing_pref_service.h" | 10 #include "base/prefs/testing_pref_service.h" |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 | 259 |
| 260 TEST_F(VariationsServiceTest, RequestsInitiallyNotAllowed) { | 260 TEST_F(VariationsServiceTest, RequestsInitiallyNotAllowed) { |
| 261 base::MessageLoopForUI message_loop; | 261 base::MessageLoopForUI message_loop; |
| 262 content::TestBrowserThread ui_thread(content::BrowserThread::UI, | 262 content::TestBrowserThread ui_thread(content::BrowserThread::UI, |
| 263 &message_loop); | 263 &message_loop); |
| 264 TestingPrefServiceSimple prefs; | 264 TestingPrefServiceSimple prefs; |
| 265 VariationsService::RegisterPrefs(prefs.registry()); | 265 VariationsService::RegisterPrefs(prefs.registry()); |
| 266 | 266 |
| 267 // Pass ownership to TestVariationsService, but keep a weak pointer to | 267 // Pass ownership to TestVariationsService, but keep a weak pointer to |
| 268 // manipulate it for this test. | 268 // manipulate it for this test. |
| 269 TestRequestAllowedNotifier* test_notifier = new TestRequestAllowedNotifier; | 269 TestRequestAllowedNotifier* test_notifier = |
| 270 new TestRequestAllowedNotifier(&prefs); |
| 270 TestVariationsService test_service(test_notifier, &prefs); | 271 TestVariationsService test_service(test_notifier, &prefs); |
| 271 | 272 |
| 272 // Force the notifier to initially disallow requests. | 273 // Force the notifier to initially disallow requests. |
| 273 test_notifier->SetRequestsAllowedOverride(false); | 274 test_notifier->SetRequestsAllowedOverride(false); |
| 274 test_service.StartRepeatedVariationsSeedFetch(); | 275 test_service.StartRepeatedVariationsSeedFetch(); |
| 275 EXPECT_FALSE(test_service.fetch_attempted()); | 276 EXPECT_FALSE(test_service.fetch_attempted()); |
| 276 | 277 |
| 277 test_notifier->NotifyObserver(); | 278 test_notifier->NotifyObserver(); |
| 278 EXPECT_TRUE(test_service.fetch_attempted()); | 279 EXPECT_TRUE(test_service.fetch_attempted()); |
| 279 } | 280 } |
| 280 | 281 |
| 281 TEST_F(VariationsServiceTest, RequestsInitiallyAllowed) { | 282 TEST_F(VariationsServiceTest, RequestsInitiallyAllowed) { |
| 282 base::MessageLoopForUI message_loop; | 283 base::MessageLoopForUI message_loop; |
| 283 content::TestBrowserThread ui_thread(content::BrowserThread::UI, | 284 content::TestBrowserThread ui_thread(content::BrowserThread::UI, |
| 284 &message_loop); | 285 &message_loop); |
| 285 TestingPrefServiceSimple prefs; | 286 TestingPrefServiceSimple prefs; |
| 286 VariationsService::RegisterPrefs(prefs.registry()); | 287 VariationsService::RegisterPrefs(prefs.registry()); |
| 287 | 288 |
| 288 // Pass ownership to TestVariationsService, but keep a weak pointer to | 289 // Pass ownership to TestVariationsService, but keep a weak pointer to |
| 289 // manipulate it for this test. | 290 // manipulate it for this test. |
| 290 TestRequestAllowedNotifier* test_notifier = new TestRequestAllowedNotifier; | 291 TestRequestAllowedNotifier* test_notifier = |
| 292 new TestRequestAllowedNotifier(&prefs); |
| 291 TestVariationsService test_service(test_notifier, &prefs); | 293 TestVariationsService test_service(test_notifier, &prefs); |
| 292 | 294 |
| 293 test_notifier->SetRequestsAllowedOverride(true); | 295 test_notifier->SetRequestsAllowedOverride(true); |
| 294 test_service.StartRepeatedVariationsSeedFetch(); | 296 test_service.StartRepeatedVariationsSeedFetch(); |
| 295 EXPECT_TRUE(test_service.fetch_attempted()); | 297 EXPECT_TRUE(test_service.fetch_attempted()); |
| 296 } | 298 } |
| 297 | 299 |
| 298 TEST_F(VariationsServiceTest, SeedStoredWhenOKStatus) { | 300 TEST_F(VariationsServiceTest, SeedStoredWhenOKStatus) { |
| 299 base::MessageLoop message_loop; | 301 base::MessageLoop message_loop; |
| 300 content::TestBrowserThread io_thread(content::BrowserThread::IO, | 302 content::TestBrowserThread io_thread(content::BrowserThread::IO, |
| 301 &message_loop); | 303 &message_loop); |
| 302 TestingPrefServiceSimple prefs; | 304 TestingPrefServiceSimple prefs; |
| 303 VariationsService::RegisterPrefs(prefs.registry()); | 305 VariationsService::RegisterPrefs(prefs.registry()); |
| 304 | 306 |
| 305 TestVariationsService service(new TestRequestAllowedNotifier, &prefs); | 307 TestVariationsService service(new TestRequestAllowedNotifier(&prefs), &prefs); |
| 306 const GURL url = VariationsService::GetVariationsServerURL(&prefs); | 308 const GURL url = VariationsService::GetVariationsServerURL(&prefs); |
| 307 service.variations_server_url_ = url; | 309 service.variations_server_url_ = url; |
| 308 service.set_intercepts_fetch(false); | 310 service.set_intercepts_fetch(false); |
| 309 | 311 |
| 310 net::TestURLFetcherFactory factory; | 312 net::TestURLFetcherFactory factory; |
| 311 service.DoActualFetch(); | 313 service.DoActualFetch(); |
| 312 | 314 |
| 313 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 315 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 314 SimulateServerResponse(net::HTTP_OK, fetcher); | 316 SimulateServerResponse(net::HTTP_OK, fetcher); |
| 315 fetcher->SetResponseString(SerializeSeed(CreateTestSeed())); | 317 fetcher->SetResponseString(SerializeSeed(CreateTestSeed())); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 327 net::HTTP_INTERNAL_SERVER_ERROR, | 329 net::HTTP_INTERNAL_SERVER_ERROR, |
| 328 net::HTTP_SERVICE_UNAVAILABLE, | 330 net::HTTP_SERVICE_UNAVAILABLE, |
| 329 }; | 331 }; |
| 330 | 332 |
| 331 base::MessageLoop message_loop; | 333 base::MessageLoop message_loop; |
| 332 content::TestBrowserThread io_thread(content::BrowserThread::IO, | 334 content::TestBrowserThread io_thread(content::BrowserThread::IO, |
| 333 &message_loop); | 335 &message_loop); |
| 334 TestingPrefServiceSimple prefs; | 336 TestingPrefServiceSimple prefs; |
| 335 VariationsService::RegisterPrefs(prefs.registry()); | 337 VariationsService::RegisterPrefs(prefs.registry()); |
| 336 | 338 |
| 337 VariationsService service(new TestRequestAllowedNotifier, &prefs, NULL); | 339 VariationsService service(new TestRequestAllowedNotifier(&prefs), &prefs, |
| 340 NULL); |
| 338 const GURL url = VariationsService::GetVariationsServerURL(&prefs); | 341 const GURL url = VariationsService::GetVariationsServerURL(&prefs); |
| 339 service.variations_server_url_ = url; | 342 service.variations_server_url_ = url; |
| 340 for (size_t i = 0; i < arraysize(non_ok_status_codes); ++i) { | 343 for (size_t i = 0; i < arraysize(non_ok_status_codes); ++i) { |
| 341 net::TestURLFetcherFactory factory; | 344 net::TestURLFetcherFactory factory; |
| 342 service.DoActualFetch(); | 345 service.DoActualFetch(); |
| 343 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); | 346 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); |
| 344 | 347 |
| 345 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 348 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 346 SimulateServerResponse(non_ok_status_codes[i], fetcher); | 349 SimulateServerResponse(non_ok_status_codes[i], fetcher); |
| 347 service.OnURLFetchComplete(fetcher); | 350 service.OnURLFetchComplete(fetcher); |
| 348 | 351 |
| 349 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); | 352 EXPECT_TRUE(prefs.FindPreference(prefs::kVariationsSeed)->IsDefaultValue()); |
| 350 } | 353 } |
| 351 } | 354 } |
| 352 | 355 |
| 353 TEST_F(VariationsServiceTest, SeedDateUpdatedOn304Status) { | 356 TEST_F(VariationsServiceTest, SeedDateUpdatedOn304Status) { |
| 354 base::MessageLoop message_loop; | 357 base::MessageLoop message_loop; |
| 355 content::TestBrowserThread io_thread(content::BrowserThread::IO, | 358 content::TestBrowserThread io_thread(content::BrowserThread::IO, |
| 356 &message_loop); | 359 &message_loop); |
| 357 TestingPrefServiceSimple prefs; | 360 TestingPrefServiceSimple prefs; |
| 358 VariationsService::RegisterPrefs(prefs.registry()); | 361 VariationsService::RegisterPrefs(prefs.registry()); |
| 359 | 362 |
| 360 net::TestURLFetcherFactory factory; | 363 net::TestURLFetcherFactory factory; |
| 361 VariationsService service(new TestRequestAllowedNotifier, &prefs, NULL); | 364 VariationsService service(new TestRequestAllowedNotifier(&prefs), &prefs, |
| 365 NULL); |
| 362 const GURL url = VariationsService::GetVariationsServerURL(&prefs); | 366 const GURL url = VariationsService::GetVariationsServerURL(&prefs); |
| 363 service.variations_server_url_ = url; | 367 service.variations_server_url_ = url; |
| 364 service.DoActualFetch(); | 368 service.DoActualFetch(); |
| 365 EXPECT_TRUE( | 369 EXPECT_TRUE( |
| 366 prefs.FindPreference(prefs::kVariationsSeedDate)->IsDefaultValue()); | 370 prefs.FindPreference(prefs::kVariationsSeedDate)->IsDefaultValue()); |
| 367 | 371 |
| 368 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); | 372 net::TestURLFetcher* fetcher = factory.GetFetcherByID(0); |
| 369 SimulateServerResponse(net::HTTP_NOT_MODIFIED, fetcher); | 373 SimulateServerResponse(net::HTTP_NOT_MODIFIED, fetcher); |
| 370 service.OnURLFetchComplete(fetcher); | 374 service.OnURLFetchComplete(fetcher); |
| 371 EXPECT_FALSE( | 375 EXPECT_FALSE( |
| 372 prefs.FindPreference(prefs::kVariationsSeedDate)->IsDefaultValue()); | 376 prefs.FindPreference(prefs::kVariationsSeedDate)->IsDefaultValue()); |
| 373 } | 377 } |
| 374 | 378 |
| 375 TEST_F(VariationsServiceTest, Observer) { | 379 TEST_F(VariationsServiceTest, Observer) { |
| 376 TestingPrefServiceSimple prefs; | 380 TestingPrefServiceSimple prefs; |
| 377 VariationsService::RegisterPrefs(prefs.registry()); | 381 VariationsService::RegisterPrefs(prefs.registry()); |
| 378 VariationsService service(new TestRequestAllowedNotifier, &prefs, NULL); | 382 VariationsService service(new TestRequestAllowedNotifier(&prefs), &prefs, |
| 383 NULL); |
| 379 | 384 |
| 380 struct { | 385 struct { |
| 381 int normal_count; | 386 int normal_count; |
| 382 int best_effort_count; | 387 int best_effort_count; |
| 383 int critical_count; | 388 int critical_count; |
| 384 int expected_best_effort_notifications; | 389 int expected_best_effort_notifications; |
| 385 int expected_crtical_notifications; | 390 int expected_crtical_notifications; |
| 386 } cases[] = { | 391 } cases[] = { |
| 387 {0, 0, 0, 0, 0}, | 392 {0, 0, 0, 0, 0}, |
| 388 {1, 0, 0, 0, 0}, | 393 {1, 0, 0, 0, 0}, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 410 EXPECT_EQ(cases[i].expected_best_effort_notifications, | 415 EXPECT_EQ(cases[i].expected_best_effort_notifications, |
| 411 observer.best_effort_changes_notified()) << i; | 416 observer.best_effort_changes_notified()) << i; |
| 412 EXPECT_EQ(cases[i].expected_crtical_notifications, | 417 EXPECT_EQ(cases[i].expected_crtical_notifications, |
| 413 observer.crticial_changes_notified()) << i; | 418 observer.crticial_changes_notified()) << i; |
| 414 | 419 |
| 415 service.RemoveObserver(&observer); | 420 service.RemoveObserver(&observer); |
| 416 } | 421 } |
| 417 } | 422 } |
| 418 | 423 |
| 419 } // namespace chrome_variations | 424 } // namespace chrome_variations |
| OLD | NEW |