Chromium Code Reviews| Index: components/sync/driver/glue/sync_backend_host_impl_unittest.cc |
| diff --git a/components/sync/driver/glue/sync_backend_host_impl_unittest.cc b/components/sync/driver/glue/sync_backend_host_impl_unittest.cc |
| index f6c698a002e1117136c4a15ec49d13f26ebc8cca..d4f39b65beb49f45acea36caf6836ef60a62d1ef 100644 |
| --- a/components/sync/driver/glue/sync_backend_host_impl_unittest.cc |
| +++ b/components/sync/driver/glue/sync_backend_host_impl_unittest.cc |
| @@ -241,19 +241,22 @@ class SyncEngineTest : public testing::Test { |
| DCHECK(fake_manager_); |
| } |
| - // Synchronously configures the backend's datatypes. |
| - ModelTypeSet ConfigureDataTypes(ModelTypeSet types_to_add, |
| - ModelTypeSet types_to_remove, |
| - ModelTypeSet types_to_unapply) { |
| + // Returns DataTypeConfigStateMap with all |enabled_types_| in |
| + // CONFIGURE_ACTIVE state and all remaining types DISABLED. |
| + ModelTypeConfigurer::DataTypeConfigStateMap ConfigStateMapForEnabledTypes() { |
| ModelTypeConfigurer::DataTypeConfigStateMap config_state_map; |
| ModelTypeConfigurer::SetDataTypesState( |
| - ModelTypeConfigurer::CONFIGURE_ACTIVE, types_to_add, &config_state_map); |
| - ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::DISABLED, |
| - types_to_remove, &config_state_map); |
| - ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::UNREADY, |
| - types_to_unapply, &config_state_map); |
| + ModelTypeConfigurer::CONFIGURE_ACTIVE, enabled_types_, |
| + &config_state_map); |
| + ModelTypeConfigurer::SetDataTypesState( |
| + ModelTypeConfigurer::DISABLED, |
| + Difference(ModelTypeSet::All(), enabled_types_), &config_state_map); |
| + return config_state_map; |
| + } |
| - types_to_add.PutAll(ControlTypes()); |
| + // Synchronously configures the backend's datatypes. |
| + ModelTypeSet ConfigureDataTypes( |
| + const ModelTypeConfigurer::DataTypeConfigStateMap& config_state_map) { |
| ModelTypeSet ready_types = backend_->ConfigureDataTypes( |
| CONFIGURE_REASON_RECONFIGURATION, config_state_map, |
| base::Bind(&SyncEngineTest::DownloadReady, base::Unretained(this)), |
| @@ -310,9 +313,8 @@ TEST_F(SyncEngineTest, FirstTimeSync) { |
| fake_manager_->GetTypesWithEmptyProgressMarkerToken(ControlTypes()) |
| .Empty()); |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Nigori is always downloaded so won't be ready. |
| EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); |
| EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
| @@ -341,9 +343,8 @@ TEST_F(SyncEngineTest, Restart) { |
| fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_) |
| .Empty()); |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| EXPECT_EQ(enabled_types_, ready_types); |
| EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
| EXPECT_TRUE( |
| @@ -379,9 +380,8 @@ TEST_F(SyncEngineTest, PartialTypes) { |
| fake_manager_->GetTypesWithEmptyProgressMarkerToken(enabled_types_)); |
| // Now do the actual configuration, which should download and apply bookmarks. |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| EXPECT_EQ(full_types, ready_types); |
| EXPECT_TRUE( |
| Intersection(fake_manager_->GetAndResetCleanedTypes(), enabled_types_) |
| @@ -414,9 +414,8 @@ TEST_F(SyncEngineTest, LostDB) { |
| fake_manager_->GetAndResetCleanedTypes(); |
| // The actual configuration should redownload and apply all the enabled types. |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Nigori is always downloaded so won't be ready. |
| EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); |
| EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
| @@ -435,9 +434,8 @@ TEST_F(SyncEngineTest, DisableTypes) { |
| // Simulate first time sync. |
| InitializeBackend(true); |
| fake_manager_->GetAndResetCleanedTypes(); |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Nigori is always downloaded so won't be ready. |
| EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); |
| EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); |
| @@ -453,9 +451,7 @@ TEST_F(SyncEngineTest, DisableTypes) { |
| ModelTypeSet disabled_types(BOOKMARKS, SEARCH_ENGINES); |
| ModelTypeSet old_types = enabled_types_; |
| enabled_types_.RemoveAll(disabled_types); |
| - ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Only those datatypes disabled should be cleaned. Nothing should be |
| // downloaded. |
| @@ -474,9 +470,8 @@ TEST_F(SyncEngineTest, AddTypes) { |
| // Simulate first time sync. |
| InitializeBackend(true); |
| fake_manager_->GetAndResetCleanedTypes(); |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Nigori is always downloaded so won't be ready. |
| EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); |
| EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); |
| @@ -491,9 +486,7 @@ TEST_F(SyncEngineTest, AddTypes) { |
| // Then add two datatypes. |
| ModelTypeSet new_types(EXTENSIONS, APPS); |
| enabled_types_.PutAll(new_types); |
| - ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Only those datatypes added should be downloaded (plus nigori). Nothing |
| // should be cleaned aside from the disabled types. |
| @@ -515,9 +508,8 @@ TEST_F(SyncEngineTest, AddDisableTypes) { |
| // Simulate first time sync. |
| InitializeBackend(true); |
| fake_manager_->GetAndResetCleanedTypes(); |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Nigori is always downloaded so won't be ready. |
| EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); |
| EXPECT_EQ(enabled_types_, fake_manager_->GetAndResetDownloadedTypes()); |
| @@ -535,9 +527,7 @@ TEST_F(SyncEngineTest, AddDisableTypes) { |
| ModelTypeSet new_types(EXTENSIONS, APPS); |
| enabled_types_.PutAll(new_types); |
| enabled_types_.RemoveAll(disabled_types); |
| - ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Only those datatypes added should be downloaded (plus nigori). Nothing |
| // should be cleaned aside from the disabled types. |
| @@ -574,9 +564,8 @@ TEST_F(SyncEngineTest, NewlySupportedTypes) { |
| enabled_types_)); |
| // Downloads and applies the new types (plus nigori). |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| new_types.Put(NIGORI); |
| EXPECT_EQ(Difference(old_types, ModelTypeSet(NIGORI)), ready_types); |
| @@ -619,9 +608,8 @@ TEST_F(SyncEngineTest, NewlySupportedTypesWithPartialTypes) { |
| // Downloads and applies the new types and partial types (which includes |
| // nigori anyways). |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| EXPECT_EQ(full_types, ready_types); |
| EXPECT_EQ(Union(new_types, partial_types), |
| fake_manager_->GetAndResetDownloadedTypes()); |
| @@ -728,26 +716,25 @@ TEST_F(SyncEngineTest, DisableThenPurgeType) { |
| InitializeBackend(true); |
| // First enable the types. |
| - ModelTypeSet ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| // Nigori is always downloaded so won't be ready. |
| EXPECT_EQ(Difference(ControlTypes(), ModelTypeSet(NIGORI)), ready_types); |
| // Then mark the error types as unready (disables without purging). |
| - ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - error_types); |
| + ModelTypeConfigurer::DataTypeConfigStateMap config_state_map = |
| + ConfigStateMapForEnabledTypes(); |
| + ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::UNREADY, |
| + error_types, &config_state_map); |
| + ready_types = ConfigureDataTypes(config_state_map); |
| EXPECT_EQ(Difference(enabled_types_, error_types), ready_types); |
| EXPECT_TRUE( |
| fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty()); |
| // Lastly explicitly disable the error types, which should result in a purge. |
| enabled_types_.RemoveAll(error_types); |
| - ready_types = ConfigureDataTypes( |
| - enabled_types_, Difference(ModelTypeSet::All(), enabled_types_), |
| - ModelTypeSet()); |
| + ready_types = ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| EXPECT_EQ(Difference(enabled_types_, error_types), ready_types); |
| EXPECT_FALSE( |
| fake_manager_->GetTypesWithEmptyProgressMarkerToken(error_types).Empty()); |
| @@ -836,6 +823,33 @@ TEST_F(SyncEngineTest, ModelTypeConnectorValidDuringShutdown) { |
| backend_.reset(); |
| } |
| +// Ensure that types in CONFIGURE_CLEAN state are unapplied. |
| +TEST_F(SyncEngineTest, ConfigureCelanTypesAreUnapplied) { |
| + ModelTypeSet clean_types(AUTOFILL); |
| + |
| + InitializeBackend(true); |
| + |
| + // First enable the types. |
| + ModelTypeSet ready_types = |
| + ConfigureDataTypes(ConfigStateMapForEnabledTypes()); |
| + EXPECT_TRUE( |
| + fake_manager_->GetTypesWithEmptyProgressMarkerToken(clean_types).Empty()); |
| + |
| + // Then unapply AUTOFILL. |
| + ModelTypeConfigurer::DataTypeConfigStateMap config_state_map = |
| + ConfigStateMapForEnabledTypes(); |
| + ModelTypeConfigurer::SetDataTypesState(ModelTypeConfigurer::CONFIGURE_CLEAN, |
| + clean_types, &config_state_map); |
| + |
| + ready_types = ConfigureDataTypes(config_state_map); |
| + |
| + // Autofill should be unapplied as part of PurgeDisabledTypes, but should |
| + // retain progress markers. |
| + 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.
|
| + EXPECT_TRUE( |
| + fake_manager_->GetTypesWithEmptyProgressMarkerToken(clean_types).Empty()); |
| +} |
| + |
| } // namespace |
| } // namespace syncer |