Chromium Code Reviews| Index: chrome/browser/sync/glue/synced_device_tracker.cc |
| diff --git a/chrome/browser/sync/glue/synced_device_tracker.cc b/chrome/browser/sync/glue/synced_device_tracker.cc |
| index bf7fa9274fc78f9303bb4dd184b690e32702f28f..c532c80cd026797a35bec78ba2893928ba568508 100644 |
| --- a/chrome/browser/sync/glue/synced_device_tracker.cc |
| +++ b/chrome/browser/sync/glue/synced_device_tracker.cc |
| @@ -157,25 +157,28 @@ void SyncedDeviceTracker::InitLocalDeviceInfoContinuation( |
| } |
| void SyncedDeviceTracker::WriteLocalDeviceInfo(const DeviceInfo& info) { |
| - sync_pb::DeviceInfoSpecifics specifics; |
| DCHECK_EQ(cache_guid_, info.guid()); |
| - specifics.set_cache_guid(cache_guid_); |
| - specifics.set_client_name(info.client_name()); |
| - specifics.set_chrome_version(info.chrome_version()); |
| - specifics.set_sync_user_agent(info.sync_user_agent()); |
| - specifics.set_device_type(info.device_type()); |
| - |
| - WriteDeviceInfo(specifics, local_device_info_tag_); |
| + WriteDeviceInfo(info, local_device_info_tag_); |
| } |
| -void SyncedDeviceTracker::WriteDeviceInfo( |
| - const sync_pb::DeviceInfoSpecifics& specifics, |
| - const std::string& tag) { |
| +void SyncedDeviceTracker::WriteDeviceInfo(const DeviceInfo& info, |
| + const std::string& tag) { |
| syncer::WriteTransaction trans(FROM_HERE, user_share_); |
| syncer::WriteNode node(&trans); |
| + sync_pb::DeviceInfoSpecifics specifics; |
| + specifics.set_cache_guid(info.guid()); |
| + specifics.set_client_name(info.client_name()); |
| + specifics.set_chrome_version(info.chrome_version()); |
| + specifics.set_sync_user_agent(info.sync_user_agent()); |
| + specifics.set_device_type(info.device_type()); |
| + |
| if (node.InitByClientTagLookup(syncer::DEVICE_INFO, tag) == |
| syncer::BaseNode::INIT_OK) { |
| + const sync_pb::DeviceInfoSpecifics& sync_specifics = |
| + node.GetDeviceInfoSpecifics(); |
| + if (sync_specifics.has_backup_timestamp()) |
| + specifics.set_backup_timestamp(sync_specifics.backup_timestamp()); |
| node.SetDeviceInfoSpecifics(specifics); |
| node.SetTitle(specifics.client_name()); |
| } else { |
| @@ -195,4 +198,32 @@ void SyncedDeviceTracker::WriteDeviceInfo( |
| } |
| } |
| +void SyncedDeviceTracker::UpdateLocalDeviceBackupTime(base::Time backup_time) { |
| + syncer::WriteTransaction trans(FROM_HERE, user_share_); |
| + syncer::WriteNode node(&trans); |
| + |
| + if (node.InitByClientTagLookup(syncer::DEVICE_INFO, local_device_info_tag_) |
| + == syncer::BaseNode::INIT_OK) { |
| + sync_pb::DeviceInfoSpecifics specifics = node.GetDeviceInfoSpecifics(); |
| + if (!specifics.has_backup_timestamp() || |
| + specifics.backup_timestamp() != backup_time.ToInternalValue()) { |
| + specifics.set_backup_timestamp(backup_time.ToInternalValue()); |
|
Nicolas Zea
2014/06/13 22:36:41
ToInternalValue uses the windows epoch. It's proba
haitaol1
2014/06/13 23:28:25
Done.
|
| + node.SetDeviceInfoSpecifics(specifics); |
| + } |
| + } |
| +} |
| + |
| +base::Time SyncedDeviceTracker::GetLocalDeviceBackupTime() const { |
| + syncer::ReadTransaction trans(FROM_HERE, user_share_); |
| + syncer::ReadNode node(&trans); |
| + if (node.InitByClientTagLookup(syncer::DEVICE_INFO, local_device_info_tag_) |
| + == syncer::BaseNode::INIT_OK && |
| + node.GetDeviceInfoSpecifics().has_backup_timestamp()) { |
| + return base::Time::FromInternalValue( |
| + node.GetDeviceInfoSpecifics().backup_timestamp()); |
| + } else { |
| + return base::Time(); |
| + } |
| +} |
| + |
| } // namespace browser_sync |