Index: chrome/browser/sync/glue/sync_backend_host_unittest.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host_unittest.cc b/chrome/browser/sync/glue/sync_backend_host_unittest.cc |
index 57d30eb842f8f1dd7e08d70d62659e04ce4d7603..dcaddef32c73255f1be80d5f3ade4849a8d325d8 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host_unittest.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host_unittest.cc |
@@ -149,13 +149,12 @@ class SyncBackendHostTest : public testing::Test { |
} |
// Synchronously initializes the backend. |
- void InitializeBackend(syncer::ModelTypeSet enabled_types) { |
+ void InitializeBackend() { |
EXPECT_CALL(mock_frontend_, OnBackendInitialized(_, true)). |
WillOnce(InvokeWithoutArgs(QuitMessageLoop)); |
backend_->Initialize(&mock_frontend_, |
syncer::WeakHandle<syncer::JsEventHandler>(), |
GURL(""), |
- enabled_types, |
credentials_, |
true, |
&fake_sync_manager_factory_, |
@@ -211,26 +210,22 @@ class SyncBackendHostTest : public testing::Test { |
// Test basic initialization with no initial types (first time initialization). |
// Only the nigori should be configured. |
TEST_F(SyncBackendHostTest, InitShutdown) { |
- InitializeBackend(syncer::ModelTypeSet()); |
+ InitializeBackend(); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
syncer::ModelTypeSet(syncer::NIGORI))); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
syncer::ModelTypeSet(syncer::NIGORI))); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals( |
- syncer::ModelTypeSet(syncer::NIGORI))); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
syncer::ModelTypeSet(syncer::NIGORI)).Empty()); |
} |
// Test first time sync scenario. All types should be properly configured. |
TEST_F(SyncBackendHostTest, FirstTimeSync) { |
- InitializeBackend(syncer::ModelTypeSet()); |
+ InitializeBackend(); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
syncer::ModelTypeSet(syncer::NIGORI))); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
syncer::ModelTypeSet(syncer::NIGORI))); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals( |
- syncer::ModelTypeSet(syncer::NIGORI))); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
syncer::ModelTypeSet(syncer::NIGORI)).Empty()); |
@@ -253,12 +248,11 @@ TEST_F(SyncBackendHostTest, Restart) { |
syncer::ModelTypeSet all_but_nigori = enabled_types_; |
fake_manager_->set_progress_marker_types(enabled_types_); |
fake_manager_->set_initial_sync_ended_types(enabled_types_); |
- InitializeBackend(enabled_types_); |
+ InitializeBackend(); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Empty()); |
@@ -287,20 +281,19 @@ TEST_F(SyncBackendHostTest, PartialTypes) { |
fake_manager_->set_progress_marker_types(enabled_types_); |
fake_manager_->set_initial_sync_ended_types(full_types); |
- // All partial types should have been purged with nothing downloaded as part |
- // of bringing up the backend. |
- InitializeBackend(enabled_types_); |
- EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
- EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
- enabled_types_).Empty()); |
+ // Bringing up the backend should purge all partial types, then proceed to |
+ // download the Nigori. |
+ InitializeBackend(); |
+ EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
+ syncer::ModelTypeSet(syncer::NIGORI))); |
+ EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
- full_types)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); |
+ Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
- enabled_types_).Equals(partial_types)); |
+ enabled_types_).Equals( |
+ Difference(partial_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
- // Now do the actual configuration, which should download and apply both |
- // nigori and bookmarks. |
+ // Now do the actual configuration, which should download and apply bookmarks. |
ConfigureDataTypes(enabled_types_, |
Difference(syncer::ModelTypeSet::All(), |
enabled_types_), |
@@ -319,16 +312,20 @@ TEST_F(SyncBackendHostTest, PartialTypes) { |
// enabled, we should re-download all of them because we lost their data. |
TEST_F(SyncBackendHostTest, LostDB) { |
sync_prefs_->SetSyncSetupCompleted(); |
- // Don't set any progress marker or initial_sync_ended types before |
- // initializing. Initialization should not affect the datatypes. |
- InitializeBackend(enabled_types_); |
- EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
- EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
- enabled_types_).Empty()); |
- EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Empty()); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); |
+ // Initialization should fetch the Nigori node. Everything else should be |
+ // left untouched. |
+ InitializeBackend(); |
+ EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
+ syncer::ModelTypeSet(syncer::NIGORI))); |
+ EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
+ syncer::ModelTypeSet(syncer::NIGORI))); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
- enabled_types_).Equals(enabled_types_)); |
+ enabled_types_).Equals( |
+ Difference(enabled_types_, syncer::ModelTypeSet(syncer::NIGORI)))); |
+ |
+ // The database was empty, so any cleaning is entirely optional. We want to |
+ // reset this value before running the next part of the test, though. |
+ fake_manager_->GetAndResetCleanedTypes(); |
// The actual configuration should redownload and apply all the enabled types. |
ConfigureDataTypes(enabled_types_, |
@@ -347,7 +344,7 @@ TEST_F(SyncBackendHostTest, LostDB) { |
TEST_F(SyncBackendHostTest, DisableTypes) { |
// Simulate first time sync. |
- InitializeBackend(syncer::ModelTypeSet()); |
+ InitializeBackend(); |
fake_manager_->GetAndResetCleanedTypes(); |
ConfigureDataTypes(enabled_types_, |
Difference(syncer::ModelTypeSet::All(), |
@@ -358,7 +355,6 @@ TEST_F(SyncBackendHostTest, DisableTypes) { |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Empty()); |
@@ -385,7 +381,7 @@ TEST_F(SyncBackendHostTest, DisableTypes) { |
TEST_F(SyncBackendHostTest, AddTypes) { |
// Simulate first time sync. |
- InitializeBackend(syncer::ModelTypeSet()); |
+ InitializeBackend(); |
fake_manager_->GetAndResetCleanedTypes(); |
ConfigureDataTypes(enabled_types_, |
Difference(syncer::ModelTypeSet::All(), |
@@ -396,7 +392,6 @@ TEST_F(SyncBackendHostTest, AddTypes) { |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Empty()); |
@@ -424,7 +419,7 @@ TEST_F(SyncBackendHostTest, AddTypes) { |
// And and disable in the same configuration. |
TEST_F(SyncBackendHostTest, AddDisableTypes) { |
// Simulate first time sync. |
- InitializeBackend(syncer::ModelTypeSet()); |
+ InitializeBackend(); |
fake_manager_->GetAndResetCleanedTypes(); |
ConfigureDataTypes(enabled_types_, |
Difference(syncer::ModelTypeSet::All(), |
@@ -435,7 +430,6 @@ TEST_F(SyncBackendHostTest, AddDisableTypes) { |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
enabled_types_).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(enabled_types_)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Equals(enabled_types_)); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Empty()); |
@@ -478,12 +472,11 @@ TEST_F(SyncBackendHostTest, NewlySupportedTypes) { |
enabled_types_.PutAll(new_types); |
// Does nothing. |
- InitializeBackend(enabled_types_); |
+ InitializeBackend(); |
EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
- enabled_types_).Empty()); |
+ old_types).Empty()); |
EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(old_types)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
enabled_types_).Equals(new_types)); |
@@ -519,15 +512,17 @@ TEST_F(SyncBackendHostTest, NewlySupportedTypesWithPartialTypes) { |
syncer::EXTENSION_SETTINGS); |
enabled_types_.PutAll(new_types); |
- // Purge the partial types. |
- InitializeBackend(enabled_types_); |
- EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Empty()); |
- EXPECT_TRUE(Intersection(fake_manager_->GetAndResetCleanedTypes(), |
- enabled_types_).Empty()); |
- EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals(full_types)); |
- EXPECT_TRUE(fake_manager_->GetAndResetEnabledTypes().Empty()); |
+ // Purge the partial types. The nigori will be among the purged types, but |
+ // the syncer will re-download it by the time the initialization is complete. |
+ InitializeBackend(); |
+ EXPECT_TRUE(fake_manager_->GetAndResetDownloadedTypes().Equals( |
+ syncer::ModelTypeSet(syncer::NIGORI))); |
+ EXPECT_TRUE(fake_manager_->GetAndResetCleanedTypes().HasAll(partial_types)); |
+ EXPECT_TRUE(fake_manager_->InitialSyncEndedTypes().Equals( |
+ syncer::Union(full_types, syncer::ModelTypeSet(syncer::NIGORI)))); |
EXPECT_TRUE(fake_manager_->GetTypesWithEmptyProgressMarkerToken( |
- enabled_types_).Equals(Union(new_types, partial_types))); |
+ enabled_types_).Equals(Union(new_types, Difference( |
+ partial_types, syncer::ModelTypeSet(syncer::NIGORI))))); |
// Downloads and applies the new types and partial types (which includes |
// nigori anyways). |