1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
6 #include "base/message_loop/message_loop.h"
7 #include "base/run_loop.h"
8 #include "chrome/browser/sync/glue/local_device_info_provider_impl.h"
9 #include "chrome/common/chrome_version_info.h"
10 #include "sync/util/get_session_name.h"
11 #include "testing/gtest/include/gtest/gtest.h"
13 using sync_driver::DeviceInfo
;
14 using sync_driver::LocalDeviceInfoProvider
;
16 namespace browser_sync
{
18 const char kLocalDeviceGuid
[] = "foo";
19 const char kSigninScopedDeviceId
[] = "device_id";
21 class LocalDeviceInfoProviderTest
: public testing::Test
{
23 LocalDeviceInfoProviderTest()
24 : called_back_(false) {}
25 virtual ~LocalDeviceInfoProviderTest() {}
27 virtual void SetUp() override
{
28 provider_
.reset(new LocalDeviceInfoProviderImpl());
31 virtual void TearDown() override
{
37 void InitializeProvider() {
38 // Start initialization.
39 provider_
->Initialize(kLocalDeviceGuid
, kSigninScopedDeviceId
);
41 // Subscribe to the notification and wait until the callback
42 // is called. The callback will quit the loop.
43 base::RunLoop run_loop
;
44 scoped_ptr
<LocalDeviceInfoProvider::Subscription
> subscription(
45 provider_
->RegisterOnInitializedCallback(
46 base::Bind(&LocalDeviceInfoProviderTest::QuitLoopOnInitialized
,
47 base::Unretained(this), &run_loop
)));
51 void QuitLoopOnInitialized(base::RunLoop
* loop
) {
56 scoped_ptr
<LocalDeviceInfoProviderImpl
> provider_
;
61 base::MessageLoop message_loop_
;
64 TEST_F(LocalDeviceInfoProviderTest
, OnInitializedCallback
) {
65 ASSERT_FALSE(called_back_
);
68 EXPECT_TRUE(called_back_
);
71 TEST_F(LocalDeviceInfoProviderTest
, GetLocalDeviceInfo
) {
72 ASSERT_EQ(NULL
, provider_
->GetLocalDeviceInfo());
76 const DeviceInfo
* local_device_info
= provider_
->GetLocalDeviceInfo();
77 EXPECT_TRUE(!!local_device_info
);
78 EXPECT_EQ(std::string(kLocalDeviceGuid
), local_device_info
->guid());
79 EXPECT_EQ(std::string(kSigninScopedDeviceId
),
80 local_device_info
->signin_scoped_device_id());
81 EXPECT_EQ(syncer::GetSessionNameSynchronouslyForTesting(),
82 local_device_info
->client_name());
84 chrome::VersionInfo version_info
;
85 EXPECT_EQ(browser_sync::LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi(
87 local_device_info
->sync_user_agent());
90 TEST_F(LocalDeviceInfoProviderTest
, GetLocalSyncCacheGUID
) {
91 ASSERT_EQ(std::string(), provider_
->GetLocalSyncCacheGUID());
95 EXPECT_EQ(std::string(kLocalDeviceGuid
), provider_
->GetLocalSyncCacheGUID());
98 } // namespace browser_sync