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

Side by Side Diff: chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc

Issue 398813005: [Sync] Rely on directory to decide which types need to be purged (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync/glue/sync_backend_host_impl.cc ('k') | sync/engine/syncer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/sync/glue/sync_backend_host_impl.h" 5 #include "chrome/browser/sync/glue/sync_backend_host_impl.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 TestTimeouts::action_timeout()); 227 TestTimeouts::action_timeout());
228 run_loop.Run(); 228 run_loop.Run();
229 // |fake_manager_factory_|'s fake_manager() is set on the sync 229 // |fake_manager_factory_|'s fake_manager() is set on the sync
230 // thread, but we can rely on the message loop barriers to 230 // thread, but we can rely on the message loop barriers to
231 // guarantee that we see the updated value. 231 // guarantee that we see the updated value.
232 DCHECK(fake_manager_); 232 DCHECK(fake_manager_);
233 } 233 }
234 234
235 // Synchronously configures the backend's datatypes. 235 // Synchronously configures the backend's datatypes.
236 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add, 236 void ConfigureDataTypes(syncer::ModelTypeSet types_to_add,
237 syncer::ModelTypeSet types_to_remove) { 237 syncer::ModelTypeSet types_to_remove,
238 syncer::ModelTypeSet types_to_unapply) {
238 BackendDataTypeConfigurer::DataTypeConfigStateMap config_state_map; 239 BackendDataTypeConfigurer::DataTypeConfigStateMap config_state_map;
239 BackendDataTypeConfigurer::SetDataTypesState( 240 BackendDataTypeConfigurer::SetDataTypesState(
240 BackendDataTypeConfigurer::CONFIGURE_ACTIVE, 241 BackendDataTypeConfigurer::CONFIGURE_ACTIVE,
241 types_to_add, 242 types_to_add,
242 &config_state_map); 243 &config_state_map);
243 BackendDataTypeConfigurer::SetDataTypesState( 244 BackendDataTypeConfigurer::SetDataTypesState(
244 BackendDataTypeConfigurer::DISABLED, 245 BackendDataTypeConfigurer::DISABLED,
245 types_to_remove, &config_state_map); 246 types_to_remove, &config_state_map);
247 BackendDataTypeConfigurer::SetDataTypesState(
248 BackendDataTypeConfigurer::UNREADY,
249 types_to_unapply, &config_state_map);
246 250
247 types_to_add.PutAll(syncer::ControlTypes()); 251 types_to_add.PutAll(syncer::ControlTypes());
248 backend_->ConfigureDataTypes( 252 backend_->ConfigureDataTypes(
249 syncer::CONFIGURE_REASON_RECONFIGURATION, 253 syncer::CONFIGURE_REASON_RECONFIGURATION,
250 config_state_map, 254 config_state_map,
251 base::Bind(&SyncBackendHostTest::DownloadReady, 255 base::Bind(&SyncBackendHostTest::DownloadReady,
252 base::Unretained(this)), 256 base::Unretained(this)),
253 base::Bind(&SyncBackendHostTest::OnDownloadRetry, 257 base::Bind(&SyncBackendHostTest::OnDownloadRetry,
254 base::Unretained(this))); 258 base::Unretained(this)));
255 base::RunLoop run_loop; 259 base::RunLoop run_loop;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 InitializeBackend(true); 312 InitializeBackend(true);
309 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 313 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
310 syncer::ControlTypes())); 314 syncer::ControlTypes()));
311 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( 315 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(
312 syncer::ControlTypes())); 316 syncer::ControlTypes()));
313 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 317 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
314 syncer::ControlTypes()).Empty()); 318 syncer::ControlTypes()).Empty());
315 319
316 ConfigureDataTypes(enabled_types_, 320 ConfigureDataTypes(enabled_types_,
317 Difference(syncer::ModelTypeSet::All(), 321 Difference(syncer::ModelTypeSet::All(),
318 enabled_types_)); 322 enabled_types_),
323 syncer::ModelTypeSet());
319 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 324 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
320 Difference(enabled_types_, syncer::ControlTypes()))); 325 Difference(enabled_types_, syncer::ControlTypes())));
321 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 326 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
322 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 327 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
323 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 328 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
324 enabled_types_).Empty()); 329 enabled_types_).Empty());
325 } 330 }
326 331
327 // Test the restart after setting up sync scenario. No enabled types should be 332 // Test the restart after setting up sync scenario. No enabled types should be
328 // downloaded or cleaned. 333 // downloaded or cleaned.
329 TEST_F(SyncBackendHostTest, Restart) { 334 TEST_F(SyncBackendHostTest, Restart) {
330 sync_prefs_->SetSyncSetupCompleted(); 335 sync_prefs_->SetSyncSetupCompleted();
331 syncer::ModelTypeSet all_but_nigori = enabled_types_; 336 syncer::ModelTypeSet all_but_nigori = enabled_types_;
332 fake_manager_factory_->set_progress_marker_types(enabled_types_); 337 fake_manager_factory_->set_progress_marker_types(enabled_types_);
333 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_); 338 fake_manager_factory_->set_initial_sync_ended_types(enabled_types_);
334 InitializeBackend(true); 339 InitializeBackend(true);
335 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 340 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
336 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 341 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
337 enabled_types_).Empty()); 342 enabled_types_).Empty());
338 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 343 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
339 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 344 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
340 enabled_types_).Empty()); 345 enabled_types_).Empty());
341 346
342 ConfigureDataTypes(enabled_types_, 347 ConfigureDataTypes(enabled_types_,
343 Difference(syncer::ModelTypeSet::All(), 348 Difference(syncer::ModelTypeSet::All(),
344 enabled_types_)); 349 enabled_types_),
350 syncer::ModelTypeSet());
345 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 351 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
346 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 352 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
347 enabled_types_).Empty()); 353 enabled_types_).Empty());
348 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 354 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
349 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 355 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
350 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 356 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
351 enabled_types_).Empty()); 357 enabled_types_).Empty());
352 } 358 }
353 359
354 // Test a sync restart scenario where some types had never finished configuring. 360 // Test a sync restart scenario where some types had never finished configuring.
(...skipping 16 matching lines...) Expand all
371 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); 377 EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types));
372 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( 378 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(
373 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); 379 Union(full_types, syncer::ModelTypeSet(syncer::NIGORI))));
374 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 380 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
375 enabled_types_).Equals( 381 enabled_types_).Equals(
376 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); 382 Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI))));
377 383
378 // Now do the actual configuration, which should download and apply bookmarks. 384 // Now do the actual configuration, which should download and apply bookmarks.
379 ConfigureDataTypes(enabled_types_, 385 ConfigureDataTypes(enabled_types_,
380 Difference(syncer::ModelTypeSet::All(), 386 Difference(syncer::ModelTypeSet::All(),
381 enabled_types_)); 387 enabled_types_),
388 syncer::ModelTypeSet());
382 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 389 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
383 enabled_types_).Empty()); 390 enabled_types_).Empty());
384 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 391 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
385 partial_types)); 392 partial_types));
386 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 393 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
387 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 394 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
388 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 395 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
389 enabled_types_).Empty()); 396 enabled_types_).Empty());
390 } 397 }
391 398
(...skipping 12 matching lines...) Expand all
404 enabled_types_).Equals( 411 enabled_types_).Equals(
405 Difference(enabled_types_, syncer::ControlTypes()))); 412 Difference(enabled_types_, syncer::ControlTypes())));
406 413
407 // The database was empty, so any cleaning is entirely optional. We want to 414 // The database was empty, so any cleaning is entirely optional. We want to
408 // reset this value before running the next part of the test, though. 415 // reset this value before running the next part of the test, though.
409 fake_manager_->GetAndResetCleanedTypes(); 416 fake_manager_->GetAndResetCleanedTypes();
410 417
411 // The actual configuration should redownload and apply all the enabled types. 418 // The actual configuration should redownload and apply all the enabled types.
412 ConfigureDataTypes(enabled_types_, 419 ConfigureDataTypes(enabled_types_,
413 Difference(syncer::ModelTypeSet::All(), 420 Difference(syncer::ModelTypeSet::All(),
414 enabled_types_)); 421 enabled_types_),
422 syncer::ModelTypeSet());
415 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( 423 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll(
416 Difference(enabled_types_, syncer::ControlTypes()))); 424 Difference(enabled_types_, syncer::ControlTypes())));
417 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 425 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
418 enabled_types_).Empty()); 426 enabled_types_).Empty());
419 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 427 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
420 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 428 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
421 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 429 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
422 enabled_types_).Empty()); 430 enabled_types_).Empty());
423 } 431 }
424 432
425 TEST_F(SyncBackendHostTest, DisableTypes) { 433 TEST_F(SyncBackendHostTest, DisableTypes) {
426 // Simulate first time sync. 434 // Simulate first time sync.
427 InitializeBackend(true); 435 InitializeBackend(true);
428 fake_manager_->GetAndResetCleanedTypes(); 436 fake_manager_->GetAndResetCleanedTypes();
429 ConfigureDataTypes(enabled_types_, 437 ConfigureDataTypes(enabled_types_,
430 Difference(syncer::ModelTypeSet::All(), 438 Difference(syncer::ModelTypeSet::All(),
431 enabled_types_)); 439 enabled_types_),
440 syncer::ModelTypeSet());
432 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 441 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
433 enabled_types_)); 442 enabled_types_));
434 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 443 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
435 enabled_types_).Empty()); 444 enabled_types_).Empty());
436 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 445 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
437 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 446 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
438 enabled_types_).Empty()); 447 enabled_types_).Empty());
439 448
440 // Then disable two datatypes. 449 // Then disable two datatypes.
441 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, 450 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS,
442 syncer::SEARCH_ENGINES); 451 syncer::SEARCH_ENGINES);
443 syncer::ModelTypeSet old_types = enabled_types_; 452 syncer::ModelTypeSet old_types = enabled_types_;
444 enabled_types_.RemoveAll(disabled_types); 453 enabled_types_.RemoveAll(disabled_types);
445 ConfigureDataTypes(enabled_types_, 454 ConfigureDataTypes(enabled_types_,
446 Difference(syncer::ModelTypeSet::All(), 455 Difference(syncer::ModelTypeSet::All(),
447 enabled_types_)); 456 enabled_types_),
457 syncer::ModelTypeSet());
448 458
449 // Only those datatypes disabled should be cleaned. Nothing should be 459 // Only those datatypes disabled should be cleaned. Nothing should be
450 // downloaded. 460 // downloaded.
451 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 461 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
452 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 462 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
453 old_types).Equals(disabled_types)); 463 old_types).Equals(disabled_types));
454 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 464 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
455 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 465 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
456 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 466 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
457 enabled_types_).Empty()); 467 enabled_types_).Empty());
458 } 468 }
459 469
460 TEST_F(SyncBackendHostTest, AddTypes) { 470 TEST_F(SyncBackendHostTest, AddTypes) {
461 // Simulate first time sync. 471 // Simulate first time sync.
462 InitializeBackend(true); 472 InitializeBackend(true);
463 fake_manager_->GetAndResetCleanedTypes(); 473 fake_manager_->GetAndResetCleanedTypes();
464 ConfigureDataTypes(enabled_types_, 474 ConfigureDataTypes(enabled_types_,
465 Difference(syncer::ModelTypeSet::All(), 475 Difference(syncer::ModelTypeSet::All(),
466 enabled_types_)); 476 enabled_types_),
477 syncer::ModelTypeSet());
467 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 478 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
468 enabled_types_)); 479 enabled_types_));
469 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 480 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
470 enabled_types_).Empty()); 481 enabled_types_).Empty());
471 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 482 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
472 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 483 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
473 enabled_types_).Empty()); 484 enabled_types_).Empty());
474 485
475 // Then add two datatypes. 486 // Then add two datatypes.
476 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, 487 syncer::ModelTypeSet new_types(syncer::EXTENSIONS,
477 syncer::APPS); 488 syncer::APPS);
478 enabled_types_.PutAll(new_types); 489 enabled_types_.PutAll(new_types);
479 ConfigureDataTypes(enabled_types_, 490 ConfigureDataTypes(enabled_types_,
480 Difference(syncer::ModelTypeSet::All(), 491 Difference(syncer::ModelTypeSet::All(),
481 enabled_types_)); 492 enabled_types_),
493 syncer::ModelTypeSet());
482 494
483 // Only those datatypes added should be downloaded (plus nigori). Nothing 495 // Only those datatypes added should be downloaded (plus nigori). Nothing
484 // should be cleaned aside from the disabled types. 496 // should be cleaned aside from the disabled types.
485 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 497 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
486 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); 498 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI))));
487 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 499 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
488 enabled_types_).Empty()); 500 enabled_types_).Empty());
489 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 501 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
490 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 502 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
491 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 503 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
492 enabled_types_).Empty()); 504 enabled_types_).Empty());
493 } 505 }
494 506
495 // And and disable in the same configuration. 507 // And and disable in the same configuration.
496 TEST_F(SyncBackendHostTest, AddDisableTypes) { 508 TEST_F(SyncBackendHostTest, AddDisableTypes) {
497 // Simulate first time sync. 509 // Simulate first time sync.
498 InitializeBackend(true); 510 InitializeBackend(true);
499 fake_manager_->GetAndResetCleanedTypes(); 511 fake_manager_->GetAndResetCleanedTypes();
500 ConfigureDataTypes(enabled_types_, 512 ConfigureDataTypes(enabled_types_,
501 Difference(syncer::ModelTypeSet::All(), 513 Difference(syncer::ModelTypeSet::All(),
502 enabled_types_)); 514 enabled_types_),
515 syncer::ModelTypeSet());
503 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 516 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
504 enabled_types_)); 517 enabled_types_));
505 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 518 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
506 enabled_types_).Empty()); 519 enabled_types_).Empty());
507 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 520 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
508 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 521 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
509 enabled_types_).Empty()); 522 enabled_types_).Empty());
510 523
511 // Then add two datatypes. 524 // Then add two datatypes.
512 syncer::ModelTypeSet old_types = enabled_types_; 525 syncer::ModelTypeSet old_types = enabled_types_;
513 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS, 526 syncer::ModelTypeSet disabled_types(syncer::BOOKMARKS,
514 syncer::SEARCH_ENGINES); 527 syncer::SEARCH_ENGINES);
515 syncer::ModelTypeSet new_types(syncer::EXTENSIONS, 528 syncer::ModelTypeSet new_types(syncer::EXTENSIONS,
516 syncer::APPS); 529 syncer::APPS);
517 enabled_types_.PutAll(new_types); 530 enabled_types_.PutAll(new_types);
518 enabled_types_.RemoveAll(disabled_types); 531 enabled_types_.RemoveAll(disabled_types);
519 ConfigureDataTypes(enabled_types_, 532 ConfigureDataTypes(enabled_types_,
520 Difference(syncer::ModelTypeSet::All(), 533 Difference(syncer::ModelTypeSet::All(),
521 enabled_types_)); 534 enabled_types_),
535 syncer::ModelTypeSet());
522 536
523 // Only those datatypes added should be downloaded (plus nigori). Nothing 537 // Only those datatypes added should be downloaded (plus nigori). Nothing
524 // should be cleaned aside from the disabled types. 538 // should be cleaned aside from the disabled types.
525 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 539 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
526 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); 540 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI))));
527 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 541 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
528 old_types).Equals(disabled_types)); 542 old_types).Equals(disabled_types));
529 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 543 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
530 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 544 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
531 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 545 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
(...skipping 18 matching lines...) Expand all
550 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); 564 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty());
551 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 565 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
552 old_types).Empty()); 566 old_types).Empty());
553 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); 567 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types));
554 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 568 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
555 enabled_types_).Equals(new_types)); 569 enabled_types_).Equals(new_types));
556 570
557 // Downloads and applies the new types. 571 // Downloads and applies the new types.
558 ConfigureDataTypes(enabled_types_, 572 ConfigureDataTypes(enabled_types_,
559 Difference(syncer::ModelTypeSet::All(), 573 Difference(syncer::ModelTypeSet::All(),
560 enabled_types_)); 574 enabled_types_),
575 syncer::ModelTypeSet());
561 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 576 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
562 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); 577 Union(new_types, syncer::ModelTypeSet(syncer::NIGORI))));
563 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 578 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
564 enabled_types_).Empty()); 579 enabled_types_).Empty());
565 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 580 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
566 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 581 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
567 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 582 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
568 enabled_types_).Empty()); 583 enabled_types_).Empty());
569 } 584 }
570 585
(...skipping 23 matching lines...) Expand all
594 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( 609 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(
595 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); 610 syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI))));
596 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 611 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
597 enabled_types_).Equals(Union(new_types, Difference( 612 enabled_types_).Equals(Union(new_types, Difference(
598 partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); 613 partial_types, syncer::ModelTypeSet(syncer::NIGORI)))));
599 614
600 // Downloads and applies the new types and partial types (which includes 615 // Downloads and applies the new types and partial types (which includes
601 // nigori anyways). 616 // nigori anyways).
602 ConfigureDataTypes(enabled_types_, 617 ConfigureDataTypes(enabled_types_,
603 Difference(syncer::ModelTypeSet::All(), 618 Difference(syncer::ModelTypeSet::All(),
604 enabled_types_)); 619 enabled_types_),
620 syncer::ModelTypeSet());
605 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( 621 EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(
606 Union(new_types, partial_types))); 622 Union(new_types, partial_types)));
607 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), 623 EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(),
608 enabled_types_).Empty()); 624 enabled_types_).Empty());
609 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); 625 EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_));
610 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); 626 EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_));
611 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( 627 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
612 enabled_types_).Empty()); 628 enabled_types_).Empty());
613 } 629 }
614 630
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 profile_->GetPath().Append(base::FilePath(kTestSyncDir)); 741 profile_->GetPath().Append(base::FilePath(kTestSyncDir));
726 base::FilePath sync_file = temp_directory.AppendASCII("SyncData.sqlite3"); 742 base::FilePath sync_file = temp_directory.AppendASCII("SyncData.sqlite3");
727 ASSERT_TRUE(base::CreateDirectory(temp_directory)); 743 ASSERT_TRUE(base::CreateDirectory(temp_directory));
728 ASSERT_NE(-1, base::WriteFile(sync_file, nonsense, strlen(nonsense))); 744 ASSERT_NE(-1, base::WriteFile(sync_file, nonsense, strlen(nonsense)));
729 745
730 InitializeBackend(true); 746 InitializeBackend(true);
731 747
732 EXPECT_FALSE(base::PathExists(sync_file)); 748 EXPECT_FALSE(base::PathExists(sync_file));
733 } 749 }
734 750
751 // If bookmarks encounter an error that results in disabling without purging
752 // (such as when the type is unready), and then is explicitly disabled, the
753 // SyncBackendHost needs to tell the manager to purge the type, even though
754 // it's already disabled (crbug.com/386778).
755 TEST_F(SyncBackendHostTest, DisableThenPurgeType) {
756 syncer::ModelTypeSet error_types(syncer::BOOKMARKS);
757
758 InitializeBackend(true);
759
760 // First enable the types.
761 ConfigureDataTypes(enabled_types_,
762 Difference(syncer::ModelTypeSet::All(),
763 enabled_types_),
764 syncer::ModelTypeSet());
765
766 // Then mark the error types as unready (disables without purging).
767 ConfigureDataTypes(enabled_types_,
768 Difference(syncer::ModelTypeSet::All(),
769 enabled_types_),
770 error_types);
771 EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
772 error_types).Empty());
773
774 // Lastly explicitly disable the error types, which should result in a purge.
775 enabled_types_.RemoveAll(error_types);
776 ConfigureDataTypes(enabled_types_,
777 Difference(syncer::ModelTypeSet::All(),
778 enabled_types_),
779 syncer::ModelTypeSet());
780 EXPECT_FALSE(fake_manager_->GetTypesWithEmptyProgressMarkerToken(
781 error_types).Empty());
782 }
783
735 } // namespace 784 } // namespace
736 785
737 } // namespace browser_sync 786 } // namespace browser_sync
OLDNEW
« no previous file with comments | « chrome/browser/sync/glue/sync_backend_host_impl.cc ('k') | sync/engine/syncer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698