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

Side by Side Diff: components/sync/driver/glue/sync_backend_host_impl_unittest.cc

Issue 2580033002: [Sync] Ensure that CONFIGURE_CLEAN types get unapplied before configuration (Closed)
Patch Set: Created 4 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/sync/driver/glue/sync_backend_host_impl.h" 5 #include "components/sync/driver/glue/sync_backend_host_impl.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 base::RunLoop run_loop; 234 base::RunLoop run_loop;
235 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 235 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
236 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout()); 236 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout());
237 run_loop.Run(); 237 run_loop.Run();
238 // |fake_manager_factory_|'s fake_manager() is set on the sync 238 // |fake_manager_factory_|'s fake_manager() is set on the sync
239 // thread, but we can rely on the message loop barriers to 239 // thread, but we can rely on the message loop barriers to
240 // guarantee that we see the updated value. 240 // guarantee that we see the updated value.
241 DCHECK(fake_manager_); 241 DCHECK(fake_manager_);
242 } 242 }
243 243
244 // Synchronously configures the backend's datatypes. 244 // Returns DataTypeConfigStateMap with all |enabled_types_| in
245 ModelTypeSet ConfigureDataTypes(ModelTypeSet types_to_add, 245 // CONFIGURE_ACTIVE state and all remaining types DISABLED.
246 ModelTypeSet types_to_remove, 246 ModelTypeConfigurer::DataTypeConfigStateMap ConfigStateMapForEnabledTypes() {
247 ModelTypeSet types_to_unapply) {
248 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map; 247 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map;
249 ModelTypeConfigurer::SetDataTypesState( 248 ModelTypeConfigurer::SetDataTypesState(
250 ModelTypeConfigurer::CONFIGURE_ACTIVE, types_to_add, &config_state_map); 249 ModelTypeConfigurer::CONFIGURE_ACTIVE, enabled_types_,
251 ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::DISABLED, 250 &config_state_map);
252 types_to_remove, &config_state_map); 251 ModelTypeConfigurer::SetDataTypesState(
253 ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::UNREADY, 252 ModelTypeConfigurer::DISABLED,
254 types_to_unapply, &config_state_map); 253 Difference(ModelTypeSet::All(), enabled_types_), &config_state_map);
254 return config_state_map;
255 }
255 256
256 types_to_add.PutAll(ControlTypes()); 257 // Synchronously configures the backend's datatypes.
258 ModelTypeSet ConfigureDataTypes(
259 const ModelTypeConfigurer::DataTypeConfigStateMap& config_state_map) {
257 ModelTypeSet ready_types = backend_->ConfigureDataTypes( 260 ModelTypeSet ready_types = backend_->ConfigureDataTypes(
258 CONFIGURE_REASON_RECONFIGURATION, config_state_map, 261 CONFIGURE_REASON_RECONFIGURATION, config_state_map,
259 base::Bind(&SyncEngineTest::DownloadReady, base::Unretained(this)), 262 base::Bind(&SyncEngineTest::DownloadReady, base::Unretained(this)),
260 base::Bind(&SyncEngineTest::OnDownloadRetry, base::Unretained(this))); 263 base::Bind(&SyncEngineTest::OnDownloadRetry, base::Unretained(this)));
261 base::RunLoop run_loop; 264 base::RunLoop run_loop;
262 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 265 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
263 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout()); 266 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::action_timeout());
264 run_loop.Run(); 267 run_loop.Run();
265 return ready_types; 268 return ready_types;
266 } 269 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // Test first time sync scenario. All types should be properly configured. 306 // Test first time sync scenario. All types should be properly configured.
304 307
305 TEST_F(SyncEngineTest, FirstTimeSync) { 308 TEST_F(SyncEngineTest, FirstTimeSync) {
306 InitializeBackend(true); 309 InitializeBackend(true);
307 EXPECT_EQ(ControlTypes(), fake_manager_->GetAndResetDownloadedTypes()); 310 EXPECT_EQ(ControlTypes(), fake_manager_->GetAndResetDownloadedTypes());
308 EXPECT_EQ(ControlTypes(), fake_manager_->InitialSyncEndedTypes()); 311 EXPECT_EQ(ControlTypes(), fake_manager_->InitialSyncEndedTypes());
309 EXPECT_TRUE( 312 EXPECT_TRUE(
310 fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes()) 313 fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes())
311 .Empty()); 314 .Empty());
312 315
313 ModelTypeSet ready_types = ConfigureDataTypes( 316 ModelTypeSet ready_types =
314 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 317 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
315 ModelTypeSet());
316 // Nigori is always downloaded so won't be ready. 318 // Nigori is always downloaded so won't be ready.
317 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 319 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
318 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 320 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
319 Difference(enabled_types_, ControlTypes()))); 321 Difference(enabled_types_, ControlTypes())));
320 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 322 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
321 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 323 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
322 EXPECT_TRUE( 324 EXPECT_TRUE(
323 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 325 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
324 .Empty()); 326 .Empty());
325 } 327 }
326 328
327 // Test the restart after setting up sync scenario. No enabled types should be 329 // Test the restart after setting up sync scenario. No enabled types should be
328 // downloaded or cleaned. 330 // downloaded or cleaned.
329 TEST_F(SyncEngineTest, Restart) { 331 TEST_F(SyncEngineTest, Restart) {
330 sync_prefs_->SetFirstSetupComplete(); 332 sync_prefs_->SetFirstSetupComplete();
331 ModelTypeSet all_but_nigori = enabled_types_; 333 ModelTypeSet all_but_nigori = enabled_types_;
332 fake_manager_factory_->set_progress_marker_types(enabled_types_); 334 fake_manager_factory_->set_progress_marker_types(enabled_types_);
333 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_); 335 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_);
334 InitializeBackend(true); 336 InitializeBackend(true);
335 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 337 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
336 EXPECT_TRUE( 338 EXPECT_TRUE(
337 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 339 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
338 .Empty()); 340 .Empty());
339 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 341 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
340 EXPECT_TRUE( 342 EXPECT_TRUE(
341 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 343 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
342 .Empty()); 344 .Empty());
343 345
344 ModelTypeSet ready_types = ConfigureDataTypes( 346 ModelTypeSet ready_types =
345 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 347 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
346 ModelTypeSet());
347 EXPECT_EQ(enabled_types_, ready_types); 348 EXPECT_EQ(enabled_types_, ready_types);
348 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 349 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
349 EXPECT_TRUE( 350 EXPECT_TRUE(
350 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 351 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
351 .Empty()); 352 .Empty());
352 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 353 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
353 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 354 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
354 EXPECT_TRUE( 355 EXPECT_TRUE(
355 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 356 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
356 .Empty()); 357 .Empty());
(...skipping 15 matching lines...) Expand all
372 InitializeBackend(true); 373 InitializeBackend(true);
373 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes()); 374 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes());
374 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); 375 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types));
375 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)), 376 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)),
376 fake_manager_->InitialSyncEndedTypes()); 377 fake_manager_->InitialSyncEndedTypes());
377 EXPECT_EQ( 378 EXPECT_EQ(
378 Difference(partial_types, ModelTypeSet(NIGORI)), 379 Difference(partial_types, ModelTypeSet(NIGORI)),
379 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); 380 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_));
380 381
381 // Now do the actual configuration, which should download and apply bookmarks. 382 // Now do the actual configuration, which should download and apply bookmarks.
382 ModelTypeSet ready_types = ConfigureDataTypes( 383 ModelTypeSet ready_types =
383 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 384 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
384 ModelTypeSet());
385 EXPECT_EQ(full_types, ready_types); 385 EXPECT_EQ(full_types, ready_types);
386 EXPECT_TRUE( 386 EXPECT_TRUE(
387 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 387 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
388 .Empty()); 388 .Empty());
389 EXPECT_EQ(partial_types, fake_manager_->GetAndResetDownloadedTypes()); 389 EXPECT_EQ(partial_types, fake_manager_->GetAndResetDownloadedTypes());
390 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 390 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
391 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 391 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
392 EXPECT_TRUE( 392 EXPECT_TRUE(
393 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 393 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
394 .Empty()); 394 .Empty());
(...skipping 12 matching lines...) Expand all
407 fake_manager_->InitialSyncEndedTypes()); 407 fake_manager_->InitialSyncEndedTypes());
408 EXPECT_EQ( 408 EXPECT_EQ(
409 Difference(enabled_types_, ControlTypes()), 409 Difference(enabled_types_, ControlTypes()),
410 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); 410 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_));
411 411
412 // The database was empty, so any cleaning is entirely optional. We want to 412 // The database was empty, so any cleaning is entirely optional. We want to
413 // reset this value before running the next part of the test, though. 413 // reset this value before running the next part of the test, though.
414 fake_manager_->GetAndResetCleanedTypes(); 414 fake_manager_->GetAndResetCleanedTypes();
415 415
416 // The actual configuration should redownload and apply all the enabled types. 416 // The actual configuration should redownload and apply all the enabled types.
417 ModelTypeSet ready_types = ConfigureDataTypes( 417 ModelTypeSet ready_types =
418 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 418 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
419 ModelTypeSet());
420 // Nigori is always downloaded so won't be ready. 419 // Nigori is always downloaded so won't be ready.
421 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 420 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
422 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 421 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
423 Difference(enabled_types_, ControlTypes()))); 422 Difference(enabled_types_, ControlTypes())));
424 EXPECT_TRUE( 423 EXPECT_TRUE(
425 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 424 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
426 .Empty()); 425 .Empty());
427 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 426 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
428 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 427 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
429 EXPECT_TRUE( 428 EXPECT_TRUE(
430 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 429 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
431 .Empty()); 430 .Empty());
432 } 431 }
433 432
434 TEST_F(SyncEngineTest, DisableTypes) { 433 TEST_F(SyncEngineTest, DisableTypes) {
435 // Simulate first time sync. 434 // Simulate first time sync.
436 InitializeBackend(true); 435 InitializeBackend(true);
437 fake_manager_->GetAndResetCleanedTypes(); 436 fake_manager_->GetAndResetCleanedTypes();
438 ModelTypeSet ready_types = ConfigureDataTypes( 437 ModelTypeSet ready_types =
439 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 438 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
440 ModelTypeSet());
441 // Nigori is always downloaded so won't be ready. 439 // Nigori is always downloaded so won't be ready.
442 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 440 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
443 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); 441 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes());
444 EXPECT_TRUE( 442 EXPECT_TRUE(
445 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 443 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
446 .Empty()); 444 .Empty());
447 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 445 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
448 EXPECT_TRUE( 446 EXPECT_TRUE(
449 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 447 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
450 .Empty()); 448 .Empty());
451 449
452 // Then disable two datatypes. 450 // Then disable two datatypes.
453 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES); 451 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES);
454 ModelTypeSet old_types = enabled_types_; 452 ModelTypeSet old_types = enabled_types_;
455 enabled_types_.RemoveAll(disabled_types); 453 enabled_types_.RemoveAll(disabled_types);
456 ready_types = ConfigureDataTypes( 454 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes());
457 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_),
458 ModelTypeSet());
459 455
460 // Only those datatypes disabled should be cleaned. Nothing should be 456 // Only those datatypes disabled should be cleaned. Nothing should be
461 // downloaded. 457 // downloaded.
462 EXPECT_EQ(enabled_types_, ready_types); 458 EXPECT_EQ(enabled_types_, ready_types);
463 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 459 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
464 EXPECT_EQ(disabled_types, 460 EXPECT_EQ(disabled_types,
465 Intersection(fake_manager_->GetAndResetCleanedTypes(), old_types)); 461 Intersection(fake_manager_->GetAndResetCleanedTypes(), old_types));
466 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 462 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
467 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 463 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
468 EXPECT_TRUE( 464 EXPECT_TRUE(
469 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 465 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
470 .Empty()); 466 .Empty());
471 } 467 }
472 468
473 TEST_F(SyncEngineTest, AddTypes) { 469 TEST_F(SyncEngineTest, AddTypes) {
474 // Simulate first time sync. 470 // Simulate first time sync.
475 InitializeBackend(true); 471 InitializeBackend(true);
476 fake_manager_->GetAndResetCleanedTypes(); 472 fake_manager_->GetAndResetCleanedTypes();
477 ModelTypeSet ready_types = ConfigureDataTypes( 473 ModelTypeSet ready_types =
478 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 474 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
479 ModelTypeSet());
480 // Nigori is always downloaded so won't be ready. 475 // Nigori is always downloaded so won't be ready.
481 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 476 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
482 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); 477 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes());
483 EXPECT_TRUE( 478 EXPECT_TRUE(
484 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 479 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
485 .Empty()); 480 .Empty());
486 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 481 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
487 EXPECT_TRUE( 482 EXPECT_TRUE(
488 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 483 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
489 .Empty()); 484 .Empty());
490 485
491 // Then add two datatypes. 486 // Then add two datatypes.
492 ModelTypeSet new_types(EXTENSIONS, APPS); 487 ModelTypeSet new_types(EXTENSIONS, APPS);
493 enabled_types_.PutAll(new_types); 488 enabled_types_.PutAll(new_types);
494 ready_types = ConfigureDataTypes( 489 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes());
495 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_),
496 ModelTypeSet());
497 490
498 // Only those datatypes added should be downloaded (plus nigori). Nothing 491 // Only those datatypes added should be downloaded (plus nigori). Nothing
499 // should be cleaned aside from the disabled types. 492 // should be cleaned aside from the disabled types.
500 new_types.Put(NIGORI); 493 new_types.Put(NIGORI);
501 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types); 494 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types);
502 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes()); 495 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes());
503 EXPECT_TRUE( 496 EXPECT_TRUE(
504 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 497 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
505 .Empty()); 498 .Empty());
506 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 499 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
507 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 500 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
508 EXPECT_TRUE( 501 EXPECT_TRUE(
509 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 502 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
510 .Empty()); 503 .Empty());
511 } 504 }
512 505
513 // And and disable in the same configuration. 506 // And and disable in the same configuration.
514 TEST_F(SyncEngineTest, AddDisableTypes) { 507 TEST_F(SyncEngineTest, AddDisableTypes) {
515 // Simulate first time sync. 508 // Simulate first time sync.
516 InitializeBackend(true); 509 InitializeBackend(true);
517 fake_manager_->GetAndResetCleanedTypes(); 510 fake_manager_->GetAndResetCleanedTypes();
518 ModelTypeSet ready_types = ConfigureDataTypes( 511 ModelTypeSet ready_types =
519 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 512 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
520 ModelTypeSet());
521 // Nigori is always downloaded so won't be ready. 513 // Nigori is always downloaded so won't be ready.
522 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 514 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
523 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); 515 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes());
524 EXPECT_TRUE( 516 EXPECT_TRUE(
525 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 517 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
526 .Empty()); 518 .Empty());
527 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 519 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
528 EXPECT_TRUE( 520 EXPECT_TRUE(
529 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 521 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
530 .Empty()); 522 .Empty());
531 523
532 // Then add two datatypes. 524 // Then add two datatypes.
533 ModelTypeSet old_types = enabled_types_; 525 ModelTypeSet old_types = enabled_types_;
534 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES); 526 ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES);
535 ModelTypeSet new_types(EXTENSIONS, APPS); 527 ModelTypeSet new_types(EXTENSIONS, APPS);
536 enabled_types_.PutAll(new_types); 528 enabled_types_.PutAll(new_types);
537 enabled_types_.RemoveAll(disabled_types); 529 enabled_types_.RemoveAll(disabled_types);
538 ready_types = ConfigureDataTypes( 530 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes());
539 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_),
540 ModelTypeSet());
541 531
542 // Only those datatypes added should be downloaded (plus nigori). Nothing 532 // Only those datatypes added should be downloaded (plus nigori). Nothing
543 // should be cleaned aside from the disabled types. 533 // should be cleaned aside from the disabled types.
544 new_types.Put(NIGORI); 534 new_types.Put(NIGORI);
545 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types); 535 EXPECT_EQ(Difference(enabled_types_, new_types), ready_types);
546 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes()); 536 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes());
547 EXPECT_EQ(disabled_types, 537 EXPECT_EQ(disabled_types,
548 Intersection(fake_manager_->GetAndResetCleanedTypes(), old_types)); 538 Intersection(fake_manager_->GetAndResetCleanedTypes(), old_types));
549 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 539 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
550 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 540 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
(...skipping 16 matching lines...) Expand all
567 // Does nothing. 557 // Does nothing.
568 InitializeBackend(true); 558 InitializeBackend(true);
569 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 559 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
570 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), old_types) 560 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), old_types)
571 .Empty()); 561 .Empty());
572 EXPECT_EQ(old_types, fake_manager_->InitialSyncEndedTypes()); 562 EXPECT_EQ(old_types, fake_manager_->InitialSyncEndedTypes());
573 EXPECT_EQ(new_types, fake_manager_->GetTypesWithEmptyProgressMarkerToken( 563 EXPECT_EQ(new_types, fake_manager_->GetTypesWithEmptyProgressMarkerToken(
574 enabled_types_)); 564 enabled_types_));
575 565
576 // Downloads and applies the new types (plus nigori). 566 // Downloads and applies the new types (plus nigori).
577 ModelTypeSet ready_types = ConfigureDataTypes( 567 ModelTypeSet ready_types =
578 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 568 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
579 ModelTypeSet());
580 569
581 new_types.Put(NIGORI); 570 new_types.Put(NIGORI);
582 EXPECT_EQ(Difference(old_types, ModelTypeSet(NIGORI)), ready_types); 571 EXPECT_EQ(Difference(old_types, ModelTypeSet(NIGORI)), ready_types);
583 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes()); 572 EXPECT_EQ(new_types, fake_manager_->GetAndResetDownloadedTypes());
584 EXPECT_TRUE( 573 EXPECT_TRUE(
585 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 574 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
586 .Empty()); 575 .Empty());
587 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 576 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
588 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 577 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
589 EXPECT_TRUE( 578 EXPECT_TRUE(
(...skipping 22 matching lines...) Expand all
612 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes()); 601 EXPECT_EQ(ModelTypeSet(NIGORI), fake_manager_->GetAndResetDownloadedTypes());
613 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); 602 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types));
614 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)), 603 EXPECT_EQ(Union(full_types, ModelTypeSet(NIGORI)),
615 fake_manager_->InitialSyncEndedTypes()); 604 fake_manager_->InitialSyncEndedTypes());
616 EXPECT_EQ( 605 EXPECT_EQ(
617 Union(new_types, Difference(partial_types, ModelTypeSet(NIGORI))), 606 Union(new_types, Difference(partial_types, ModelTypeSet(NIGORI))),
618 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); 607 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_));
619 608
620 // Downloads and applies the new types and partial types (which includes 609 // Downloads and applies the new types and partial types (which includes
621 // nigori anyways). 610 // nigori anyways).
622 ModelTypeSet ready_types = ConfigureDataTypes( 611 ModelTypeSet ready_types =
623 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 612 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
624 ModelTypeSet());
625 EXPECT_EQ(full_types, ready_types); 613 EXPECT_EQ(full_types, ready_types);
626 EXPECT_EQ(Union(new_types, partial_types), 614 EXPECT_EQ(Union(new_types, partial_types),
627 fake_manager_->GetAndResetDownloadedTypes()); 615 fake_manager_->GetAndResetDownloadedTypes());
628 EXPECT_TRUE( 616 EXPECT_TRUE(
629 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) 617 Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_)
630 .Empty()); 618 .Empty());
631 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes()); 619 EXPECT_EQ(enabled_types_, fake_manager_->InitialSyncEndedTypes());
632 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes()); 620 EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetEnabledTypes());
633 EXPECT_TRUE( 621 EXPECT_TRUE(
634 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) 622 fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 // If bookmarks encounter an error that results in disabling without purging 709 // If bookmarks encounter an error that results in disabling without purging
722 // (such as when the type is unready), and then is explicitly disabled, the 710 // (such as when the type is unready), and then is explicitly disabled, the
723 // SyncEngine needs to tell the manager to purge the type, even though 711 // SyncEngine needs to tell the manager to purge the type, even though
724 // it's already disabled (crbug.com/386778). 712 // it's already disabled (crbug.com/386778).
725 TEST_F(SyncEngineTest, DisableThenPurgeType) { 713 TEST_F(SyncEngineTest, DisableThenPurgeType) {
726 ModelTypeSet error_types(BOOKMARKS); 714 ModelTypeSet error_types(BOOKMARKS);
727 715
728 InitializeBackend(true); 716 InitializeBackend(true);
729 717
730 // First enable the types. 718 // First enable the types.
731 ModelTypeSet ready_types = ConfigureDataTypes( 719 ModelTypeSet ready_types =
732 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 720 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
733 ModelTypeSet());
734 721
735 // Nigori is always downloaded so won't be ready. 722 // Nigori is always downloaded so won't be ready.
736 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); 723 EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types);
737 724
738 // Then mark the error types as unready (disables without purging). 725 // Then mark the error types as unready (disables without purging).
739 ready_types = ConfigureDataTypes( 726 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map =
740 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), 727 ConfigStateMapForEnabledTypes();
741 error_types); 728 ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::UNREADY,
729 error_types, &config_state_map);
730 ready_types = ConfigureDataTypes(config_state_map);
742 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types); 731 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types);
743 EXPECT_TRUE( 732 EXPECT_TRUE(
744 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty()); 733 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty());
745 734
746 // Lastly explicitly disable the error types, which should result in a purge. 735 // Lastly explicitly disable the error types, which should result in a purge.
747 enabled_types_.RemoveAll(error_types); 736 enabled_types_.RemoveAll(error_types);
748 ready_types = ConfigureDataTypes( 737 ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes());
749 enabled_types_, Difference(ModelTypeSet::All(), enabled_types_),
750 ModelTypeSet());
751 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types); 738 EXPECT_EQ(Difference(enabled_types_, error_types), ready_types);
752 EXPECT_FALSE( 739 EXPECT_FALSE(
753 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty()); 740 fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty());
754 } 741 }
755 742
756 // Test that a call to ClearServerData is forwarded to the underlying 743 // Test that a call to ClearServerData is forwarded to the underlying
757 // SyncManager. 744 // SyncManager.
758 TEST_F(SyncEngineTest, ClearServerDataCallsAreForwarded) { 745 TEST_F(SyncEngineTest, ClearServerDataCallsAreForwarded) {
759 InitializeBackend(true); 746 InitializeBackend(true);
760 CallbackCounter callback_counter; 747 CallbackCounter callback_counter;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 // DataTypeManager shutdown. 816 // DataTypeManager shutdown.
830 TEST_F(SyncEngineTest, ModelTypeConnectorValidDuringShutdown) { 817 TEST_F(SyncEngineTest, ModelTypeConnectorValidDuringShutdown) {
831 InitializeBackend(true); 818 InitializeBackend(true);
832 backend_->StopSyncingForShutdown(); 819 backend_->StopSyncingForShutdown();
833 // Verify that call to DeactivateNonBlockingDataType doesn't assert. 820 // Verify that call to DeactivateNonBlockingDataType doesn't assert.
834 backend_->DeactivateNonBlockingDataType(AUTOFILL); 821 backend_->DeactivateNonBlockingDataType(AUTOFILL);
835 backend_->Shutdown(STOP_SYNC); 822 backend_->Shutdown(STOP_SYNC);
836 backend_.reset(); 823 backend_.reset();
837 } 824 }
838 825
826 // Ensure that types in CONFIGURE_CLEAN state are unapplied.
827 TEST_F(SyncEngineTest, ConfigureCelanTypesAreUnapplied) {
828 ModelTypeSet clean_types(AUTOFILL);
829
830 InitializeBackend(true);
831
832 // First enable the types.
833 ModelTypeSet ready_types =
834 ConfigureDataTypes(ConfigStateMapForEnabledTypes());
835 EXPECT_TRUE(
836 fake_manager_->GetTypesWithEmptyProgressMarkerToken(clean_types).Empty());
837
838 // Then unapply AUTOFILL.
839 ModelTypeConfigurer::DataTypeConfigStateMap config_state_map =
840 ConfigStateMapForEnabledTypes();
841 ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::CONFIGURE_CLEAN,
842 clean_types, &config_state_map);
843
844 ready_types = ConfigureDataTypes(config_state_map);
845
846 // Autofill should be unapplied as part of PurgeDisabledTypes, but should
847 // retain progress markers.
848 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(clean_types));
Nicolas Zea 2016/12/16 22:08:42 It seems like this test isn't really verifying tha
pavely 2016/12/16 23:57:46 Done.
849 EXPECT_TRUE(
850 fake_manager_->GetTypesWithEmptyProgressMarkerToken(clean_types).Empty());
851 }
852
839 } // namespace 853 } // namespace
840 854
841 } // namespace syncer 855 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698