| 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..e77463e3d7df6f0ef7cf986f938852531e5df118 100644
|
| --- a/chrome/browser/sync/glue/synced_device_tracker.cc
|
| +++ b/chrome/browser/sync/glue/synced_device_tracker.cc
|
| @@ -13,6 +13,7 @@
|
| #include "sync/internal_api/public/user_share.h"
|
| #include "sync/internal_api/public/write_node.h"
|
| #include "sync/internal_api/public/write_transaction.h"
|
| +#include "sync/util/time.h"
|
|
|
| namespace browser_sync {
|
|
|
| @@ -157,25 +158,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 +199,33 @@ 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();
|
| + int64 new_backup_timestamp = syncer::TimeToProtoTime(backup_time);
|
| + if (!specifics.has_backup_timestamp() ||
|
| + specifics.backup_timestamp() != new_backup_timestamp) {
|
| + specifics.set_backup_timestamp(new_backup_timestamp);
|
| + 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 syncer::ProtoTimeToTime(
|
| + node.GetDeviceInfoSpecifics().backup_timestamp());
|
| + } else {
|
| + return base::Time();
|
| + }
|
| +}
|
| +
|
| } // namespace browser_sync
|
|
|