| 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 |