Move Webstore URL concepts to //extensions and out
[chromium-blink-merge.git] / chrome / browser / sync / glue / local_device_info_provider_impl.cc
blob711e895ef25ba8c01c00158a0f11ee0aabff05c7
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() {
16 const DeviceInfo*
17 LocalDeviceInfoProviderImpl::GetLocalDeviceInfo() const {
18 return local_device_info_.get();
21 std::string LocalDeviceInfoProviderImpl::GetLocalSyncCacheGUID() const {
22 return cache_guid_;
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(
37 cache_guid_,
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(
48 new DeviceInfo(
49 local_info.guid(),
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()));
56 // Notify observers.
57 callback_list_.Notify();
60 } // namespace browser_sync