Chromium Code Reviews| 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 "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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |