OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/sync/glue/synced_device_tracker.h" | 5 #include "chrome/browser/sync/glue/synced_device_tracker.h" |
6 | 6 |
7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/sync/glue/device_info.h" | 9 #include "chrome/browser/sync/glue/device_info.h" |
10 #include "sync/internal_api/public/base/model_type.h" | 10 #include "sync/internal_api/public/base/model_type.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 scoped_ptr<DeviceInfo> SyncedDeviceTracker::ReadLocalDeviceInfo( | 61 scoped_ptr<DeviceInfo> SyncedDeviceTracker::ReadLocalDeviceInfo( |
62 const syncer::BaseTransaction& trans) const { | 62 const syncer::BaseTransaction& trans) const { |
63 syncer::ReadNode node(&trans); | 63 syncer::ReadNode node(&trans); |
64 if (node.InitByClientTagLookup(syncer::DEVICE_INFO, local_device_info_tag_) != | 64 if (node.InitByClientTagLookup(syncer::DEVICE_INFO, local_device_info_tag_) != |
65 syncer::BaseNode::INIT_OK) { | 65 syncer::BaseNode::INIT_OK) { |
66 return scoped_ptr<DeviceInfo>(); | 66 return scoped_ptr<DeviceInfo>(); |
67 } | 67 } |
68 | 68 |
69 const sync_pb::DeviceInfoSpecifics& specifics = node.GetDeviceInfoSpecifics(); | 69 const sync_pb::DeviceInfoSpecifics& specifics = node.GetDeviceInfoSpecifics(); |
70 return scoped_ptr<DeviceInfo> ( | 70 return scoped_ptr<DeviceInfo>( |
71 new DeviceInfo(specifics.cache_guid(), | 71 new DeviceInfo(specifics.cache_guid(), |
72 specifics.client_name(), | 72 specifics.client_name(), |
73 specifics.chrome_version(), | 73 specifics.chrome_version(), |
74 specifics.sync_user_agent(), | 74 specifics.sync_user_agent(), |
75 specifics.device_type())); | 75 specifics.device_type(), |
| 76 specifics.signin_scoped_device_id())); |
76 } | 77 } |
77 | 78 |
78 scoped_ptr<DeviceInfo> SyncedDeviceTracker::ReadDeviceInfo( | 79 scoped_ptr<DeviceInfo> SyncedDeviceTracker::ReadDeviceInfo( |
79 const std::string& client_id) const { | 80 const std::string& client_id) const { |
80 syncer::ReadTransaction trans(FROM_HERE, user_share_); | 81 syncer::ReadTransaction trans(FROM_HERE, user_share_); |
81 syncer::ReadNode node(&trans); | 82 syncer::ReadNode node(&trans); |
82 std::string lookup_string = DeviceInfoLookupString(client_id); | 83 std::string lookup_string = DeviceInfoLookupString(client_id); |
83 if (node.InitByClientTagLookup(syncer::DEVICE_INFO, lookup_string) != | 84 if (node.InitByClientTagLookup(syncer::DEVICE_INFO, lookup_string) != |
84 syncer::BaseNode::INIT_OK) { | 85 syncer::BaseNode::INIT_OK) { |
85 return scoped_ptr<DeviceInfo>(); | 86 return scoped_ptr<DeviceInfo>(); |
86 } | 87 } |
87 | 88 |
88 const sync_pb::DeviceInfoSpecifics& specifics = node.GetDeviceInfoSpecifics(); | 89 const sync_pb::DeviceInfoSpecifics& specifics = node.GetDeviceInfoSpecifics(); |
89 return scoped_ptr<DeviceInfo> ( | 90 return scoped_ptr<DeviceInfo>( |
90 new DeviceInfo(specifics.cache_guid(), | 91 new DeviceInfo(specifics.cache_guid(), |
91 specifics.client_name(), | 92 specifics.client_name(), |
92 specifics.chrome_version(), | 93 specifics.chrome_version(), |
93 specifics.sync_user_agent(), | 94 specifics.sync_user_agent(), |
94 specifics.device_type())); | 95 specifics.device_type(), |
| 96 specifics.signin_scoped_device_id())); |
95 } | 97 } |
96 | 98 |
97 void SyncedDeviceTracker::GetAllSyncedDeviceInfo( | 99 void SyncedDeviceTracker::GetAllSyncedDeviceInfo( |
98 ScopedVector<DeviceInfo>* device_info) const { | 100 ScopedVector<DeviceInfo>* device_info) const { |
99 if (device_info == NULL) | 101 if (device_info == NULL) |
100 return; | 102 return; |
101 | 103 |
102 device_info->clear(); | 104 device_info->clear(); |
103 | 105 |
104 syncer::ReadTransaction trans(FROM_HERE, user_share_); | 106 syncer::ReadTransaction trans(FROM_HERE, user_share_); |
(...skipping 10 matching lines...) Expand all Loading... |
115 root_node.GetChildIds(&children); | 117 root_node.GetChildIds(&children); |
116 | 118 |
117 for (std::vector<int64>::const_iterator it = children.begin(); | 119 for (std::vector<int64>::const_iterator it = children.begin(); |
118 it != children.end(); ++it) { | 120 it != children.end(); ++it) { |
119 syncer::ReadNode node(&trans); | 121 syncer::ReadNode node(&trans); |
120 if (node.InitByIdLookup(*it) != syncer::BaseNode::INIT_OK) | 122 if (node.InitByIdLookup(*it) != syncer::BaseNode::INIT_OK) |
121 return; | 123 return; |
122 | 124 |
123 const sync_pb::DeviceInfoSpecifics& specifics = | 125 const sync_pb::DeviceInfoSpecifics& specifics = |
124 node.GetDeviceInfoSpecifics(); | 126 node.GetDeviceInfoSpecifics(); |
125 device_info->push_back( | 127 device_info->push_back(new DeviceInfo(specifics.cache_guid(), |
126 new DeviceInfo(specifics.cache_guid(), | 128 specifics.client_name(), |
127 specifics.client_name(), | 129 specifics.chrome_version(), |
128 specifics.chrome_version(), | 130 specifics.sync_user_agent(), |
129 specifics.sync_user_agent(), | 131 specifics.device_type(), |
130 specifics.device_type())); | 132 specifics.signin_scoped_device_id())); |
131 } | 133 } |
132 } | 134 } |
133 | 135 |
134 std::string SyncedDeviceTracker::cache_guid() const { | 136 std::string SyncedDeviceTracker::cache_guid() const { |
135 return cache_guid_; | 137 return cache_guid_; |
136 } | 138 } |
137 | 139 |
138 void SyncedDeviceTracker::AddObserver(Observer* observer) { | 140 void SyncedDeviceTracker::AddObserver(Observer* observer) { |
139 observers_->AddObserver(observer); | 141 observers_->AddObserver(observer); |
140 } | 142 } |
141 | 143 |
142 void SyncedDeviceTracker::RemoveObserver(Observer* observer) { | 144 void SyncedDeviceTracker::RemoveObserver(Observer* observer) { |
143 observers_->RemoveObserver(observer); | 145 observers_->RemoveObserver(observer); |
144 } | 146 } |
145 | 147 |
146 void SyncedDeviceTracker::InitLocalDeviceInfo(const base::Closure& callback) { | 148 void SyncedDeviceTracker::InitLocalDeviceInfo( |
| 149 const std::string& signin_scoped_device_id, |
| 150 const base::Closure& callback) { |
147 DeviceInfo::CreateLocalDeviceInfo( | 151 DeviceInfo::CreateLocalDeviceInfo( |
148 cache_guid_, | 152 cache_guid_, |
| 153 signin_scoped_device_id, |
149 base::Bind(&SyncedDeviceTracker::InitLocalDeviceInfoContinuation, | 154 base::Bind(&SyncedDeviceTracker::InitLocalDeviceInfoContinuation, |
150 weak_factory_.GetWeakPtr(), callback)); | 155 weak_factory_.GetWeakPtr(), |
| 156 callback)); |
151 } | 157 } |
152 | 158 |
153 void SyncedDeviceTracker::InitLocalDeviceInfoContinuation( | 159 void SyncedDeviceTracker::InitLocalDeviceInfoContinuation( |
154 const base::Closure& callback, const DeviceInfo& local_info) { | 160 const base::Closure& callback, const DeviceInfo& local_info) { |
155 WriteLocalDeviceInfo(local_info); | 161 WriteLocalDeviceInfo(local_info); |
156 callback.Run(); | 162 callback.Run(); |
157 } | 163 } |
158 | 164 |
159 void SyncedDeviceTracker::WriteLocalDeviceInfo(const DeviceInfo& info) { | 165 void SyncedDeviceTracker::WriteLocalDeviceInfo(const DeviceInfo& info) { |
160 sync_pb::DeviceInfoSpecifics specifics; | 166 sync_pb::DeviceInfoSpecifics specifics; |
161 DCHECK_EQ(cache_guid_, info.guid()); | 167 DCHECK_EQ(cache_guid_, info.guid()); |
162 specifics.set_cache_guid(cache_guid_); | 168 specifics.set_cache_guid(cache_guid_); |
163 specifics.set_client_name(info.client_name()); | 169 specifics.set_client_name(info.client_name()); |
164 specifics.set_chrome_version(info.chrome_version()); | 170 specifics.set_chrome_version(info.chrome_version()); |
165 specifics.set_sync_user_agent(info.sync_user_agent()); | 171 specifics.set_sync_user_agent(info.sync_user_agent()); |
166 specifics.set_device_type(info.device_type()); | 172 specifics.set_device_type(info.device_type()); |
| 173 specifics.set_signin_scoped_device_id(info.signin_scoped_device_id()); |
167 | 174 |
168 WriteDeviceInfo(specifics, local_device_info_tag_); | 175 WriteDeviceInfo(specifics, local_device_info_tag_); |
169 } | 176 } |
170 | 177 |
171 void SyncedDeviceTracker::WriteDeviceInfo( | 178 void SyncedDeviceTracker::WriteDeviceInfo( |
172 const sync_pb::DeviceInfoSpecifics& specifics, | 179 const sync_pb::DeviceInfoSpecifics& specifics, |
173 const std::string& tag) { | 180 const std::string& tag) { |
174 syncer::WriteTransaction trans(FROM_HERE, user_share_); | 181 syncer::WriteTransaction trans(FROM_HERE, user_share_); |
175 syncer::WriteNode node(&trans); | 182 syncer::WriteNode node(&trans); |
176 | 183 |
(...skipping 12 matching lines...) Expand all Loading... |
189 new_node.InitUniqueByCreation(syncer::DEVICE_INFO, | 196 new_node.InitUniqueByCreation(syncer::DEVICE_INFO, |
190 type_root, | 197 type_root, |
191 tag); | 198 tag); |
192 DCHECK_EQ(syncer::WriteNode::INIT_SUCCESS, create_result); | 199 DCHECK_EQ(syncer::WriteNode::INIT_SUCCESS, create_result); |
193 new_node.SetDeviceInfoSpecifics(specifics); | 200 new_node.SetDeviceInfoSpecifics(specifics); |
194 new_node.SetTitle(specifics.client_name()); | 201 new_node.SetTitle(specifics.client_name()); |
195 } | 202 } |
196 } | 203 } |
197 | 204 |
198 } // namespace browser_sync | 205 } // namespace browser_sync |
OLD | NEW |