| 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 "components/browser_sync/profile_sync_service.h" | 5 #include "components/browser_sync/profile_sync_service.h" |
| 6 | 6 |
| 7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 using testing::DoAll; | 36 using testing::DoAll; |
| 37 using testing::Mock; | 37 using testing::Mock; |
| 38 using testing::Return; | 38 using testing::Return; |
| 39 | 39 |
| 40 namespace browser_sync { | 40 namespace browser_sync { |
| 41 | 41 |
| 42 namespace { | 42 namespace { |
| 43 | 43 |
| 44 const char kGaiaId[] = "12345"; | 44 const char kGaiaId[] = "12345"; |
| 45 const char kEmail[] = "test_user@gmail.com"; | 45 const char kEmail[] = "test_user@gmail.com"; |
| 46 const char kDummyPassword[] = ""; | 46 const char kDummyPassword[] = "foobar"; |
| 47 | 47 |
| 48 class SyncServiceObserverMock : public syncer::SyncServiceObserver { | 48 class SyncServiceObserverMock : public syncer::SyncServiceObserver { |
| 49 public: | 49 public: |
| 50 SyncServiceObserverMock(); | 50 SyncServiceObserverMock(); |
| 51 virtual ~SyncServiceObserverMock(); | 51 virtual ~SyncServiceObserverMock(); |
| 52 | 52 |
| 53 MOCK_METHOD1(OnStateChanged, void(syncer::SyncService*)); | 53 MOCK_METHOD1(OnStateChanged, void(syncer::SyncService*)); |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 SyncServiceObserverMock::SyncServiceObserverMock() {} | 56 SyncServiceObserverMock::SyncServiceObserverMock() {} |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 EXPECT_CALL(*data_type_manager, state()) | 189 EXPECT_CALL(*data_type_manager, state()) |
| 190 .WillOnce(Return(DataTypeManager::CONFIGURED)) | 190 .WillOnce(Return(DataTypeManager::CONFIGURED)) |
| 191 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 191 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 192 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 192 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 193 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 193 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 194 | 194 |
| 195 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 195 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 196 | 196 |
| 197 // Simulate successful signin as test_user. | 197 // Simulate successful signin as test_user. |
| 198 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 198 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 199 ON_CALL(*data_type_manager, IsNigoriEnabled()).WillByDefault(Return(true)); |
| 199 // Create some tokens in the token service. | 200 // Create some tokens in the token service. |
| 200 IssueTestTokens(account_id); | 201 IssueTestTokens(account_id); |
| 201 | 202 |
| 202 // Simulate the UI telling sync it has finished setting up. | 203 // Simulate the UI telling sync it has finished setting up. |
| 203 sync_blocker.reset(); | 204 sync_blocker.reset(); |
| 204 sync_service_->SetFirstSetupComplete(); | 205 sync_service_->SetFirstSetupComplete(); |
| 205 EXPECT_TRUE(sync_service_->IsSyncActive()); | 206 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 206 } | 207 } |
| 207 | 208 |
| 208 // TODO(pavely): Reenable test once android is switched to oauth2. | 209 // TODO(pavely): Reenable test once android is switched to oauth2. |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 312 CreateSyncService(ProfileSyncService::MANUAL_START); | 313 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 313 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 314 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 314 sync_service_->SetFirstSetupComplete(); | 315 sync_service_->SetFirstSetupComplete(); |
| 315 SetUpSyncEngine(); | 316 SetUpSyncEngine(); |
| 316 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 317 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 317 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 318 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 318 EXPECT_CALL(*data_type_manager, state()) | 319 EXPECT_CALL(*data_type_manager, state()) |
| 319 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 320 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 320 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 321 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 321 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 322 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 323 ON_CALL(*data_type_manager, IsNigoriEnabled()).WillByDefault(Return(true)); |
| 322 | 324 |
| 323 IssueTestTokens(account_id); | 325 IssueTestTokens(account_id); |
| 324 | 326 |
| 325 sync_service_->Initialize(); | 327 sync_service_->Initialize(); |
| 326 } | 328 } |
| 327 | 329 |
| 328 // Test that we can recover from a case where a bug in the code resulted in | 330 // Test that we can recover from a case where a bug in the code resulted in |
| 329 // OnUserChoseDatatypes not being properly called and datatype preferences | 331 // OnUserChoseDatatypes not being properly called and datatype preferences |
| 330 // therefore being left unset. | 332 // therefore being left unset. |
| 331 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { | 333 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 342 CreateSyncService(ProfileSyncService::MANUAL_START); | 344 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 343 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 345 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 344 sync_service_->SetFirstSetupComplete(); | 346 sync_service_->SetFirstSetupComplete(); |
| 345 SetUpSyncEngine(); | 347 SetUpSyncEngine(); |
| 346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 348 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 347 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 349 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 348 EXPECT_CALL(*data_type_manager, state()) | 350 EXPECT_CALL(*data_type_manager, state()) |
| 349 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 351 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 350 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 352 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 351 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 353 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 354 ON_CALL(*data_type_manager, IsNigoriEnabled()).WillByDefault(Return(true)); |
| 352 | 355 |
| 353 IssueTestTokens(account_id); | 356 IssueTestTokens(account_id); |
| 354 sync_service_->Initialize(); | 357 sync_service_->Initialize(); |
| 355 | 358 |
| 356 EXPECT_TRUE( | 359 EXPECT_TRUE( |
| 357 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); | 360 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
| 358 } | 361 } |
| 359 | 362 |
| 360 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 363 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
| 361 // case where only bookmarks are enabled. | 364 // case where only bookmarks are enabled. |
| 362 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { | 365 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { |
| 363 // Explicitly set Keep Everything Synced to false and have only bookmarks | 366 // Explicitly set Keep Everything Synced to false and have only bookmarks |
| 364 // enabled. | 367 // enabled. |
| 365 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); | 368 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); |
| 366 | 369 |
| 367 // Pre load the tokens | 370 // Pre load the tokens |
| 368 CreateSyncService(ProfileSyncService::MANUAL_START); | 371 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 369 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 372 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 370 sync_service_->SetFirstSetupComplete(); | 373 sync_service_->SetFirstSetupComplete(); |
| 371 SetUpSyncEngine(); | 374 SetUpSyncEngine(); |
| 372 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 375 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 373 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 376 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 374 EXPECT_CALL(*data_type_manager, state()) | 377 EXPECT_CALL(*data_type_manager, state()) |
| 375 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 378 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 376 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 379 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 377 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 380 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 381 ON_CALL(*data_type_manager, IsNigoriEnabled()).WillByDefault(Return(true)); |
| 378 IssueTestTokens(account_id); | 382 IssueTestTokens(account_id); |
| 379 sync_service_->Initialize(); | 383 sync_service_->Initialize(); |
| 380 | 384 |
| 381 EXPECT_FALSE( | 385 EXPECT_FALSE( |
| 382 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); | 386 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
| 383 } | 387 } |
| 384 | 388 |
| 385 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 389 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
| 386 // Service should not be started by Initialize() since it's managed. | 390 // Service should not be started by Initialize() since it's managed. |
| 387 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); | 391 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 399 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 403 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
| 400 CreateSyncService(ProfileSyncService::MANUAL_START); | 404 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 401 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 405 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 402 sync_service_->SetFirstSetupComplete(); | 406 sync_service_->SetFirstSetupComplete(); |
| 403 SetUpSyncEngine(); | 407 SetUpSyncEngine(); |
| 404 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 408 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 405 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 409 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 406 EXPECT_CALL(*data_type_manager, state()) | 410 EXPECT_CALL(*data_type_manager, state()) |
| 407 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 411 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 408 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 412 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 413 ON_CALL(*data_type_manager, IsNigoriEnabled()).WillByDefault(Return(true)); |
| 409 IssueTestTokens(account_id); | 414 IssueTestTokens(account_id); |
| 410 sync_service_->Initialize(); | 415 sync_service_->Initialize(); |
| 411 EXPECT_TRUE(sync_service_->IsEngineInitialized()); | 416 EXPECT_TRUE(sync_service_->IsEngineInitialized()); |
| 412 EXPECT_TRUE(sync_service_->IsSyncActive()); | 417 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 413 | 418 |
| 414 // The service should stop when switching to managed mode. | 419 // The service should stop when switching to managed mode. |
| 415 Mock::VerifyAndClearExpectations(data_type_manager); | 420 Mock::VerifyAndClearExpectations(data_type_manager); |
| 416 EXPECT_CALL(*data_type_manager, state()) | 421 EXPECT_CALL(*data_type_manager, state()) |
| 417 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 422 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 418 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 423 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 443 .WillRepeatedly( | 448 .WillRepeatedly( |
| 444 DoAll(InvokeOnConfigureStart(sync_service_.get()), | 449 DoAll(InvokeOnConfigureStart(sync_service_.get()), |
| 445 InvokeOnConfigureDone( | 450 InvokeOnConfigureDone( |
| 446 sync_service_.get(), | 451 sync_service_.get(), |
| 447 base::Bind(&ProfileSyncServiceStartupTest::SetError, | 452 base::Bind(&ProfileSyncServiceStartupTest::SetError, |
| 448 base::Unretained(this)), | 453 base::Unretained(this)), |
| 449 result))); | 454 result))); |
| 450 EXPECT_CALL(*data_type_manager, state()) | 455 EXPECT_CALL(*data_type_manager, state()) |
| 451 .WillOnce(Return(DataTypeManager::STOPPED)); | 456 .WillOnce(Return(DataTypeManager::STOPPED)); |
| 452 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 457 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 458 ON_CALL(*data_type_manager, IsNigoriEnabled()).WillByDefault(Return(true)); |
| 453 IssueTestTokens(account_id); | 459 IssueTestTokens(account_id); |
| 454 sync_service_->Initialize(); | 460 sync_service_->Initialize(); |
| 455 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); | 461 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); |
| 456 } | 462 } |
| 457 | 463 |
| 458 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 464 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
| 459 // Pre load the tokens | 465 // Pre load the tokens |
| 460 CreateSyncService(ProfileSyncService::MANUAL_START); | 466 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 461 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 467 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 462 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); | 468 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); |
| 463 mock_sbh->set_fail_initial_download(true); | 469 mock_sbh->set_fail_initial_download(true); |
| 464 | 470 |
| 465 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 471 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 466 | 472 |
| 467 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); | 473 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 468 sync_service_->Initialize(); | 474 sync_service_->Initialize(); |
| 469 | 475 |
| 470 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 476 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 471 IssueTestTokens(account_id); | 477 IssueTestTokens(account_id); |
| 472 sync_blocker.reset(); | 478 sync_blocker.reset(); |
| 473 EXPECT_FALSE(sync_service_->IsSyncActive()); | 479 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 474 } | 480 } |
| 475 | 481 |
| 476 } // namespace browser_sync | 482 } // namespace browser_sync |
| OLD | NEW |