summaryrefslogtreecommitdiffstats
path: root/sync/sessions/nudge_tracker.cc
diff options
context:
space:
mode:
authorhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-11 23:00:43 +0000
committerhaitaol@chromium.org <haitaol@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-11 23:00:43 +0000
commite3e44e71643ae5d04dc9ea3303c2ae949c2038ab (patch)
tree4ef8b7a6d96171e9c307fff723b70d08a22c3682 /sync/sessions/nudge_tracker.cc
parentde764e8a49e46e0902fa40aa4c73427fcc95a562 (diff)
downloadchromium_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.cc16
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_;