| 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" |
| 11 #include "components/browser_sync/profile_sync_test_util.h" | 11 #include "components/browser_sync/profile_sync_test_util.h" |
| 12 #include "components/prefs/pref_service.h" | 12 #include "components/prefs/pref_service.h" |
| 13 #include "components/signin/core/browser/account_tracker_service.h" | 13 #include "components/signin/core/browser/account_tracker_service.h" |
| 14 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h" | 14 #include "components/signin/core/browser/fake_profile_oauth2_token_service.h" |
| 15 #include "components/signin/core/browser/profile_oauth2_token_service.h" | 15 #include "components/signin/core/browser/profile_oauth2_token_service.h" |
| 16 #include "components/signin/core/browser/signin_manager.h" | 16 #include "components/signin/core/browser/signin_manager.h" |
| 17 #include "components/signin/core/common/signin_pref_names.h" | 17 #include "components/signin/core/common/signin_pref_names.h" |
| 18 #include "components/sync/base/pref_names.h" | 18 #include "components/sync/base/pref_names.h" |
| 19 #include "components/sync/driver/data_type_manager_mock.h" | 19 #include "components/sync/driver/data_type_manager_mock.h" |
| 20 #include "components/sync/driver/fake_data_type_controller.h" | 20 #include "components/sync/driver/fake_data_type_controller.h" |
| 21 #include "components/sync/driver/glue/sync_backend_host_mock.h" | |
| 22 #include "components/sync/driver/sync_api_component_factory_mock.h" | 21 #include "components/sync/driver/sync_api_component_factory_mock.h" |
| 23 #include "components/sync/driver/sync_service_observer.h" | 22 #include "components/sync/driver/sync_service_observer.h" |
| 23 #include "components/sync/engine/fake_sync_engine.h" |
| 24 #include "components/sync_preferences/pref_service_syncable.h" | 24 #include "components/sync_preferences/pref_service_syncable.h" |
| 25 #include "google_apis/gaia/gaia_auth_consumer.h" | 25 #include "google_apis/gaia/gaia_auth_consumer.h" |
| 26 #include "google_apis/gaia/gaia_constants.h" | 26 #include "google_apis/gaia/gaia_constants.h" |
| 27 #include "net/url_request/url_request_test_util.h" | 27 #include "net/url_request/url_request_test_util.h" |
| 28 #include "testing/gmock/include/gmock/gmock.h" | 28 #include "testing/gmock/include/gmock/gmock.h" |
| 29 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
| 30 | 30 |
| 31 using syncer::DataTypeManager; | 31 using syncer::DataTypeManager; |
| 32 using syncer::DataTypeManagerMock; | 32 using syncer::DataTypeManagerMock; |
| 33 using syncer::SyncBackendHostMock; | 33 using syncer::FakeSyncEngine; |
| 34 using testing::_; | 34 using testing::_; |
| 35 using testing::AnyNumber; | 35 using testing::AnyNumber; |
| 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 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 return account_id; | 129 return account_id; |
| 130 } | 130 } |
| 131 | 131 |
| 132 DataTypeManagerMock* SetUpDataTypeManager() { | 132 DataTypeManagerMock* SetUpDataTypeManager() { |
| 133 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); | 133 DataTypeManagerMock* data_type_manager = new DataTypeManagerMock(); |
| 134 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) | 134 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) |
| 135 .WillOnce(Return(data_type_manager)); | 135 .WillOnce(Return(data_type_manager)); |
| 136 return data_type_manager; | 136 return data_type_manager; |
| 137 } | 137 } |
| 138 | 138 |
| 139 SyncBackendHostMock* SetUpSyncBackendHost() { | 139 FakeSyncEngine* SetUpSyncEngine() { |
| 140 SyncBackendHostMock* sync_backend_host = new SyncBackendHostMock(); | 140 FakeSyncEngine* sync_backend_host = new FakeSyncEngine(); |
| 141 EXPECT_CALL(*component_factory_, CreateSyncBackendHost(_, _, _, _)) | 141 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)) |
| 142 .WillOnce(Return(sync_backend_host)); | 142 .WillOnce(Return(sync_backend_host)); |
| 143 return sync_backend_host; | 143 return sync_backend_host; |
| 144 } | 144 } |
| 145 | 145 |
| 146 PrefService* pref_service() { | 146 PrefService* pref_service() { |
| 147 return profile_sync_service_bundle_.pref_service(); | 147 return profile_sync_service_bundle_.pref_service(); |
| 148 } | 148 } |
| 149 | 149 |
| 150 base::MessageLoop message_loop_; | 150 base::MessageLoop message_loop_; |
| 151 ProfileSyncServiceBundle profile_sync_service_bundle_; | 151 ProfileSyncServiceBundle profile_sync_service_bundle_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 162 SimulateTestUserSignin(nullptr); | 162 SimulateTestUserSignin(nullptr); |
| 163 EXPECT_TRUE( | 163 EXPECT_TRUE( |
| 164 profile_sync_service_bundle_.signin_manager()->IsAuthenticated()); | 164 profile_sync_service_bundle_.signin_manager()->IsAuthenticated()); |
| 165 } | 165 } |
| 166 }; | 166 }; |
| 167 | 167 |
| 168 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { | 168 TEST_F(ProfileSyncServiceStartupTest, StartFirstTime) { |
| 169 // We've never completed startup. | 169 // We've never completed startup. |
| 170 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 170 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 171 CreateSyncService(ProfileSyncService::MANUAL_START); | 171 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 172 SetUpSyncBackendHost(); | 172 SetUpSyncEngine(); |
| 173 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 173 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 174 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 174 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
| 175 | 175 |
| 176 // Should not actually start, rather just clean things up and wait | 176 // Should not actually start, rather just clean things up and wait |
| 177 // to be enabled. | 177 // to be enabled. |
| 178 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 178 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 179 sync_service_->Initialize(); | 179 sync_service_->Initialize(); |
| 180 | 180 |
| 181 // Preferences should be back to defaults. | 181 // Preferences should be back to defaults. |
| 182 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); | 182 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 // This request should fail as login token was not issued. | 236 // This request should fail as login token was not issued. |
| 237 EXPECT_FALSE(sync_service_->IsSyncActive()); | 237 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 238 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP, | 238 EXPECT_EQ(GoogleServiceAuthError::USER_NOT_SIGNED_UP, |
| 239 sync_service_->GetAuthError().state()); | 239 sync_service_->GetAuthError().state()); |
| 240 } | 240 } |
| 241 | 241 |
| 242 // TODO(pavely): Reenable test once android is switched to oauth2. | 242 // TODO(pavely): Reenable test once android is switched to oauth2. |
| 243 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { | 243 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartInvalidCredentials) { |
| 244 CreateSyncService(ProfileSyncService::MANUAL_START); | 244 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 245 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 245 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 246 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); | 246 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); |
| 247 | 247 |
| 248 // Tell the backend to stall while downloading control types (simulating an | 248 // Tell the backend to stall while downloading control types (simulating an |
| 249 // auth error). | 249 // auth error). |
| 250 mock_sbh->set_fail_initial_download(true); | 250 mock_sbh->set_fail_initial_download(true); |
| 251 | 251 |
| 252 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 252 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 253 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); | 253 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(0); |
| 254 | 254 |
| 255 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 255 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 256 sync_service_->Initialize(); | 256 sync_service_->Initialize(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 270 | 270 |
| 271 sync_blocker.reset(); | 271 sync_blocker.reset(); |
| 272 | 272 |
| 273 // Verify we successfully finish startup and configuration. | 273 // Verify we successfully finish startup and configuration. |
| 274 EXPECT_TRUE(sync_service_->IsSyncActive()); | 274 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 275 } | 275 } |
| 276 | 276 |
| 277 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { | 277 TEST_F(ProfileSyncServiceStartupCrosTest, StartCrosNoCredentials) { |
| 278 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) | 278 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _)) |
| 279 .Times(0); | 279 .Times(0); |
| 280 EXPECT_CALL(*component_factory_, CreateSyncBackendHost(_, _, _, _)).Times(0); | 280 EXPECT_CALL(*component_factory_, CreateSyncEngine(_, _, _, _)).Times(0); |
| 281 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 281 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 282 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 282 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 283 | 283 |
| 284 sync_service_->Initialize(); | 284 sync_service_->Initialize(); |
| 285 // Sync should not start because there are no tokens yet. | 285 // Sync should not start because there are no tokens yet. |
| 286 EXPECT_FALSE(sync_service_->IsSyncActive()); | 286 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 287 sync_service_->SetFirstSetupComplete(); | 287 sync_service_->SetFirstSetupComplete(); |
| 288 | 288 |
| 289 // Sync should not start because there are still no tokens. | 289 // Sync should not start because there are still no tokens. |
| 290 EXPECT_FALSE(sync_service_->IsSyncActive()); | 290 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 291 } | 291 } |
| 292 | 292 |
| 293 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { | 293 TEST_F(ProfileSyncServiceStartupCrosTest, StartFirstTime) { |
| 294 SetUpSyncBackendHost(); | 294 SetUpSyncEngine(); |
| 295 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 295 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 296 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 296 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 297 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 297 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 298 EXPECT_CALL(*data_type_manager, state()) | 298 EXPECT_CALL(*data_type_manager, state()) |
| 299 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 299 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 300 EXPECT_CALL(*data_type_manager, Stop()); | 300 EXPECT_CALL(*data_type_manager, Stop()); |
| 301 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 301 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 302 | 302 |
| 303 IssueTestTokens( | 303 IssueTestTokens( |
| 304 profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount( | 304 profile_sync_service_bundle_.account_tracker()->PickAccountIdForAccount( |
| 305 "12345", kEmail)); | 305 "12345", kEmail)); |
| 306 sync_service_->Initialize(); | 306 sync_service_->Initialize(); |
| 307 EXPECT_TRUE(sync_service_->IsSyncActive()); | 307 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 308 } | 308 } |
| 309 | 309 |
| 310 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { | 310 TEST_F(ProfileSyncServiceStartupTest, StartNormal) { |
| 311 // Pre load the tokens | 311 // Pre load the tokens |
| 312 CreateSyncService(ProfileSyncService::MANUAL_START); | 312 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 313 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 313 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 314 sync_service_->SetFirstSetupComplete(); | 314 sync_service_->SetFirstSetupComplete(); |
| 315 SetUpSyncBackendHost(); | 315 SetUpSyncEngine(); |
| 316 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 316 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 317 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 317 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 318 EXPECT_CALL(*data_type_manager, state()) | 318 EXPECT_CALL(*data_type_manager, state()) |
| 319 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 319 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 320 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 320 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 321 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 321 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 322 | 322 |
| 323 IssueTestTokens(account_id); | 323 IssueTestTokens(account_id); |
| 324 | 324 |
| 325 sync_service_->Initialize(); | 325 sync_service_->Initialize(); |
| 326 } | 326 } |
| 327 | 327 |
| 328 // Test that we can recover from a case where a bug in the code resulted in | 328 // 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 | 329 // OnUserChoseDatatypes not being properly called and datatype preferences |
| 330 // therefore being left unset. | 330 // therefore being left unset. |
| 331 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { | 331 TEST_F(ProfileSyncServiceStartupTest, StartRecoverDatatypePrefs) { |
| 332 // Clear the datatype preference fields (simulating bug 154940). | 332 // Clear the datatype preference fields (simulating bug 154940). |
| 333 pref_service()->ClearPref(syncer::prefs::kSyncKeepEverythingSynced); | 333 pref_service()->ClearPref(syncer::prefs::kSyncKeepEverythingSynced); |
| 334 syncer::ModelTypeSet user_types = syncer::UserTypes(); | 334 syncer::ModelTypeSet user_types = syncer::UserTypes(); |
| 335 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); iter.Good(); | 335 for (syncer::ModelTypeSet::Iterator iter = user_types.First(); iter.Good(); |
| 336 iter.Inc()) { | 336 iter.Inc()) { |
| 337 pref_service()->ClearPref( | 337 pref_service()->ClearPref( |
| 338 syncer::SyncPrefs::GetPrefNameForDataType(iter.Get())); | 338 syncer::SyncPrefs::GetPrefNameForDataType(iter.Get())); |
| 339 } | 339 } |
| 340 | 340 |
| 341 // Pre load the tokens | 341 // Pre load the tokens |
| 342 CreateSyncService(ProfileSyncService::MANUAL_START); | 342 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 343 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 343 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 344 sync_service_->SetFirstSetupComplete(); | 344 sync_service_->SetFirstSetupComplete(); |
| 345 SetUpSyncBackendHost(); | 345 SetUpSyncEngine(); |
| 346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 346 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 347 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 347 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 348 EXPECT_CALL(*data_type_manager, state()) | 348 EXPECT_CALL(*data_type_manager, state()) |
| 349 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 349 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 350 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 350 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 351 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 351 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 352 | 352 |
| 353 IssueTestTokens(account_id); | 353 IssueTestTokens(account_id); |
| 354 sync_service_->Initialize(); | 354 sync_service_->Initialize(); |
| 355 | 355 |
| 356 EXPECT_TRUE( | 356 EXPECT_TRUE( |
| 357 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); | 357 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
| 358 } | 358 } |
| 359 | 359 |
| 360 // Verify that the recovery of datatype preferences doesn't overwrite a valid | 360 // Verify that the recovery of datatype preferences doesn't overwrite a valid |
| 361 // case where only bookmarks are enabled. | 361 // case where only bookmarks are enabled. |
| 362 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { | 362 TEST_F(ProfileSyncServiceStartupTest, StartDontRecoverDatatypePrefs) { |
| 363 // Explicitly set Keep Everything Synced to false and have only bookmarks | 363 // Explicitly set Keep Everything Synced to false and have only bookmarks |
| 364 // enabled. | 364 // enabled. |
| 365 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); | 365 pref_service()->SetBoolean(syncer::prefs::kSyncKeepEverythingSynced, false); |
| 366 | 366 |
| 367 // Pre load the tokens | 367 // Pre load the tokens |
| 368 CreateSyncService(ProfileSyncService::MANUAL_START); | 368 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 369 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 369 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 370 sync_service_->SetFirstSetupComplete(); | 370 sync_service_->SetFirstSetupComplete(); |
| 371 SetUpSyncBackendHost(); | 371 SetUpSyncEngine(); |
| 372 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 372 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 373 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 373 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 374 EXPECT_CALL(*data_type_manager, state()) | 374 EXPECT_CALL(*data_type_manager, state()) |
| 375 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 375 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 376 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 376 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 377 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 377 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 378 IssueTestTokens(account_id); | 378 IssueTestTokens(account_id); |
| 379 sync_service_->Initialize(); | 379 sync_service_->Initialize(); |
| 380 | 380 |
| 381 EXPECT_FALSE( | 381 EXPECT_FALSE( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 393 .Times(0); | 393 .Times(0); |
| 394 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 394 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 395 | 395 |
| 396 sync_service_->Initialize(); | 396 sync_service_->Initialize(); |
| 397 } | 397 } |
| 398 | 398 |
| 399 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { | 399 TEST_F(ProfileSyncServiceStartupTest, SwitchManaged) { |
| 400 CreateSyncService(ProfileSyncService::MANUAL_START); | 400 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 401 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 401 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 402 sync_service_->SetFirstSetupComplete(); | 402 sync_service_->SetFirstSetupComplete(); |
| 403 SetUpSyncBackendHost(); | 403 SetUpSyncEngine(); |
| 404 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 404 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 405 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 405 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 406 EXPECT_CALL(*data_type_manager, state()) | 406 EXPECT_CALL(*data_type_manager, state()) |
| 407 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 407 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 408 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 409 IssueTestTokens(account_id); | 409 IssueTestTokens(account_id); |
| 410 sync_service_->Initialize(); | 410 sync_service_->Initialize(); |
| 411 EXPECT_TRUE(sync_service_->IsBackendInitialized()); | 411 EXPECT_TRUE(sync_service_->IsBackendInitialized()); |
| 412 EXPECT_TRUE(sync_service_->IsSyncActive()); | 412 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 413 | 413 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 428 .Times(0); | 428 .Times(0); |
| 429 pref_service()->ClearPref(syncer::prefs::kSyncManaged); | 429 pref_service()->ClearPref(syncer::prefs::kSyncManaged); |
| 430 EXPECT_FALSE(sync_service_->IsBackendInitialized()); | 430 EXPECT_FALSE(sync_service_->IsBackendInitialized()); |
| 431 EXPECT_FALSE(sync_service_->IsSyncActive()); | 431 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 432 } | 432 } |
| 433 | 433 |
| 434 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { | 434 TEST_F(ProfileSyncServiceStartupTest, StartFailure) { |
| 435 CreateSyncService(ProfileSyncService::MANUAL_START); | 435 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 436 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 436 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 437 sync_service_->SetFirstSetupComplete(); | 437 sync_service_->SetFirstSetupComplete(); |
| 438 SetUpSyncBackendHost(); | 438 SetUpSyncEngine(); |
| 439 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); | 439 DataTypeManagerMock* data_type_manager = SetUpDataTypeManager(); |
| 440 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; | 440 DataTypeManager::ConfigureStatus status = DataTypeManager::ABORTED; |
| 441 DataTypeManager::ConfigureResult result(status, syncer::ModelTypeSet()); | 441 DataTypeManager::ConfigureResult result(status, syncer::ModelTypeSet()); |
| 442 EXPECT_CALL(*data_type_manager, Configure(_, _)) | 442 EXPECT_CALL(*data_type_manager, Configure(_, _)) |
| 443 .WillRepeatedly( | 443 .WillRepeatedly( |
| 444 DoAll(InvokeOnConfigureStart(sync_service_.get()), | 444 DoAll(InvokeOnConfigureStart(sync_service_.get()), |
| 445 InvokeOnConfigureDone( | 445 InvokeOnConfigureDone( |
| 446 sync_service_.get(), | 446 sync_service_.get(), |
| 447 base::Bind(&ProfileSyncServiceStartupTest::SetError, | 447 base::Bind(&ProfileSyncServiceStartupTest::SetError, |
| 448 base::Unretained(this)), | 448 base::Unretained(this)), |
| 449 result))); | 449 result))); |
| 450 EXPECT_CALL(*data_type_manager, state()) | 450 EXPECT_CALL(*data_type_manager, state()) |
| 451 .WillOnce(Return(DataTypeManager::STOPPED)); | 451 .WillOnce(Return(DataTypeManager::STOPPED)); |
| 452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 452 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 453 IssueTestTokens(account_id); | 453 IssueTestTokens(account_id); |
| 454 sync_service_->Initialize(); | 454 sync_service_->Initialize(); |
| 455 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); | 455 EXPECT_TRUE(sync_service_->HasUnrecoverableError()); |
| 456 } | 456 } |
| 457 | 457 |
| 458 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { | 458 TEST_F(ProfileSyncServiceStartupTest, StartDownloadFailed) { |
| 459 // Pre load the tokens | 459 // Pre load the tokens |
| 460 CreateSyncService(ProfileSyncService::MANUAL_START); | 460 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 461 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 461 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 462 SyncBackendHostMock* mock_sbh = SetUpSyncBackendHost(); | 462 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); |
| 463 mock_sbh->set_fail_initial_download(true); | 463 mock_sbh->set_fail_initial_download(true); |
| 464 | 464 |
| 465 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 465 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 466 | 466 |
| 467 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 467 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); |
| 468 sync_service_->Initialize(); | 468 sync_service_->Initialize(); |
| 469 | 469 |
| 470 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 470 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 471 IssueTestTokens(account_id); | 471 IssueTestTokens(account_id); |
| 472 sync_blocker.reset(); | 472 sync_blocker.reset(); |
| 473 EXPECT_FALSE(sync_service_->IsSyncActive()); | 473 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 474 } | 474 } |
| 475 | 475 |
| 476 } // namespace browser_sync | 476 } // namespace browser_sync |
| OLD | NEW |