Index: chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc b/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc |
index d517cf1a1e5e1fb662f50af15dfc57cb0af9be8a..00216ffb8c15adbff0bf90c624610efc36e378c5 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host_impl_unittest.cc |
@@ -176,13 +176,10 @@ class SyncBackendHostTest : public testing::Test { |
// NOTE: We can't include Passwords or Typed URLs due to the Sync Backend |
// Registrar removing them if it can't find their model workers. |
enabled_types_.Put(syncer::BOOKMARKS); |
- enabled_types_.Put(syncer::NIGORI); |
- enabled_types_.Put(syncer::DEVICE_INFO); |
enabled_types_.Put(syncer::PREFERENCES); |
enabled_types_.Put(syncer::SESSIONS); |
enabled_types_.Put(syncer::SEARCH_ENGINES); |
enabled_types_.Put(syncer::AUTOFILL); |
- enabled_types_.Put(syncer::EXPERIMENTS); |
network_resources_.reset(new syncer::HttpBridgeNetworkResources()); |
} |
@@ -231,9 +228,10 @@ class SyncBackendHostTest : public testing::Test { |
} |
// Synchronously configures the backend's datatypes. |
- void ConfigureDataTypes(syncer::ModelTypeSet types_to_add, |
- syncer::ModelTypeSet types_to_remove, |
- syncer::ModelTypeSet types_to_unapply) { |
+ syncer::ModelTypeSet ConfigureDataTypes( |
+ syncer::ModelTypeSet types_to_add, |
+ syncer::ModelTypeSet types_to_remove, |
+ syncer::ModelTypeSet types_to_unapply) { |
sync_driver::BackendDataTypeConfigurer::DataTypeConfigStateMap |
config_state_map; |
sync_driver::BackendDataTypeConfigurer::SetDataTypesState( |
@@ -248,11 +246,9 @@ class SyncBackendHostTest : public testing::Test { |
types_to_unapply, &config_state_map); |
types_to_add.PutAll(syncer::ControlTypes()); |
- backend_->ConfigureDataTypes( |
- syncer::CONFIGURE_REASON_RECONFIGURATION, |
- config_state_map, |
- base::Bind(&SyncBackendHostTest::DownloadReady, |
- base::Unretained(this)), |
+ syncer::ModelTypeSet ready_types = backend_->ConfigureDataTypes( |
+ syncer::CONFIGURE_REASON_RECONFIGURATION, config_state_map, |
+ base::Bind(&SyncBackendHostTest::DownloadReady, base::Unretained(this)), |
base::Bind(&SyncBackendHostTest::OnDownloadRetry, |
base::Unretained(this))); |
base::RunLoop run_loop; |
@@ -260,6 +256,7 @@ class SyncBackendHostTest : public testing::Test { |
run_loop.QuitClosure(), |
TestTimeouts::action_timeout()); |
run_loop.Run(); |
+ return ready_types; |
} |
void IssueRefreshRequest(syncer::ModelTypeSet types) { |
@@ -316,10 +313,13 @@ TEST_F(SyncBackendHostTest, FirstTimeSync) { |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
syncer::ControlTypes()).Empty()); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ // Nigori is always downloaded so won't be ready. |
+ EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
+ syncer::ControlTypes(), |
+ syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
Difference(enabled_types_, syncer::ControlTypes()))); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
@@ -343,10 +343,10 @@ TEST_F(SyncBackendHostTest, Restart) { |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Empty()); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ EXPECT_TRUE(ready_types.Equals(enabled_types_)); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
@@ -381,10 +381,10 @@ TEST_F(SyncBackendHostTest, PartialTypes) { |
Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
// Now do the actual configuration, which should download and apply bookmarks. |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ EXPECT_TRUE(ready_types.Equals(full_types)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
@@ -415,10 +415,13 @@ TEST_F(SyncBackendHostTest, LostDB) { |
fake_manager_->GetAndResetCleanedTypes(); |
// The actual configuration should redownload and apply all the enabled types. |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ // Nigori is always downloaded so won't be ready. |
+ EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
+ syncer::ControlTypes(), |
+ syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().HasAll( |
Difference(enabled_types_, syncer::ControlTypes()))); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
@@ -433,10 +436,13 @@ TEST_F(SyncBackendHostTest, DisableTypes) { |
// Simulate first time sync. |
InitializeBackend(true); |
fake_manager_->GetAndResetCleanedTypes(); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ // Nigori is always downloaded so won't be ready. |
+ EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
+ syncer::ControlTypes(), |
+ syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
enabled_types_)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
@@ -450,13 +456,13 @@ TEST_F(SyncBackendHostTest, DisableTypes) { |
syncer::SEARCH_ENGINES); |
syncer::ModelTypeSet old_types = enabled_types_; |
enabled_types_.RemoveAll(disabled_types); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
// Only those datatypes disabled should be cleaned. Nothing should be |
// downloaded. |
+ EXPECT_TRUE(ready_types.Equals(enabled_types_)); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
old_types).Equals(disabled_types)); |
@@ -470,10 +476,13 @@ TEST_F(SyncBackendHostTest, AddTypes) { |
// Simulate first time sync. |
InitializeBackend(true); |
fake_manager_->GetAndResetCleanedTypes(); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ // Nigori is always downloaded so won't be ready. |
+ EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
+ syncer::ControlTypes(), |
+ syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
enabled_types_)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
@@ -486,15 +495,16 @@ TEST_F(SyncBackendHostTest, AddTypes) { |
syncer::ModelTypeSet new_types(syncer::EXTENSIONS, |
syncer::APPS); |
enabled_types_.PutAll(new_types); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
// Only those datatypes added should be downloaded (plus nigori). Nothing |
// should be cleaned aside from the disabled types. |
- EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
- Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
+ new_types.Put(syncer::NIGORI); |
+ EXPECT_TRUE( |
+ ready_types.Equals(syncer::Difference(enabled_types_, new_types))); |
+ EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(new_types)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
@@ -508,10 +518,13 @@ TEST_F(SyncBackendHostTest, AddDisableTypes) { |
// Simulate first time sync. |
InitializeBackend(true); |
fake_manager_->GetAndResetCleanedTypes(); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ // Nigori is always downloaded so won't be ready. |
+ EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
+ syncer::ControlTypes(), |
+ syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
enabled_types_)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
@@ -528,15 +541,16 @@ TEST_F(SyncBackendHostTest, AddDisableTypes) { |
syncer::APPS); |
enabled_types_.PutAll(new_types); |
enabled_types_.RemoveAll(disabled_types); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
// Only those datatypes added should be downloaded (plus nigori). Nothing |
// should be cleaned aside from the disabled types. |
- EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
- Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
+ new_types.Put(syncer::NIGORI); |
+ EXPECT_TRUE( |
+ ready_types.Equals(syncer::Difference(enabled_types_, new_types))); |
+ EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(new_types)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
old_types).Equals(disabled_types)); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
@@ -567,13 +581,15 @@ TEST_F(SyncBackendHostTest, NewlySupportedTypes) { |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Equals(new_types)); |
- // Downloads and applies the new types. |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
- EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
- Union(new_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
+ // Downloads and applies the new types (plus nigori). |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ |
+ new_types.Put(syncer::NIGORI); |
+ EXPECT_TRUE(ready_types.Equals( |
+ syncer::Difference(old_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
+ EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals(new_types)); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
@@ -613,10 +629,10 @@ TEST_F(SyncBackendHostTest, NewlySupportedTypesWithPartialTypes) { |
// Downloads and applies the new types and partial types (which includes |
// nigori anyways). |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ EXPECT_TRUE(ready_types.Equals(full_types)); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
Union(new_types, partial_types))); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
@@ -747,25 +763,31 @@ TEST_F(SyncBackendHostTest, DisableThenPurgeType) { |
InitializeBackend(true); |
// First enable the types. |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ syncer::ModelTypeSet ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ |
+ // Nigori is always downloaded so won't be ready. |
+ EXPECT_TRUE(ready_types.Equals(syncer::Difference( |
+ syncer::ControlTypes(), |
+ syncer::ModelTypeSet(syncer::NIGORI)))); |
// Then mark the error types as unready (disables without purging). |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- error_types); |
+ ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ error_types); |
+ EXPECT_TRUE( |
+ ready_types.Equals(syncer::Difference(enabled_types_, error_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); |
- ConfigureDataTypes(enabled_types_, |
- Difference(syncer::ModelTypeSet::All(), |
- enabled_types_), |
- syncer::ModelTypeSet()); |
+ ready_types = ConfigureDataTypes( |
+ enabled_types_, Difference(syncer::ModelTypeSet::All(), enabled_types_), |
+ syncer::ModelTypeSet()); |
+ EXPECT_TRUE( |
+ ready_types.Equals(syncer::Difference(enabled_types_, error_types))); |
EXPECT_FALSE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
error_types).Empty()); |
} |