OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |