OLD | NEW |
| (Empty) |
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. | |
4 | |
5 #include "chrome/browser/sync/glue/local_device_info_provider_impl.h" | |
6 | |
7 namespace browser_sync { | |
8 | |
9 LocalDeviceInfoProviderImpl::LocalDeviceInfoProviderImpl() | |
10 : weak_factory_(this) { | |
11 } | |
12 | |
13 LocalDeviceInfoProviderImpl::~LocalDeviceInfoProviderImpl() { | |
14 } | |
15 | |
16 const DeviceInfo* | |
17 LocalDeviceInfoProviderImpl::GetLocalDeviceInfo() const { | |
18 return local_device_info_.get(); | |
19 } | |
20 | |
21 std::string LocalDeviceInfoProviderImpl::GetLocalSyncCacheGUID() const { | |
22 return cache_guid_; | |
23 } | |
24 | |
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); | |
30 } | |
31 | |
32 void LocalDeviceInfoProviderImpl::Initialize(const std::string& cache_guid) { | |
33 DCHECK(!cache_guid.empty()); | |
34 cache_guid_ = cache_guid; | |
35 DeviceInfo::CreateLocalDeviceInfo( | |
36 cache_guid_, | |
37 base::Bind(&LocalDeviceInfoProviderImpl::InitializeContinuation, | |
38 weak_factory_.GetWeakPtr())); | |
39 } | |
40 | |
41 void LocalDeviceInfoProviderImpl::InitializeContinuation( | |
42 const DeviceInfo& local_info) { | |
43 // Copy constructor is disallowed in DeviceInfo, construct a new one from | |
44 // the fields passed in local_info. | |
45 local_device_info_.reset( | |
46 new DeviceInfo( | |
47 local_info.guid(), | |
48 local_info.client_name(), | |
49 local_info.chrome_version(), | |
50 local_info.sync_user_agent(), | |
51 local_info.device_type())); | |
52 | |
53 // Notify observers. | |
54 callback_list_.Notify(); | |
55 } | |
56 | |
57 } // namespace browser_sync | |
58 | |
OLD | NEW |