Chromium Code Reviews| Index: sync/internal_api/syncapi_unittest.cc |
| diff --git a/sync/internal_api/syncapi_unittest.cc b/sync/internal_api/syncapi_unittest.cc |
| index f5eb675e17e30bf054dab6918b9fadbfac026a06..ca81a4ee08a468244d42e01398c1f1d3345a74fe 100644 |
| --- a/sync/internal_api/syncapi_unittest.cc |
| +++ b/sync/internal_api/syncapi_unittest.cc |
| @@ -919,6 +919,22 @@ class SyncManagerTest : public testing::Test, |
| TestInternalComponentsFactory::IN_MEMORY); |
| } |
| + void SetProgressMarkerForType(ModelType type, bool set) { |
| + if (set) { |
| + sync_pb::DataTypeProgressMarker marker; |
| + marker.set_token("token"); |
| + marker.set_data_type_id(GetSpecificsFieldNumberFromModelType(type)); |
| + sync_manager_.directory()->SetDownloadProgress(type, marker); |
| + } else { |
| + sync_pb::DataTypeProgressMarker marker; |
| + sync_manager_.directory()->SetDownloadProgress(type, marker); |
| + } |
| + } |
| + |
| + void SetInitialSyncEndedForType(ModelType type, bool value) { |
| + sync_manager_.directory()->set_initial_sync_ended_for_type(type, value); |
| + } |
| + |
| private: |
| // Needed by |sync_manager_|. |
| MessageLoop message_loop_; |
| @@ -2534,18 +2550,29 @@ class SyncManagerTestWithMockScheduler : public SyncManagerTest { |
| }; |
| // Test that the configuration params are properly created and sent to |
| -// ScheduleConfigure. No callback should be invoked. |
| +// ScheduleConfigure. No callback should be invoked. Any disabled datatypes |
| +// should be purged (but only the types that were just disabled). |
|
tim (not reviewing)
2012/07/26 21:39:45
I don't see a test that covers a case where both p
Nicolas Zea
2012/07/26 23:29:59
The purging of both at startup is actually going a
|
| TEST_F(SyncManagerTestWithMockScheduler, BasicConfiguration) { |
| ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION; |
| ModelTypeSet types_to_download(BOOKMARKS, PREFERENCES); |
| ModelSafeRoutingInfo new_routing_info; |
| GetModelSafeRoutingInfo(&new_routing_info); |
| + ModelTypeSet disabled_types(THEMES, SESSIONS); |
| + new_routing_info.erase(THEMES); |
| + new_routing_info.erase(SESSIONS); |
| ConfigurationParams params; |
| EXPECT_CALL(*scheduler_, Start(SyncScheduler::CONFIGURATION_MODE)); |
| EXPECT_CALL(*scheduler_, ScheduleConfiguration(_)). |
| WillOnce(DoAll(SaveArg<0>(¶ms), Return(true))); |
| + // Set data for all types. |
| + for (ModelTypeSet::Iterator iter = ModelTypeSet::All().First(); iter.Good(); |
| + iter.Inc()) { |
| + SetProgressMarkerForType(iter.Get(), true); |
| + SetInitialSyncEndedForType(iter.Get(), true); |
| + } |
| + |
| CallbackCounter ready_task_counter, retry_task_counter; |
| sync_manager_.ConfigureSyncer( |
| reason, |
| @@ -2561,6 +2588,12 @@ TEST_F(SyncManagerTestWithMockScheduler, BasicConfiguration) { |
| params.source); |
| EXPECT_TRUE(types_to_download.Equals(params.types_to_download)); |
| EXPECT_EQ(new_routing_info, params.routing_info); |
| + |
| + // Verify only the disabled types were purged. |
| + EXPECT_TRUE(Intersection(sync_manager_.InitialSyncEndedTypes(), |
| + disabled_types).Empty()); |
| + EXPECT_TRUE(disabled_types.Equals( |
| + sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
| } |
| // Test that the retry callback is invoked on configuration failure. |
| @@ -2634,4 +2667,38 @@ TEST_F(SyncManagerTest, PurgePartiallySyncedTypes) { |
| EXPECT_FALSE(partial_types.Has(PREFERENCES)); |
| } |
| +// Test CleanipDisabledTypes properly purges all disabled types as specified |
| +// by the previous and current enabled params. |
| +TEST_F(SyncManagerTest, CleanupDisabledTypes) { |
| + ModelSafeRoutingInfo routing_info; |
| + GetModelSafeRoutingInfo(&routing_info); |
| + ModelTypeSet enabled_types = GetRoutingInfoTypes(routing_info); |
| + ModelTypeSet disabled_types = Difference(ModelTypeSet::All(), enabled_types); |
| + |
| + // Set data for all types. |
| + for (ModelTypeSet::Iterator iter = ModelTypeSet::All().First(); iter.Good(); |
| + iter.Inc()) { |
| + SetProgressMarkerForType(iter.Get(), true); |
| + SetInitialSyncEndedForType(iter.Get(), true); |
| + } |
| + |
| + // Verify only the enabled types remain after cleanup. |
| + sync_manager_.CleanupDisabledTypes(ModelTypeSet::All(), enabled_types); |
| + EXPECT_TRUE(enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); |
| + EXPECT_TRUE(disabled_types.Equals( |
| + sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
| + |
| + // Disable some more types. |
| + disabled_types.Put(BOOKMARKS); |
| + disabled_types.Put(PREFERENCES); |
| + ModelTypeSet new_enabled_types = |
| + Difference(ModelTypeSet::All(), disabled_types); |
| + |
| + // Verify only the non-disabled types remain after cleanup. |
| + sync_manager_.CleanupDisabledTypes(enabled_types, new_enabled_types); |
| + EXPECT_TRUE(new_enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); |
| + EXPECT_TRUE(disabled_types.Equals( |
| + sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
| +} |
| + |
| } // namespace |