| 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 "testing/gtest/include/gtest/gtest.h" | 5 #include "testing/gtest/include/gtest/gtest.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
| 10 #include "chrome/browser/signin/fake_signin_manager.h" | 10 #include "chrome/browser/signin/fake_signin_manager.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 sync_->AddObserver(&observer_); | 152 sync_->AddObserver(&observer_); |
| 153 sync_->set_synchronous_sync_configuration(); | 153 sync_->set_synchronous_sync_configuration(); |
| 154 } | 154 } |
| 155 | 155 |
| 156 static BrowserContextKeyedService* BuildCrosService( | 156 static BrowserContextKeyedService* BuildCrosService( |
| 157 content::BrowserContext* context) { | 157 content::BrowserContext* context) { |
| 158 Profile* profile = static_cast<Profile*>(context); | 158 Profile* profile = static_cast<Profile*>(context); |
| 159 SigninManagerBase* signin = | 159 SigninManagerBase* signin = |
| 160 SigninManagerFactory::GetForProfile(profile); | 160 SigninManagerFactory::GetForProfile(profile); |
| 161 profile->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 161 profile->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 162 "test_user"); | 162 "test_user@gmail.com"); |
| 163 signin->Initialize(profile, NULL); | 163 signin->Initialize(profile, NULL); |
| 164 EXPECT_FALSE(signin->GetAuthenticatedUsername().empty()); | 164 EXPECT_FALSE(signin->GetAuthenticatedUsername().empty()); |
| 165 return new TestProfileSyncService( | 165 return new TestProfileSyncService( |
| 166 new ProfileSyncComponentsFactoryMock(), | 166 new ProfileSyncComponentsFactoryMock(), |
| 167 profile, | 167 profile, |
| 168 signin, | 168 signin, |
| 169 ProfileSyncService::AUTO_START, | 169 ProfileSyncService::AUTO_START, |
| 170 true); | 170 true); |
| 171 } | 171 } |
| 172 }; | 172 }; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 200 EXPECT_CALL(*data_type_manager, state()). | 200 EXPECT_CALL(*data_type_manager, state()). |
| 201 WillOnce(Return(DataTypeManager::CONFIGURED)). | 201 WillOnce(Return(DataTypeManager::CONFIGURED)). |
| 202 WillOnce(Return(DataTypeManager::CONFIGURED)); | 202 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 203 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 203 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 204 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 204 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 205 | 205 |
| 206 sync_->SetSetupInProgress(true); | 206 sync_->SetSetupInProgress(true); |
| 207 | 207 |
| 208 // Simulate successful signin as test_user. | 208 // Simulate successful signin as test_user. |
| 209 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 209 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 210 "test_user"); | 210 "test_user@gmail.com"); |
| 211 sync_->signin()->SetAuthenticatedUsername("test_user"); | 211 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com"); |
| 212 GoogleServiceSigninSuccessDetails details("test_user", ""); | 212 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", ""); |
| 213 content::NotificationService::current()->Notify( | 213 content::NotificationService::current()->Notify( |
| 214 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 214 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 215 content::Source<Profile>(profile_.get()), | 215 content::Source<Profile>(profile_.get()), |
| 216 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 216 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 217 | 217 |
| 218 // Create some tokens in the token service. | 218 // Create some tokens in the token service. |
| 219 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 219 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 220 GaiaConstants::kSyncService, "sync_token"); | 220 GaiaConstants::kSyncService, "sync_token"); |
| 221 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 221 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 222 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); | 222 GaiaConstants::kGaiaOAuth2LoginRefreshToken, "oauth2_login_token"); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 EXPECT_CALL(*data_type_manager, state()). | 254 EXPECT_CALL(*data_type_manager, state()). |
| 255 WillOnce(Return(DataTypeManager::CONFIGURED)). | 255 WillOnce(Return(DataTypeManager::CONFIGURED)). |
| 256 WillOnce(Return(DataTypeManager::CONFIGURED)); | 256 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 257 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 257 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 258 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 258 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 259 | 259 |
| 260 sync_->SetSetupInProgress(true); | 260 sync_->SetSetupInProgress(true); |
| 261 | 261 |
| 262 // Simulate successful signin as test_user. | 262 // Simulate successful signin as test_user. |
| 263 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 263 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 264 "test_user"); | 264 "test_user@gmail.com"); |
| 265 sync_->signin()->SetAuthenticatedUsername("test_user"); | 265 sync_->signin()->SetAuthenticatedUsername("test_user@gmail.com"); |
| 266 GoogleServiceSigninSuccessDetails details("test_user", ""); | 266 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", ""); |
| 267 content::NotificationService::current()->Notify( | 267 content::NotificationService::current()->Notify( |
| 268 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 268 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 269 content::Source<Profile>(profile_.get()), | 269 content::Source<Profile>(profile_.get()), |
| 270 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 270 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 271 // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens. | 271 // NOTE: Unlike StartFirstTime, this test does not issue any auth tokens. |
| 272 token_service->LoadTokensFromDB(); | 272 token_service->LoadTokensFromDB(); |
| 273 | 273 |
| 274 sync_->SetSetupInProgress(false); | 274 sync_->SetSetupInProgress(false); |
| 275 // Backend should initialize using a bogus GAIA token for credentials. | 275 // Backend should initialize using a bogus GAIA token for credentials. |
| 276 EXPECT_TRUE(sync_->ShouldPushChanges()); | 276 EXPECT_TRUE(sync_->ShouldPushChanges()); |
| 277 } | 277 } |
| 278 | 278 |
| 279 TEST_F(ProfileSyncServiceStartupTest, StartInvalidCredentials) { | 279 TEST_F(ProfileSyncServiceStartupTest, StartInvalidCredentials) { |
| 280 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, | 280 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 281 "test_user"); | 281 "test_user@gmail.com"); |
| 282 SigninManagerFactory::GetForProfile( | 282 SigninManagerFactory::GetForProfile( |
| 283 profile_.get())->Initialize(profile_.get(), NULL); | 283 profile_.get())->Initialize(profile_.get(), NULL); |
| 284 CreateSyncService(); | 284 CreateSyncService(); |
| 285 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 285 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 286 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 286 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
| 287 TokenService* token_service = static_cast<TokenService*>( | 287 TokenService* token_service = static_cast<TokenService*>( |
| 288 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 288 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 289 profile_.get(), BuildFakeTokenService)); | 289 profile_.get(), BuildFakeTokenService)); |
| 290 token_service->LoadTokensFromDB(); | 290 token_service->LoadTokensFromDB(); |
| 291 | 291 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 302 | 302 |
| 303 // Update the credentials, unstalling the backend. | 303 // Update the credentials, unstalling the backend. |
| 304 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 304 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 305 EXPECT_CALL(*data_type_manager, state()). | 305 EXPECT_CALL(*data_type_manager, state()). |
| 306 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 306 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 307 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 307 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 308 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 308 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 309 sync_->SetSetupInProgress(true); | 309 sync_->SetSetupInProgress(true); |
| 310 | 310 |
| 311 // Simulate successful signin. | 311 // Simulate successful signin. |
| 312 GoogleServiceSigninSuccessDetails details("test_user", std::string()); | 312 GoogleServiceSigninSuccessDetails details("test_user@gmail.com", |
| 313 std::string()); |
| 313 content::NotificationService::current()->Notify( | 314 content::NotificationService::current()->Notify( |
| 314 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 315 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 315 content::Source<Profile>(profile_.get()), | 316 content::Source<Profile>(profile_.get()), |
| 316 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 317 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 317 | 318 |
| 318 token_service->IssueAuthTokenForTest( | 319 token_service->IssueAuthTokenForTest( |
| 319 GaiaConstants::kSyncService, "sync_token"); | 320 GaiaConstants::kSyncService, "sync_token"); |
| 320 sync_->SetSetupInProgress(false); | 321 sync_->SetSetupInProgress(false); |
| 321 base::MessageLoop::current()->Run(); | 322 base::MessageLoop::current()->Run(); |
| 322 | 323 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 356 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 356 | 357 |
| 357 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 358 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 358 GaiaConstants::kSyncService, "sync_token"); | 359 GaiaConstants::kSyncService, "sync_token"); |
| 359 sync_->Initialize(); | 360 sync_->Initialize(); |
| 360 EXPECT_TRUE(sync_->ShouldPushChanges()); | 361 EXPECT_TRUE(sync_->ShouldPushChanges()); |
| 361 } | 362 } |
| 362 | 363 |
| 363 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { | 364 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { |
| 364 // Pre load the tokens | 365 // Pre load the tokens |
| 365 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 366 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 367 "test_user@gmail.com"); |
| 366 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 368 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 367 profile_.get(), NULL); | 369 profile_.get(), NULL); |
| 368 CreateSyncService(); | 370 CreateSyncService(); |
| 369 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 371 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 370 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 372 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 371 EXPECT_CALL(*data_type_manager, state()). | 373 EXPECT_CALL(*data_type_manager, state()). |
| 372 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 374 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 373 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 375 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 374 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 376 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 375 | 377 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 386 // Clear the datatype preference fields (simulating bug 154940). | 388 // Clear the datatype preference fields (simulating bug 154940). |
| 387 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); | 389 profile_->GetPrefs()->ClearPref(prefs::kSyncKeepEverythingSynced); |
| 388 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 390 syncer::ModelTypeSet user_types = syncer::UserTypes(); |
| 389 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); | 391 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); |
| 390 iter.Good(); iter.Inc()) { | 392 iter.Good(); iter.Inc()) { |
| 391 profile_->GetPrefs()->ClearPref( | 393 profile_->GetPrefs()->ClearPref( |
| 392 browser_sync::SyncPrefs::GetPrefNameForDataType(iter.Get())); | 394 browser_sync::SyncPrefs::GetPrefNameForDataType(iter.Get())); |
| 393 } | 395 } |
| 394 | 396 |
| 395 // Pre load the tokens | 397 // Pre load the tokens |
| 396 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 398 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 399 "test_user@gmail.com"); |
| 397 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 400 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 398 profile_.get(), NULL); | 401 profile_.get(), NULL); |
| 399 CreateSyncService(); | 402 CreateSyncService(); |
| 400 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 403 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 401 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 404 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 402 EXPECT_CALL(*data_type_manager, state()). | 405 EXPECT_CALL(*data_type_manager, state()). |
| 403 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 406 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 404 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 407 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 405 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 406 | 409 |
| 407 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 410 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 408 GaiaConstants::kSyncService, "sync_token"); | 411 GaiaConstants::kSyncService, "sync_token"); |
| 409 sync_->Initialize(); | 412 sync_->Initialize(); |
| 410 | 413 |
| 411 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( | 414 EXPECT_TRUE(profile_->GetPrefs()->GetBoolean( |
| 412 prefs::kSyncKeepEverythingSynced)); | 415 prefs::kSyncKeepEverythingSynced)); |
| 413 } | 416 } |
| 414 | 417 |
| 415 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 418 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
| 416 // case where only bookmarks are enabled. | 419 // case where only bookmarks are enabled. |
| 417 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { | 420 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { |
| 418 // Explicitly set Keep Everything Synced to false and have only bookmarks | 421 // Explicitly set Keep Everything Synced to false and have only bookmarks |
| 419 // enabled. | 422 // enabled. |
| 420 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); | 423 profile_->GetPrefs()->SetBoolean(prefs::kSyncKeepEverythingSynced, false); |
| 421 | 424 |
| 422 // Pre load the tokens | 425 // Pre load the tokens |
| 423 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 426 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 427 "test_user@gmail.com"); |
| 424 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 428 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 425 profile_.get(), NULL); | 429 profile_.get(), NULL); |
| 426 CreateSyncService(); | 430 CreateSyncService(); |
| 427 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 431 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 428 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 432 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 429 EXPECT_CALL(*data_type_manager, state()). | 433 EXPECT_CALL(*data_type_manager, state()). |
| 430 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 434 WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 431 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 435 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 432 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 436 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 433 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 437 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 434 GaiaConstants::kSyncService, "sync_token"); | 438 GaiaConstants::kSyncService, "sync_token"); |
| 435 sync_->Initialize(); | 439 sync_->Initialize(); |
| 436 | 440 |
| 437 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( | 441 EXPECT_FALSE(profile_->GetPrefs()->GetBoolean( |
| 438 prefs::kSyncKeepEverythingSynced)); | 442 prefs::kSyncKeepEverythingSynced)); |
| 439 } | 443 } |
| 440 | 444 |
| 441 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 445 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
| 442 // Service should not be started by Initialize() since it's managed. | 446 // Service should not be started by Initialize() since it's managed. |
| 443 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 447 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 448 "test_user@gmail.com"); |
| 444 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 449 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 445 profile_.get(), NULL); | 450 profile_.get(), NULL); |
| 446 CreateSyncService(); | 451 CreateSyncService(); |
| 447 | 452 |
| 448 // Disable sync through policy. | 453 // Disable sync through policy. |
| 449 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); | 454 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); |
| 450 EXPECT_CALL(*sync_->components_factory_mock(), | 455 EXPECT_CALL(*sync_->components_factory_mock(), |
| 451 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); | 456 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); |
| 452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 457 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 453 | 458 |
| 454 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 459 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 455 GaiaConstants::kSyncService, "sync_token"); | 460 GaiaConstants::kSyncService, "sync_token"); |
| 456 sync_->Initialize(); | 461 sync_->Initialize(); |
| 457 } | 462 } |
| 458 | 463 |
| 459 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 464 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
| 460 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 465 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 466 "test_user@gmail.com"); |
| 461 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 467 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 462 profile_.get(), NULL); | 468 profile_.get(), NULL); |
| 463 CreateSyncService(); | 469 CreateSyncService(); |
| 464 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 470 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 465 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 471 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 466 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 472 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 467 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 473 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 468 GaiaConstants::kSyncService, "sync_token"); | 474 GaiaConstants::kSyncService, "sync_token"); |
| 469 sync_->Initialize(); | 475 sync_->Initialize(); |
| 470 | 476 |
| 471 // The service should stop when switching to managed mode. | 477 // The service should stop when switching to managed mode. |
| 472 Mock::VerifyAndClearExpectations(data_type_manager); | 478 Mock::VerifyAndClearExpectations(data_type_manager); |
| 473 EXPECT_CALL(*data_type_manager, state()). | 479 EXPECT_CALL(*data_type_manager, state()). |
| 474 WillOnce(Return(DataTypeManager::CONFIGURED)); | 480 WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 475 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 481 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 476 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 482 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 477 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); | 483 profile_->GetPrefs()->SetBoolean(prefs::kSyncManaged, true); |
| 478 | 484 |
| 479 // When switching back to unmanaged, the state should change, but the service | 485 // When switching back to unmanaged, the state should change, but the service |
| 480 // should not start up automatically (kSyncSetupCompleted will be false). | 486 // should not start up automatically (kSyncSetupCompleted will be false). |
| 481 Mock::VerifyAndClearExpectations(data_type_manager); | 487 Mock::VerifyAndClearExpectations(data_type_manager); |
| 482 EXPECT_CALL(*sync_->components_factory_mock(), | 488 EXPECT_CALL(*sync_->components_factory_mock(), |
| 483 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); | 489 CreateDataTypeManager(_, _, _, _, _, _)).Times(0); |
| 484 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 490 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 485 profile_->GetPrefs()->ClearPref(prefs::kSyncManaged); | 491 profile_->GetPrefs()->ClearPref(prefs::kSyncManaged); |
| 486 } | 492 } |
| 487 | 493 |
| 488 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { | 494 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { |
| 489 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 495 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 496 "test_user@gmail.com"); |
| 490 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 497 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 491 profile_.get(), NULL); | 498 profile_.get(), NULL); |
| 492 CreateSyncService(); | 499 CreateSyncService(); |
| 493 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 500 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 494 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; | 501 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; |
| 495 syncer::SyncError error( | 502 syncer::SyncError error( |
| 496 FROM_HERE, "Association failed.", syncer::BOOKMARKS); | 503 FROM_HERE, "Association failed.", syncer::BOOKMARKS); |
| 497 std::map<syncer::ModelType, syncer::SyncError> errors; | 504 std::map<syncer::ModelType, syncer::SyncError> errors; |
| 498 errors[syncer::BOOKMARKS] = error; | 505 errors[syncer::BOOKMARKS] = error; |
| 499 DataTypeManager::ConfigureResult result( | 506 DataTypeManager::ConfigureResult result( |
| 500 status, | 507 status, |
| 501 syncer::ModelTypeSet(), | 508 syncer::ModelTypeSet(), |
| 502 errors, | 509 errors, |
| 503 syncer::ModelTypeSet()); | 510 syncer::ModelTypeSet()); |
| 504 EXPECT_CALL(*data_type_manager, Configure(_, _)). | 511 EXPECT_CALL(*data_type_manager, Configure(_, _)). |
| 505 WillRepeatedly( | 512 WillRepeatedly( |
| 506 DoAll(InvokeOnConfigureStart(sync_), | 513 DoAll(InvokeOnConfigureStart(sync_), |
| 507 InvokeOnConfigureDone(sync_, result))); | 514 InvokeOnConfigureDone(sync_, result))); |
| 508 EXPECT_CALL(*data_type_manager, state()). | 515 EXPECT_CALL(*data_type_manager, state()). |
| 509 WillOnce(Return(DataTypeManager::STOPPED)); | 516 WillOnce(Return(DataTypeManager::STOPPED)); |
| 510 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 517 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 511 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 518 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 512 GaiaConstants::kSyncService, "sync_token"); | 519 GaiaConstants::kSyncService, "sync_token"); |
| 513 sync_->Initialize(); | 520 sync_->Initialize(); |
| 514 EXPECT_TRUE(sync_->HasUnrecoverableError()); | 521 EXPECT_TRUE(sync_->HasUnrecoverableError()); |
| 515 } | 522 } |
| 516 | 523 |
| 517 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 524 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
| 518 // Pre load the tokens | 525 // Pre load the tokens |
| 519 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, "test_user"); | 526 profile_->GetPrefs()->SetString(prefs::kGoogleServicesUsername, |
| 527 "test_user@gmail.com"); |
| 520 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( | 528 SigninManagerFactory::GetForProfile(profile_.get())->Initialize( |
| 521 profile_.get(), NULL); | 529 profile_.get(), NULL); |
| 522 CreateSyncService(); | 530 CreateSyncService(); |
| 523 | 531 |
| 524 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); | 532 profile_->GetPrefs()->ClearPref(prefs::kSyncHasSetupCompleted); |
| 525 | 533 |
| 526 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 534 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 527 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( | 535 TokenServiceFactory::GetForProfile(profile_.get())->IssueAuthTokenForTest( |
| 528 GaiaConstants::kSyncService, "sync_token"); | 536 GaiaConstants::kSyncService, "sync_token"); |
| 529 sync_->fail_initial_download(); | 537 sync_->fail_initial_download(); |
| 530 | 538 |
| 531 sync_->Initialize(); | 539 sync_->Initialize(); |
| 532 EXPECT_FALSE(sync_->sync_initialized()); | 540 EXPECT_FALSE(sync_->sync_initialized()); |
| 533 EXPECT_FALSE(sync_->GetBackendForTest()); | 541 EXPECT_FALSE(sync_->GetBackendForTest()); |
| 534 } | 542 } |
| OLD | NEW |