| Index: chrome/browser/sync/profile_sync_service_startup_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/sync/profile_sync_service_startup_unittest.cc (revision 138738)
|
| +++ chrome/browser/sync/profile_sync_service_startup_unittest.cc (working copy)
|
| @@ -162,6 +162,70 @@
|
| EXPECT_TRUE(service_->ShouldPushChanges());
|
| }
|
|
|
| +TEST_F(ProfileSyncServiceStartupTest, StartNoCredentials) {
|
| + DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| + EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0);
|
| +
|
| + // We've never completed startup.
|
| + profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
|
| + // Make sure SigninManager doesn't think we're signed in (undoes the call to
|
| + // SetAuthenticatedUsername() in CreateSyncService()).
|
| + SigninManagerFactory::GetForProfile(profile_.get())->SignOut();
|
| +
|
| + // Should not actually start, rather just clean things up and wait
|
| + // to be enabled.
|
| + EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| + service_->Initialize();
|
| + EXPECT_FALSE(service_->GetBackendForTest());
|
| +
|
| + // Preferences should be back to defaults.
|
| + EXPECT_EQ(0, profile_->GetPrefs()->GetInt64(prefs::kSyncLastSyncedTime));
|
| + EXPECT_FALSE(profile_->GetPrefs()->GetBoolean(prefs::kSyncHasSetupCompleted));
|
| + Mock::VerifyAndClearExpectations(data_type_manager);
|
| +
|
| + // Then start things up.
|
| + EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1);
|
| + EXPECT_CALL(*data_type_manager, state()).
|
| + WillOnce(Return(DataTypeManager::CONFIGURED)).
|
| + WillOnce(Return(DataTypeManager::CONFIGURED));
|
| + EXPECT_CALL(*data_type_manager, Stop()).Times(1);
|
| + EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| +
|
| + service_->set_setup_in_progress(true);
|
| + service_->signin()->StartSignIn("test_user", "", "", "");
|
| + // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens.
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_TOKEN_LOADING_FINISHED,
|
| + content::Source<TokenService>(
|
| + TokenServiceFactory::GetForProfile(profile_.get())),
|
| + content::NotificationService::NoDetails());
|
| + service_->set_setup_in_progress(false);
|
| + service_->OnUserChoseDatatypes(
|
| + false, syncable::ModelTypeSet(syncable::BOOKMARKS));
|
| + // Backend should initialize using a bogus GAIA token for credentials.
|
| + EXPECT_TRUE(service_->ShouldPushChanges());
|
| +}
|
| +
|
| +TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) {
|
| + EXPECT_CALL(*factory_mock(), CreateDataTypeManager(_, _)).Times(0);
|
| + profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
|
| + EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber());
|
| +
|
| + service_->Initialize();
|
| + // Sync should not start because there are no tokens yet.
|
| + EXPECT_FALSE(service_->ShouldPushChanges());
|
| + EXPECT_FALSE(service_->GetBackendForTest());
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_TOKEN_LOADING_FINISHED,
|
| + content::Source<TokenService>(
|
| + TokenServiceFactory::GetForProfile(profile_.get())),
|
| + content::NotificationService::NoDetails());
|
| + service_->set_setup_in_progress(false);
|
| + // Sync should not start because there are still no tokens.
|
| + EXPECT_FALSE(service_->ShouldPushChanges());
|
| + EXPECT_FALSE(service_->GetBackendForTest());
|
| +}
|
| +
|
| TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) {
|
| DataTypeManagerMock* data_type_manager = SetUpDataTypeManager();
|
| profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted);
|
|
|