Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(461)

Side by Side Diff: components/browser_sync/profile_sync_service_startup_unittest.cc

Issue 2657673004: Add shutdown notification and service refs to SyncServiceObserver. (Closed)
Patch Set: Chromeos fix Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « components/browser_sync/profile_sync_service.cc ('k') | components/browser_sync/profile_sync_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698