Index: components/sync_driver/device_info_service_unittest.cc |
diff --git a/components/sync_driver/device_info_service_unittest.cc b/components/sync_driver/device_info_service_unittest.cc |
index e44676230794dc795ead4dbb2d95550970cb4b1b..b9b0b9e5a5f5a186109bbe5d434039e699eaf72a 100644 |
--- a/components/sync_driver/device_info_service_unittest.cc |
+++ b/components/sync_driver/device_info_service_unittest.cc |
@@ -60,6 +60,12 @@ using WriteBatch = ModelTypeStore::WriteBatch; |
namespace { |
+std::unique_ptr<DeviceInfo> CreateDeviceInfo() { |
+ return base::MakeUnique<DeviceInfo>( |
+ "guid_1", "client_1", "Chromium 10k", "Chrome 10k", |
+ sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id"); |
+} |
+ |
void AssertResultIsSuccess(Result result) { |
ASSERT_EQ(Result::SUCCESS, result); |
} |
@@ -84,11 +90,6 @@ void AssertEqual(const DeviceInfoSpecifics& specifics, |
model.signin_scoped_device_id()); |
} |
-void AssertErrorFromDataBatch(SyncError error, |
- std::unique_ptr<DataBatch> batch) { |
- ASSERT_TRUE(error.IsSet()); |
-} |
- |
void AssertExpectedFromDataBatch( |
std::map<std::string, DeviceInfoSpecifics> expected, |
SyncError error, |
@@ -107,7 +108,7 @@ void AssertExpectedFromDataBatch( |
ASSERT_TRUE(expected.empty()); |
} |
-// Creats an EntityData/EntityDataPtr around a copy of the given specifics. |
+// Creates an EntityData/EntityDataPtr around a copy of the given specifics. |
EntityDataPtr SpecificsToEntity(const DeviceInfoSpecifics& specifics) { |
EntityData data; |
// These tests do not care about the tag hash, but EntityData and friends |
@@ -169,13 +170,9 @@ class DeviceInfoServiceTest : public testing::Test, |
DeviceInfoServiceTest() |
: change_count_(0), |
store_(ModelTypeStoreTestUtil::CreateInMemoryStoreForTest()), |
- local_device_(new LocalDeviceInfoProviderMock( |
- "guid_1", |
- "client_1", |
- "Chromium 10k", |
- "Chrome 10k", |
- sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
- "device_id")) {} |
+ local_device_(new LocalDeviceInfoProviderMock()) { |
+ local_device_->Initialize(CreateDeviceInfo()); |
+ } |
~DeviceInfoServiceTest() override { |
// Some tests may never initialize the service. |
@@ -370,14 +367,34 @@ TEST_F(DeviceInfoServiceTest, EmptyDataReconciliationSlowLoad) { |
TEST_F(DeviceInfoServiceTest, LocalProviderSubscription) { |
set_local_device(base::WrapUnique(new LocalDeviceInfoProviderMock())); |
InitializeAndPumpAndStart(); |
+ |
ASSERT_EQ(0u, service()->GetAllDeviceInfo().size()); |
- local_device()->Initialize(base::WrapUnique( |
- new DeviceInfo("guid_1", "client_1", "Chromium 10k", "Chrome 10k", |
- sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id"))); |
+ local_device()->Initialize(CreateDeviceInfo()); |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); |
+ ASSERT_EQ(1u, all_device_info.size()); |
+ ASSERT_TRUE( |
+ local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[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(); |
+ |
ScopedVector<DeviceInfo> all_device_info(service()->GetAllDeviceInfo()); |
ASSERT_EQ(1u, all_device_info.size()); |
ASSERT_TRUE( |
local_device()->GetLocalDeviceInfo()->Equals(*all_device_info[0])); |
+ |
+ EXPECT_TRUE(processor()->metadata()); |
} |
TEST_F(DeviceInfoServiceTest, GetClientTagNormal) { |
@@ -488,12 +505,6 @@ TEST_F(DeviceInfoServiceTest, GetDataMissing) { |
base::Bind(&AssertExpectedFromDataBatch, expected)); |
} |
-TEST_F(DeviceInfoServiceTest, GetDataNotInitialized) { |
- InitializeService(); |
- ClientTagList client_tags; |
- service()->GetData(client_tags, base::Bind(&AssertErrorFromDataBatch)); |
-} |
- |
TEST_F(DeviceInfoServiceTest, GetAllData) { |
std::unique_ptr<WriteBatch> batch = store()->CreateWriteBatch(); |
DeviceInfoSpecifics specifics1(GenerateTestSpecifics()); |
@@ -519,19 +530,6 @@ TEST_F(DeviceInfoServiceTest, GetAllData) { |
base::Bind(&AssertExpectedFromDataBatch, expected)); |
} |
-TEST_F(DeviceInfoServiceTest, GetAllDataNotInitialized) { |
- InitializeService(); |
- service()->GetAllData(base::Bind(&AssertErrorFromDataBatch)); |
-} |
- |
-TEST_F(DeviceInfoServiceTest, ApplySyncChangesBeforeInit) { |
- InitializeService(); |
- const SyncError error = service()->ApplySyncChanges( |
- service()->CreateMetadataChangeList(), EntityChangeList()); |
- EXPECT_TRUE(error.IsSet()); |
- EXPECT_EQ(0, change_count()); |
-} |
- |
TEST_F(DeviceInfoServiceTest, ApplySyncChangesEmpty) { |
InitializeAndPump(); |
const SyncError error = service()->ApplySyncChanges( |
@@ -646,14 +644,6 @@ TEST_F(DeviceInfoServiceTest, ApplyDeleteNonexistent) { |
EXPECT_EQ(1, change_count()); |
} |
-TEST_F(DeviceInfoServiceTest, MergeWithoutProcessor) { |
- InitializeService(); |
- const SyncError error = service()->MergeSyncData( |
- service()->CreateMetadataChangeList(), EntityDataMap()); |
- EXPECT_TRUE(error.IsSet()); |
- EXPECT_EQ(0, change_count()); |
-} |
- |
TEST_F(DeviceInfoServiceTest, MergeEmpty) { |
InitializeAndPumpAndStart(); |
EXPECT_EQ(1, change_count()); |