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.
5 #include "chrome/browser/sync/glue/local_device_info_provider_impl.h"
7 namespace browser_sync
{
9 LocalDeviceInfoProviderImpl::LocalDeviceInfoProviderImpl()
10 : weak_factory_(this) {
13 LocalDeviceInfoProviderImpl::~LocalDeviceInfoProviderImpl() {
17 LocalDeviceInfoProviderImpl::GetLocalDeviceInfo() const {
18 return local_device_info_
.get();
21 std::string
LocalDeviceInfoProviderImpl::GetLocalSyncCacheGUID() const {
25 scoped_ptr
<LocalDeviceInfoProvider::Subscription
>
26 LocalDeviceInfoProviderImpl::RegisterOnInitializedCallback(
27 const base::Closure
& callback
) {
28 DCHECK(!local_device_info_
.get());
29 return callback_list_
.Add(callback
);
32 void LocalDeviceInfoProviderImpl::Initialize(
33 const std::string
& cache_guid
, const std::string
& signin_scoped_device_id
) {
34 DCHECK(!cache_guid
.empty());
35 cache_guid_
= cache_guid
;
36 DeviceInfo::CreateLocalDeviceInfo(
38 signin_scoped_device_id
,
39 base::Bind(&LocalDeviceInfoProviderImpl::InitializeContinuation
,
40 weak_factory_
.GetWeakPtr()));
43 void LocalDeviceInfoProviderImpl::InitializeContinuation(
44 const DeviceInfo
& local_info
) {
45 // Copy constructor is disallowed in DeviceInfo, construct a new one from
46 // the fields passed in local_info.
47 local_device_info_
.reset(
50 local_info
.client_name(),
51 local_info
.chrome_version(),
52 local_info
.sync_user_agent(),
53 local_info
.device_type(),
54 local_info
.signin_scoped_device_id()));
57 callback_list_
.Notify();
60 } // namespace browser_sync