diff --git a/services/sync/modules/policies.js b/services/sync/modules/policies.js index b2d26f159e79..800805c6033f 100644 --- a/services/sync/modules/policies.js +++ b/services/sync/modules/policies.js @@ -97,6 +97,7 @@ SyncScheduler.prototype = { Svc.Obs.add("FxA:hawk:backoff:interval", this); if (Status.checkSetup() == STATUS_OK) { + Svc.Obs.add("wake_notification", this); Svc.Idle.addIdleObserver(this, Svc.Prefs.get("scheduler.idleTime")); } }, @@ -213,6 +214,7 @@ SyncScheduler.prototype = { case "weave:service:setup-complete": Services.prefs.savePrefFile(null); Svc.Idle.addIdleObserver(this, Svc.Prefs.get("scheduler.idleTime")); + Svc.Obs.add("wake_notification", this); break; case "weave:service:start-over": this.setDefaults(); @@ -248,6 +250,16 @@ SyncScheduler.prototype = { } }, IDLE_OBSERVER_BACK_DELAY, this, "idleDebouncerTimer"); break; + case "wake_notification": + this._log.debug("Woke from sleep."); + Utils.nextTick(() => { + // Trigger a sync if we have multiple clients. + if (this.numClients > 1) { + this._log.debug("More than 1 client. Syncing."); + this.scheduleNextSync(0); + } + }); + break; } },