| Index: components/sync/device_info/device_info_service_unittest.cc
|
| diff --git a/components/sync/device_info/device_info_service_unittest.cc b/components/sync/device_info/device_info_service_unittest.cc
|
| index 907b2ca089d20472527b280b9a5d9ccf87f8dd8a..aa069d33532ff019f2f964c9d3ba456f5b934f92 100644
|
| --- a/components/sync/device_info/device_info_service_unittest.cc
|
| +++ b/components/sync/device_info/device_info_service_unittest.cc
|
| @@ -179,8 +179,9 @@ class DeviceInfoServiceTest : public testing::Test,
|
| std::unique_ptr<ModelTypeChangeProcessor> CreateModelTypeChangeProcessor(
|
| ModelType type,
|
| ModelTypeService* service) {
|
| - processor_ = new RecordingModelTypeChangeProcessor();
|
| - return base::WrapUnique(processor_);
|
| + auto processor = base::MakeUnique<RecordingModelTypeChangeProcessor>();
|
| + processor_ = processor.get();
|
| + return std::move(processor);
|
| }
|
|
|
| // Initialized the service based on the current local device and store. Can
|
| @@ -196,11 +197,6 @@ class DeviceInfoServiceTest : public testing::Test,
|
| service_->AddObserver(this);
|
| }
|
|
|
| - void OnSyncStarting() {
|
| - service()->OnSyncStarting(base::MakeUnique<DataTypeErrorHandlerMock>(),
|
| - StartCallback());
|
| - }
|
| -
|
| // Creates the service and runs any outstanding tasks. This will typically
|
| // cause all initialization callbacks between the sevice and store to fire.
|
| void InitializeAndPump() {
|
| @@ -208,14 +204,6 @@ class DeviceInfoServiceTest : public testing::Test,
|
| base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| - // Creates the service, runs any outstanding tasks, and then indicates to the
|
| - // service that sync wants to start and forces the processor to be created.
|
| - void InitializeAndPumpAndStart() {
|
| - InitializeAndPump();
|
| - OnSyncStarting();
|
| - ASSERT_TRUE(processor_);
|
| - }
|
| -
|
| // Generates a specifics object with slightly differing values. Will generate
|
| // the same values on each run of a test because a simple counter is used to
|
| // vary field values.
|
| @@ -240,7 +228,7 @@ class DeviceInfoServiceTest : public testing::Test,
|
|
|
| // Override to allow specific cache guids.
|
| DeviceInfoSpecifics GenerateTestSpecifics(const std::string& guid) {
|
| - DeviceInfoSpecifics specifics(GenerateTestSpecifics());
|
| + DeviceInfoSpecifics specifics = GenerateTestSpecifics();
|
| specifics.set_cache_guid(guid);
|
| return specifics;
|
| }
|
| @@ -321,54 +309,46 @@ namespace {
|
|
|
| TEST_F(DeviceInfoServiceTest, EmptyDataReconciliation) {
|
| InitializeAndPump();
|
| - ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
|
| - OnSyncStarting();
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(1u, all_device_info.size());
|
| - ASSERT_TRUE(
|
| - local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
|
| + DeviceInfoList devices = service()->GetAllDeviceInfo();
|
| + ASSERT_EQ(1u, devices.size());
|
| + ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, EmptyDataReconciliationSlowLoad) {
|
| InitializeService();
|
| - OnSyncStarting();
|
| ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
|
| base::RunLoop().RunUntilIdle();
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(1u, all_device_info.size());
|
| - ASSERT_TRUE(
|
| - local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
|
| + DeviceInfoList devices = service()->GetAllDeviceInfo();
|
| + ASSERT_EQ(1u, devices.size());
|
| + ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) {
|
| set_local_device(base::MakeUnique<LocalDeviceInfoProviderMock>());
|
| - InitializeAndPumpAndStart();
|
| + InitializeAndPump();
|
|
|
| ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
|
| local_device()->Initialize(CreateDeviceInfo());
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(1u, all_device_info.size());
|
| - ASSERT_TRUE(
|
| - local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
|
| + DeviceInfoList devices = service()->GetAllDeviceInfo();
|
| + ASSERT_EQ(1u, devices.size());
|
| + ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
|
| }
|
|
|
| // Metadata shouldn't be loaded before the provider is initialized.
|
| TEST_F(DeviceInfoServiceTest, LocalProviderInitRace) {
|
| set_local_device(base::WrapUnique(new LocalDeviceInfoProviderMock()));
|
| InitializeAndPump();
|
| - OnSyncStarting();
|
| EXPECT_FALSE(processor()->metadata());
|
|
|
| ASSERT_EQ(0u, service()->GetAllDeviceInfo().size());
|
| local_device()->Initialize(CreateDeviceInfo());
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(1u, all_device_info.size());
|
| - ASSERT_TRUE(
|
| - local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
|
| + DeviceInfoList devices = service()->GetAllDeviceInfo();
|
| + ASSERT_EQ(1u, devices.size());
|
| + ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
|
|
|
| EXPECT_TRUE(processor()->metadata());
|
| }
|
| @@ -394,7 +374,7 @@ TEST_F(DeviceInfoServiceTest, GetClientTagEmpty) {
|
|
|
| TEST_F(DeviceInfoServiceTest, TestWithLocalData) {
|
| std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
|
| - DeviceInfoSpecifics specifics(GenerateTestSpecifics());
|
| + DeviceInfoSpecifics specifics = GenerateTestSpecifics();
|
| store()->WriteData(batch.get(), specifics.cache_guid(),
|
| specifics.SerializeAsString());
|
| store()->CommitWriteBatch(std::move(batch),
|
| @@ -402,9 +382,7 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalData) {
|
|
|
| InitializeAndPump();
|
|
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(1u, all_device_info.size());
|
| - AssertEqual(specifics, *all_device_info[0]);
|
| + ASSERT_EQ(2u, service()->GetAllDeviceInfo().size());
|
| AssertEqual(specifics,
|
| *service()->GetDeviceInfo(specifics.cache_guid()).get());
|
| }
|
| @@ -417,16 +395,15 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalMetadata) {
|
| store()->CommitWriteBatch(std::move(batch),
|
| base::Bind(&AssertResultIsSuccess));
|
| InitializeAndPump();
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(1u, all_device_info.size());
|
| - ASSERT_TRUE(
|
| - local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0]));
|
| + DeviceInfoList devices = service()->GetAllDeviceInfo();
|
| + ASSERT_EQ(1u, devices.size());
|
| + ASSERT_TRUE(local_device()->GetLocalDeviceInfo()->Equals(*devices[0]));
|
| EXPECT_EQ(1u, processor()->put_map().size());
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
|
| std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
|
| - DeviceInfoSpecifics specifics(GenerateTestSpecifics());
|
| + DeviceInfoSpecifics specifics = GenerateTestSpecifics();
|
| store()->WriteData(batch.get(), specifics.cache_guid(),
|
| specifics.SerializeAsString());
|
| ModelTypeState state;
|
| @@ -437,8 +414,7 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
|
|
|
| InitializeAndPump();
|
|
|
| - DeviceInfoList all_device_info(service()->GetAllDeviceInfo());
|
| - ASSERT_EQ(2u, all_device_info.size());
|
| + ASSERT_EQ(2u, service()->GetAllDeviceInfo().size());
|
| AssertEqual(specifics,
|
| *service()->GetDeviceInfo(specifics.cache_guid()).get());
|
| ASSERT_TRUE(processor()->metadata());
|
| @@ -448,9 +424,9 @@ TEST_F(DeviceInfoServiceTest, TestWithLocalDataAndMetadata) {
|
|
|
| TEST_F(DeviceInfoServiceTest, GetData) {
|
| std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
|
| - DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
|
| - DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
|
| - DeviceInfoSpecifics specifics3(GenerateTestSpecifics());
|
| + DeviceInfoSpecifics specifics1 = GenerateTestSpecifics();
|
| + DeviceInfoSpecifics specifics2 = GenerateTestSpecifics();
|
| + DeviceInfoSpecifics specifics3 = GenerateTestSpecifics();
|
| store()->WriteData(batch.get(), specifics1.cache_guid(),
|
| specifics1.SerializeAsString());
|
| store()->WriteData(batch.get(), specifics2.cache_guid(),
|
| @@ -483,8 +459,8 @@ TEST_F(DeviceInfoServiceTest, GetDataMissing) {
|
|
|
| TEST_F(DeviceInfoServiceTest, GetAllData) {
|
| std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
|
| - DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
|
| - DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
|
| + DeviceInfoSpecifics specifics1 = GenerateTestSpecifics();
|
| + DeviceInfoSpecifics specifics2 = GenerateTestSpecifics();
|
| const std::string& guid1 = specifics1.cache_guid();
|
| const std::string& guid2 = specifics2.cache_guid();
|
| store()->WriteData(batch.get(), specifics1.cache_guid(),
|
| @@ -508,14 +484,16 @@ TEST_F(DeviceInfoServiceTest, GetAllData) {
|
|
|
| TEST_F(DeviceInfoServiceTest, ApplySyncChangesEmpty) {
|
| InitializeAndPump();
|
| + EXPECT_EQ(1, change_count());
|
| const SyncError error = service()->ApplySyncChanges(
|
| service()->CreateMetadataChangeList(), EntityChangeList());
|
| EXPECT_FALSE(error.IsSet());
|
| - EXPECT_EQ(0, change_count());
|
| + EXPECT_EQ(1, change_count());
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
|
| InitializeAndPump();
|
| + EXPECT_EQ(1, change_count());
|
|
|
| DeviceInfoSpecifics specifics = GenerateTestSpecifics();
|
| EntityChangeList add_changes;
|
| @@ -528,7 +506,7 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
|
| service()->GetDeviceInfo(specifics.cache_guid());
|
| ASSERT_TRUE(info);
|
| AssertEqual(specifics, *info.get());
|
| - EXPECT_EQ(1, change_count());
|
| + EXPECT_EQ(2, change_count());
|
|
|
| EntityChangeList delete_changes;
|
| delete_changes.push_back(EntityChange::CreateDelete(specifics.cache_guid()));
|
| @@ -537,25 +515,26 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesInMemory) {
|
|
|
| EXPECT_FALSE(error.IsSet());
|
| EXPECT_FALSE(service()->GetDeviceInfo(specifics.cache_guid()));
|
| - EXPECT_EQ(2, change_count());
|
| + EXPECT_EQ(3, change_count());
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) {
|
| InitializeAndPump();
|
| + EXPECT_EQ(1, change_count());
|
|
|
| DeviceInfoSpecifics specifics = GenerateTestSpecifics();
|
| EntityChangeList data_changes;
|
| PushBackEntityChangeAdd(specifics, &data_changes);
|
| ModelTypeState state;
|
| state.set_encryption_key_name("ekn");
|
| - std::unique_ptr<MetadataChangeList> metadata_changes(
|
| - service()->CreateMetadataChangeList());
|
| + std::unique_ptr<MetadataChangeList> metadata_changes =
|
| + service()->CreateMetadataChangeList();
|
| metadata_changes->UpdateModelTypeState(state);
|
|
|
| const SyncError error =
|
| service()->ApplySyncChanges(std::move(metadata_changes), data_changes);
|
| EXPECT_FALSE(error.IsSet());
|
| - EXPECT_EQ(1, change_count());
|
| + EXPECT_EQ(2, change_count());
|
|
|
| RestartService();
|
|
|
| @@ -570,7 +549,7 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesStore) {
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, ApplySyncChangesWithLocalGuid) {
|
| - InitializeAndPumpAndStart();
|
| + InitializeAndPump();
|
|
|
| // The point of this test is to try to apply remote changes that have the same
|
| // cache guid as the local device. The service should ignore these changes
|
| @@ -609,7 +588,7 @@ TEST_F(DeviceInfoServiceTest, ApplySyncChangesWithLocalGuid) {
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, ApplyDeleteNonexistent) {
|
| - InitializeAndPumpAndStart();
|
| + InitializeAndPump();
|
| EXPECT_EQ(1, change_count());
|
| EntityChangeList delete_changes;
|
| delete_changes.push_back(EntityChange::CreateDelete("guid"));
|
| @@ -620,7 +599,7 @@ TEST_F(DeviceInfoServiceTest, ApplyDeleteNonexistent) {
|
| }
|
|
|
| TEST_F(DeviceInfoServiceTest, MergeEmpty) {
|
| - InitializeAndPumpAndStart();
|
| + InitializeAndPump();
|
| EXPECT_EQ(1, change_count());
|
| const SyncError error = service()->MergeSyncData(
|
| service()->CreateMetadataChangeList(), EntityDataMap());
|
| @@ -632,14 +611,14 @@ TEST_F(DeviceInfoServiceTest, MergeEmpty) {
|
|
|
| TEST_F(DeviceInfoServiceTest, MergeWithData) {
|
| const std::string conflict_guid = "conflict_guid";
|
| - const DeviceInfoSpecifics unique_local(
|
| - GenerateTestSpecifics("unique_local_guid"));
|
| - const DeviceInfoSpecifics conflict_local(
|
| - GenerateTestSpecifics(conflict_guid));
|
| - const DeviceInfoSpecifics conflict_remote(
|
| - GenerateTestSpecifics(conflict_guid));
|
| - const DeviceInfoSpecifics unique_remote(
|
| - GenerateTestSpecifics("unique_remote_guid"));
|
| + const DeviceInfoSpecifics unique_local =
|
| + GenerateTestSpecifics("unique_local_guid");
|
| + const DeviceInfoSpecifics conflict_local =
|
| + GenerateTestSpecifics(conflict_guid);
|
| + const DeviceInfoSpecifics conflict_remote =
|
| + GenerateTestSpecifics(conflict_guid);
|
| + const DeviceInfoSpecifics unique_remote =
|
| + GenerateTestSpecifics("unique_remote_guid");
|
|
|
| std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch();
|
| store()->WriteData(batch.get(), unique_local.cache_guid(),
|
| @@ -649,7 +628,7 @@ TEST_F(DeviceInfoServiceTest, MergeWithData) {
|
| store()->CommitWriteBatch(std::move(batch),
|
| base::Bind(&AssertResultIsSuccess));
|
|
|
| - InitializeAndPumpAndStart();
|
| + InitializeAndPump();
|
| EXPECT_EQ(1, change_count());
|
|
|
| EntityDataMap remote_input;
|
| @@ -690,8 +669,8 @@ TEST_F(DeviceInfoServiceTest, MergeWithData) {
|
|
|
| TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
|
| const DeviceInfo* local_device_info = local_device()->GetLocalDeviceInfo();
|
| - std::unique_ptr<DeviceInfoSpecifics> specifics(
|
| - CopyToSpecifics(*local_device_info));
|
| + std::unique_ptr<DeviceInfoSpecifics> specifics =
|
| + CopyToSpecifics(*local_device_info);
|
| specifics->set_last_updated_timestamp(TimeToProtoTime(Time::Now()));
|
| const std::string guid = local_device_info->guid();
|
|
|
| @@ -700,7 +679,7 @@ TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
|
| store()->CommitWriteBatch(std::move(batch),
|
| base::Bind(&AssertResultIsSuccess));
|
|
|
| - InitializeAndPumpAndStart();
|
| + InitializeAndPump();
|
|
|
| EntityDataMap remote_input;
|
| remote_input[guid] = SpecificsToEntity(*specifics);
|
| @@ -717,8 +696,8 @@ TEST_F(DeviceInfoServiceTest, MergeLocalGuid) {
|
| TEST_F(DeviceInfoServiceTest, GetLastUpdateTime) {
|
| Time time1(Time() + TimeDelta::FromDays(1));
|
|
|
| - DeviceInfoSpecifics specifics1(GenerateTestSpecifics());
|
| - DeviceInfoSpecifics specifics2(GenerateTestSpecifics());
|
| + DeviceInfoSpecifics specifics1 = GenerateTestSpecifics();
|
| + DeviceInfoSpecifics specifics2 = GenerateTestSpecifics();
|
| specifics2.set_last_updated_timestamp(TimeToProtoTime(time1));
|
|
|
| EXPECT_EQ(Time(), GetLastUpdateTime(specifics1));
|
| @@ -727,7 +706,7 @@ TEST_F(DeviceInfoServiceTest, GetLastUpdateTime) {
|
|
|
| TEST_F(DeviceInfoServiceTest, CountActiveDevices) {
|
| InitializeAndPump();
|
| - EXPECT_EQ(0, service()->CountActiveDevices());
|
| + EXPECT_EQ(1, service()->CountActiveDevices());
|
|
|
| DeviceInfoSpecifics specifics =
|
| GenerateTestSpecifics(local_device()->GetLocalDeviceInfo()->guid());
|
| @@ -735,21 +714,21 @@ TEST_F(DeviceInfoServiceTest, CountActiveDevices) {
|
| PushBackEntityChangeAdd(specifics, &change_list);
|
| service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
|
| change_list);
|
| - EXPECT_EQ(0, service()->CountActiveDevices());
|
| + EXPECT_EQ(1, service()->CountActiveDevices());
|
|
|
| change_list.clear();
|
| specifics.set_last_updated_timestamp(TimeToProtoTime(Time::Now()));
|
| PushBackEntityChangeAdd(specifics, &change_list);
|
| service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
|
| change_list);
|
| - EXPECT_EQ(0, service()->CountActiveDevices());
|
| + EXPECT_EQ(1, service()->CountActiveDevices());
|
|
|
| change_list.clear();
|
| specifics.set_cache_guid("non-local");
|
| PushBackEntityChangeAdd(specifics, &change_list);
|
| service()->ApplySyncChanges(service()->CreateMetadataChangeList(),
|
| change_list);
|
| - EXPECT_EQ(1, service()->CountActiveDevices());
|
| + EXPECT_EQ(2, service()->CountActiveDevices());
|
| }
|
|
|
| } // namespace
|
|
|