| Index: components/sync_driver/local_device_info_provider_unittest.cc
|
| diff --git a/components/sync_driver/local_device_info_provider_unittest.cc b/components/sync_driver/local_device_info_provider_unittest.cc
|
| index ba8a6c46e500c6d01985170cfd8b4fbd52b504da..876d48ea36da13d2d8b4a5408b9f6ec5457e0571 100644
|
| --- a/components/sync_driver/local_device_info_provider_unittest.cc
|
| +++ b/components/sync_driver/local_device_info_provider_unittest.cc
|
| @@ -18,10 +18,10 @@ namespace browser_sync {
|
| const char kLocalDeviceGuid[] = "foo";
|
| const char kSigninScopedDeviceId[] = "device_id";
|
|
|
| -class SyncLocalDeviceInfoProviderTest : public testing::Test {
|
| +class LocalDeviceInfoProviderTest : public testing::Test {
|
| public:
|
| - SyncLocalDeviceInfoProviderTest() : called_back_(false) {}
|
| - ~SyncLocalDeviceInfoProviderTest() override {}
|
| + LocalDeviceInfoProviderTest() : called_back_(false) {}
|
| + ~LocalDeviceInfoProviderTest() override {}
|
|
|
| void SetUp() override {
|
| provider_.reset(new LocalDeviceInfoProviderImpl(
|
| @@ -35,22 +35,29 @@ class SyncLocalDeviceInfoProviderTest : public testing::Test {
|
| }
|
|
|
| protected:
|
| - void InitializeProvider() {
|
| - // Start initialization.
|
| - provider_->Initialize(kLocalDeviceGuid,
|
| - kSigninScopedDeviceId,
|
| + void StartInitializeProvider() { StartInitializeProvider(kLocalDeviceGuid); }
|
| +
|
| + void StartInitializeProvider(const std::string& guid) {
|
| + provider_->Initialize(guid, kSigninScopedDeviceId,
|
| message_loop_.task_runner());
|
| + }
|
|
|
| + void FinishInitializeProvider() {
|
| // Subscribe to the notification and wait until the callback
|
| // is called. The callback will quit the loop.
|
| base::RunLoop run_loop;
|
| - std::unique_ptr<LocalDeviceInfoProvider::Subscription> subscription(
|
| + std::unique_ptr<LocalDeviceInfoProvider::Subscription> subscription =
|
| provider_->RegisterOnInitializedCallback(
|
| - base::Bind(&SyncLocalDeviceInfoProviderTest::QuitLoopOnInitialized,
|
| - base::Unretained(this), &run_loop)));
|
| + base::Bind(&LocalDeviceInfoProviderTest::QuitLoopOnInitialized,
|
| + base::Unretained(this), &run_loop));
|
| run_loop.Run();
|
| }
|
|
|
| + void InitializeProvider() {
|
| + StartInitializeProvider();
|
| + FinishInitializeProvider();
|
| + }
|
| +
|
| void QuitLoopOnInitialized(base::RunLoop* loop) {
|
| called_back_ = true;
|
| loop->Quit();
|
| @@ -64,20 +71,22 @@ class SyncLocalDeviceInfoProviderTest : public testing::Test {
|
| base::MessageLoop message_loop_;
|
| };
|
|
|
| -TEST_F(SyncLocalDeviceInfoProviderTest, OnInitializedCallback) {
|
| +TEST_F(LocalDeviceInfoProviderTest, OnInitializedCallback) {
|
| ASSERT_FALSE(called_back_);
|
| -
|
| - InitializeProvider();
|
| + StartInitializeProvider();
|
| + ASSERT_FALSE(called_back_);
|
| + FinishInitializeProvider();
|
| EXPECT_TRUE(called_back_);
|
| }
|
|
|
| -TEST_F(SyncLocalDeviceInfoProviderTest, GetLocalDeviceInfo) {
|
| - ASSERT_EQ(NULL, provider_->GetLocalDeviceInfo());
|
| -
|
| - InitializeProvider();
|
| +TEST_F(LocalDeviceInfoProviderTest, GetLocalDeviceInfo) {
|
| + ASSERT_EQ(nullptr, provider_->GetLocalDeviceInfo());
|
| + StartInitializeProvider();
|
| + ASSERT_EQ(nullptr, provider_->GetLocalDeviceInfo());
|
| + FinishInitializeProvider();
|
|
|
| const DeviceInfo* local_device_info = provider_->GetLocalDeviceInfo();
|
| - EXPECT_TRUE(local_device_info);
|
| + ASSERT_NE(nullptr, local_device_info);
|
| EXPECT_EQ(std::string(kLocalDeviceGuid), local_device_info->guid());
|
| EXPECT_EQ(std::string(kSigninScopedDeviceId),
|
| local_device_info->signin_scoped_device_id());
|
| @@ -86,14 +95,52 @@ TEST_F(SyncLocalDeviceInfoProviderTest, GetLocalDeviceInfo) {
|
|
|
| EXPECT_EQ(provider_->GetSyncUserAgent(),
|
| local_device_info->sync_user_agent());
|
| +
|
| + provider_->Clear();
|
| + ASSERT_EQ(nullptr, provider_->GetLocalDeviceInfo());
|
| }
|
|
|
| -TEST_F(SyncLocalDeviceInfoProviderTest, GetLocalSyncCacheGUID) {
|
| - ASSERT_EQ(std::string(), provider_->GetLocalSyncCacheGUID());
|
| +TEST_F(LocalDeviceInfoProviderTest, GetLocalSyncCacheGUID) {
|
| + EXPECT_TRUE(provider_->GetLocalSyncCacheGUID().empty());
|
|
|
| - InitializeProvider();
|
| + StartInitializeProvider();
|
| + EXPECT_EQ(std::string(kLocalDeviceGuid), provider_->GetLocalSyncCacheGUID());
|
|
|
| + FinishInitializeProvider();
|
| EXPECT_EQ(std::string(kLocalDeviceGuid), provider_->GetLocalSyncCacheGUID());
|
| +
|
| + provider_->Clear();
|
| + EXPECT_TRUE(provider_->GetLocalSyncCacheGUID().empty());
|
| +}
|
| +
|
| +TEST_F(LocalDeviceInfoProviderTest, InitClearRace) {
|
| + EXPECT_TRUE(provider_->GetLocalSyncCacheGUID().empty());
|
| + StartInitializeProvider();
|
| +
|
| + provider_->Clear();
|
| + ASSERT_EQ(nullptr, provider_->GetLocalDeviceInfo());
|
| + EXPECT_TRUE(provider_->GetLocalSyncCacheGUID().empty());
|
| +
|
| + base::RunLoop().RunUntilIdle();
|
| + ASSERT_EQ(nullptr, provider_->GetLocalDeviceInfo());
|
| + EXPECT_TRUE(provider_->GetLocalSyncCacheGUID().empty());
|
| +}
|
| +
|
| +TEST_F(LocalDeviceInfoProviderTest, InitClearInitRace) {
|
| + EXPECT_TRUE(provider_->GetLocalSyncCacheGUID().empty());
|
| + StartInitializeProvider();
|
| + provider_->Clear();
|
| +
|
| + const std::string guid2 = "guid2";
|
| + StartInitializeProvider(guid2);
|
| + ASSERT_EQ(nullptr, provider_->GetLocalDeviceInfo());
|
| + EXPECT_EQ(guid2, provider_->GetLocalSyncCacheGUID());
|
| +
|
| + FinishInitializeProvider();
|
| + const DeviceInfo* local_device_info = provider_->GetLocalDeviceInfo();
|
| + ASSERT_NE(nullptr, local_device_info);
|
| + EXPECT_EQ(guid2, local_device_info->guid());
|
| + EXPECT_EQ(guid2, provider_->GetLocalSyncCacheGUID());
|
| }
|
|
|
| } // namespace browser_sync
|
|
|