| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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[] = ""; |
| 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_METHOD0(OnStateChanged, void()); | 53 MOCK_METHOD1(OnStateChanged, void(syncer::SyncService*)); |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 SyncServiceObserverMock::SyncServiceObserverMock() {} | 56 SyncServiceObserverMock::SyncServiceObserverMock() {} |
| 57 | 57 |
| 58 SyncServiceObserverMock::~SyncServiceObserverMock() {} | 58 SyncServiceObserverMock::~SyncServiceObserverMock() {} |
| 59 | 59 |
| 60 } // namespace | 60 } // namespace |
| 61 | 61 |
| 62 ACTION_P(InvokeOnConfigureStart, sync_service) { | 62 ACTION_P(InvokeOnConfigureStart, sync_service) { |
| 63 sync_service->OnConfigureStart(); | 63 sync_service->OnConfigureStart(); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 SetUpSyncEngine(); | 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)); |
| 183 EXPECT_FALSE( | 183 EXPECT_FALSE( |
| 184 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); | 184 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); |
| 185 Mock::VerifyAndClearExpectations(data_type_manager); | 185 Mock::VerifyAndClearExpectations(data_type_manager); |
| 186 | 186 |
| 187 // Then start things up. | 187 // Then start things up. |
| 188 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); | 188 EXPECT_CALL(*data_type_manager, Configure(_, _)).Times(1); |
| 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 // Create some tokens in the token service. | 199 // Create some tokens in the token service. |
| 200 IssueTestTokens(account_id); | 200 IssueTestTokens(account_id); |
| 201 | 201 |
| 202 // Simulate the UI telling sync it has finished setting up. | 202 // Simulate the UI telling sync it has finished setting up. |
| 203 sync_blocker.reset(); | 203 sync_blocker.reset(); |
| 204 sync_service_->SetFirstSetupComplete(); | 204 sync_service_->SetFirstSetupComplete(); |
| 205 EXPECT_TRUE(sync_service_->IsSyncActive()); | 205 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 206 } | 206 } |
| 207 | 207 |
| 208 // TODO(pavely): Reenable test once android is switched to oauth2. | 208 // TODO(pavely): Reenable test once android is switched to oauth2. |
| 209 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { | 209 TEST_F(ProfileSyncServiceStartupTest, DISABLED_StartNoCredentials) { |
| 210 // We've never completed startup. | 210 // We've never completed startup. |
| 211 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); | 211 pref_service()->ClearPref(syncer::prefs::kSyncFirstSetupComplete); |
| 212 CreateSyncService(ProfileSyncService::MANUAL_START); | 212 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 213 | 213 |
| 214 // Should not actually start, rather just clean things up and wait | 214 // Should not actually start, rather just clean things up and wait |
| 215 // to be enabled. | 215 // to be enabled. |
| 216 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) | 216 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) |
| 217 .Times(0); | 217 .Times(0); |
| 218 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 218 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 219 sync_service_->Initialize(); | 219 sync_service_->Initialize(); |
| 220 | 220 |
| 221 // Preferences should be back to defaults. | 221 // Preferences should be back to defaults. |
| 222 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); | 222 EXPECT_EQ(0, pref_service()->GetInt64(syncer::prefs::kSyncLastSyncedTime)); |
| 223 EXPECT_FALSE( | 223 EXPECT_FALSE( |
| 224 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); | 224 pref_service()->GetBoolean(syncer::prefs::kSyncFirstSetupComplete)); |
| 225 | 225 |
| 226 // Then start things up. | 226 // Then start things up. |
| 227 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 227 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 228 | 228 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 245 std::string account_id = SimulateTestUserSignin(sync_service_.get()); | 245 std::string account_id = SimulateTestUserSignin(sync_service_.get()); |
| 246 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); | 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(); |
| 257 EXPECT_FALSE(sync_service_->IsSyncActive()); | 257 EXPECT_FALSE(sync_service_->IsSyncActive()); |
| 258 Mock::VerifyAndClearExpectations(data_type_manager); | 258 Mock::VerifyAndClearExpectations(data_type_manager); |
| 259 | 259 |
| 260 // Update the credentials, unstalling the backend. | 260 // Update the credentials, unstalling the backend. |
| 261 EXPECT_CALL(*data_type_manager, Configure(_, _)); | 261 EXPECT_CALL(*data_type_manager, Configure(_, _)); |
| 262 EXPECT_CALL(*data_type_manager, state()) | 262 EXPECT_CALL(*data_type_manager, state()) |
| 263 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); | 263 .WillRepeatedly(Return(DataTypeManager::CONFIGURED)); |
| 264 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 264 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| 265 EXPECT_CALL(observer_, OnStateChanged()).Times(AnyNumber()); | 265 EXPECT_CALL(observer_, OnStateChanged(_)).Times(AnyNumber()); |
| 266 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); | 266 auto sync_blocker = sync_service_->GetSetupInProgressHandle(); |
| 267 | 267 |
| 268 // Simulate successful signin. | 268 // Simulate successful signin. |
| 269 SimulateTestUserSignin(sync_service_.get()); | 269 SimulateTestUserSignin(sync_service_.get()); |
| 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_, CreateSyncEngine(_, _, _, _)).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 SetUpSyncEngine(); | 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 SetUpSyncEngine(); | 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 SetUpSyncEngine(); | 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 SetUpSyncEngine(); | 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( |
| 382 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); | 382 pref_service()->GetBoolean(syncer::prefs::kSyncKeepEverythingSynced)); |
| 383 } | 383 } |
| 384 | 384 |
| 385 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { | 385 TEST_F(ProfileSyncServiceStartupTest, ManagedStartup) { |
| 386 // Service should not be started by Initialize() since it's managed. | 386 // Service should not be started by Initialize() since it's managed. |
| 387 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); | 387 pref_service()->SetString(prefs::kGoogleServicesAccountId, kEmail); |
| 388 CreateSyncService(ProfileSyncService::MANUAL_START); | 388 CreateSyncService(ProfileSyncService::MANUAL_START); |
| 389 | 389 |
| 390 // Disable sync through policy. | 390 // Disable sync through policy. |
| 391 pref_service()->SetBoolean(syncer::prefs::kSyncManaged, true); | 391 pref_service()->SetBoolean(syncer::prefs::kSyncManaged, true); |
| 392 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) | 392 EXPECT_CALL(*component_factory_, CreateDataTypeManager(_, _, _, _, _, _)) |
| 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 SetUpSyncEngine(); | 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_->IsEngineInitialized()); | 411 EXPECT_TRUE(sync_service_->IsEngineInitialized()); |
| 412 EXPECT_TRUE(sync_service_->IsSyncActive()); | 412 EXPECT_TRUE(sync_service_->IsSyncActive()); |
| 413 | 413 |
| 414 // The service should stop when switching to managed mode. | 414 // The service should stop when switching to managed mode. |
| 415 Mock::VerifyAndClearExpectations(data_type_manager); | 415 Mock::VerifyAndClearExpectations(data_type_manager); |
| 416 EXPECT_CALL(*data_type_manager, state()) | 416 EXPECT_CALL(*data_type_manager, state()) |
| 417 .WillOnce(Return(DataTypeManager::CONFIGURED)); | 417 .WillOnce(Return(DataTypeManager::CONFIGURED)); |
| 418 EXPECT_CALL(*data_type_manager, Stop()).Times(1); | 418 EXPECT_CALL(*data_type_manager, Stop()).Times(1); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 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 FakeSyncEngine* mock_sbh = SetUpSyncEngine(); | 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 |