Index: sync/internal_api/syncapi_unittest.cc |
diff --git a/sync/internal_api/syncapi_unittest.cc b/sync/internal_api/syncapi_unittest.cc |
index 0ae11dc37b8a99cfc3a47e06794a2b09056b40f0..b22b58585c2c95cbe4a4649b64f34590ececabce 100644 |
--- a/sync/internal_api/syncapi_unittest.cc |
+++ b/sync/internal_api/syncapi_unittest.cc |
@@ -2567,4 +2567,46 @@ TEST_F(SyncManagerTest, ConfigurationRetry) { |
EXPECT_EQ(new_routing_info, params.routing_info); |
} |
+// Test that PurgePartiallySyncedTypes purges only those types that don't |
+// have empty progress marker and don't have initial sync ended set. |
+TEST_F(SyncManagerTest, PurgePartiallySyncedTypes) { |
+ UserShare* share = sync_manager_.GetUserShare(); |
+ |
+ // Set Nigori and Bookmarks to be partial types. |
+ sync_pb::DataTypeProgressMarker nigori_marker; |
+ nigori_marker.set_data_type_id( |
+ GetSpecificsFieldNumberFromModelType(NIGORI)); |
+ nigori_marker.set_token("token"); |
+ sync_pb::DataTypeProgressMarker bookmark_marker; |
+ bookmark_marker.set_data_type_id( |
+ GetSpecificsFieldNumberFromModelType(BOOKMARKS)); |
+ bookmark_marker.set_token("token"); |
+ share->directory->SetDownloadProgress(NIGORI, nigori_marker); |
+ share->directory->SetDownloadProgress(BOOKMARKS, bookmark_marker); |
+ |
+ // Set Preferences to be a full type. |
+ sync_pb::DataTypeProgressMarker pref_marker; |
+ pref_marker.set_data_type_id( |
+ GetSpecificsFieldNumberFromModelType(PREFERENCES)); |
+ pref_marker.set_token("token"); |
+ share->directory->SetDownloadProgress(PREFERENCES, pref_marker); |
+ share->directory->set_initial_sync_ended_for_type(PREFERENCES, true); |
+ |
+ ModelTypeSet partial_types = |
+ sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()); |
+ EXPECT_FALSE(partial_types.Has(NIGORI)); |
+ EXPECT_FALSE(partial_types.Has(BOOKMARKS)); |
+ EXPECT_FALSE(partial_types.Has(PREFERENCES)); |
+ |
+ EXPECT_TRUE(sync_manager_.PurgePartiallySyncedTypes()); |
+ |
+ // Ensure only bookmarks and nigori lost their progress marker. Preferences |
+ // should still have it. |
+ partial_types = |
+ sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()); |
+ EXPECT_TRUE(partial_types.Has(NIGORI)); |
+ EXPECT_TRUE(partial_types.Has(BOOKMARKS)); |
+ EXPECT_FALSE(partial_types.Has(PREFERENCES)); |
+} |
+ |
} // namespace |