|  | // Copyright 2016 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef COMPONENTS_SYNC_DEVICE_INFO_DEVICE_INFO_UTIL_H_ | 
|  | #define COMPONENTS_SYNC_DEVICE_INFO_DEVICE_INFO_UTIL_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "base/time/time.h" | 
|  |  | 
|  | namespace sync_pb { | 
|  | class DeviceInfoSpecifics; | 
|  | } | 
|  |  | 
|  | namespace syncer { | 
|  |  | 
|  | // This class contains constants and static helper functions that are shared | 
|  | // between DeviceInfoSyncService and DeviceInfoSyncBridge. | 
|  | class DeviceInfoUtil { | 
|  | public: | 
|  | // The prefix to be appended before the cache guid when creating tags. This is | 
|  | // needed for backwards compatiblity with all old clients because we need to | 
|  | // ensure everyone uses the same logic to generate the tag, so that everyone | 
|  | // can independently hash the tag to the same value. | 
|  | static const char kClientTagPrefix[]; | 
|  |  | 
|  | // The amount of time a device can go without an updates before we consider it | 
|  | // stale/inactive, and start ignoring it for active device counts. | 
|  | static const base::TimeDelta kActiveThreshold; | 
|  |  | 
|  | // The interval with which this device is updated to the sync servers if | 
|  | // online and while sync is actively running (e.g. excludes backgrounded apps | 
|  | // on Android). | 
|  | static base::TimeDelta GetPulseInterval(); | 
|  |  | 
|  | // Determines the amount of time to wait before pulsing something with the | 
|  | // given |last_update| timestamp. This uses the current time from |now| along | 
|  | // with |GetPulseInterval()|, and will never return a negative delay. | 
|  | // The smallest delay this function will return, even for something extremely | 
|  | // old will be a delay of 0 time units. | 
|  | static base::TimeDelta CalculatePulseDelay(const base::Time last_update, | 
|  | const base::Time now); | 
|  |  | 
|  | // Determines if the given |last_update| timestamp should be considered | 
|  | // active based on |kActiveThreshold|, given the current time. | 
|  | static bool IsActive(const base::Time last_update, const base::Time now); | 
|  |  | 
|  | // Formats ClientTag from DeviceInfoSpecifics. | 
|  | static std::string SpecificsToTag( | 
|  | const sync_pb::DeviceInfoSpecifics& specifics); | 
|  |  | 
|  | // Extracts cache_guid from ClientTag. | 
|  | static std::string TagToCacheGuid(const std::string& tag); | 
|  | }; | 
|  |  | 
|  | }  // namespace syncer | 
|  |  | 
|  | #endif  // COMPONENTS_SYNC_DEVICE_INFO_DEVICE_INFO_UTIL_H_ |