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

Unified Diff: components/sync/driver/glue/sync_backend_host_impl_unittest.cc

Issue 2580033002: [Sync] Ensure that CONFIGURE_CLEAN types get unapplied before configuration (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698