diff options
author | haitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-11 23:00:43 +0000 |
---|---|---|
committer | haitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-11 23:00:43 +0000 |
commit | e3e44e71643ae5d04dc9ea3303c2ae949c2038ab (patch) | |
tree | 4ef8b7a6d96171e9c307fff723b70d08a22c3682 /sync/sessions/nudge_tracker.cc | |
parent | de764e8a49e46e0902fa40aa4c73427fcc95a562 (diff) | |
download | chromium_src-e3e44e71643ae5d04dc9ea3303c2ae949c2038ab.zip chromium_src-e3e44e71643ae5d04dc9ea3303c2ae949c2038ab.tar.gz chromium_src-e3e44e71643ae5d04dc9ea3303c2ae949c2038ab.tar.bz2 |
Support GU retry command in sync engine. The command specifies a delay after which syncer should issue a GU to pick up updates missed by last GU.
BUG=
Review URL: https://codereview.chromium.org/124083002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244381 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/sessions/nudge_tracker.cc')
-rw-r--r-- | sync/sessions/nudge_tracker.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/sync/sessions/nudge_tracker.cc b/sync/sessions/nudge_tracker.cc index d109294..f96d346 100644 --- a/sync/sessions/nudge_tracker.cc +++ b/sync/sessions/nudge_tracker.cc @@ -44,9 +44,13 @@ bool NudgeTracker::IsSyncRequired() const { return false; } -bool NudgeTracker::IsGetUpdatesRequired() const { +bool NudgeTracker::IsGetUpdatesRequired(base::TimeTicks now) const { if (invalidations_out_of_sync_) return true; + + if (IsRetryRequired(now)) + return true; + for (TypeTrackerMap::const_iterator it = type_trackers_.begin(); it != type_trackers_.end(); ++it) { if (it->second.IsGetUpdatesRequired()) { @@ -56,8 +60,16 @@ bool NudgeTracker::IsGetUpdatesRequired() const { return false; } -void NudgeTracker::RecordSuccessfulSyncCycle() { +bool NudgeTracker::IsRetryRequired(base::TimeTicks now) const { + return !next_retry_time_.is_null() && next_retry_time_ < now; +} + +void NudgeTracker::RecordSuccessfulSyncCycle(base::TimeTicks now) { updates_source_ = sync_pb::GetUpdatesCallerInfo::UNKNOWN; + last_successful_sync_time_ = now; + + if (next_retry_time_ < now) + next_retry_time_ = base::TimeTicks(); // A successful cycle while invalidations are enabled puts us back into sync. invalidations_out_of_sync_ = !invalidations_enabled_; |