Bug 1437382 - Part 8 - Extract functions for creating and cancelling the delayed write timer. r?esawin draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Mon, 12 Feb 2018 20:19:15 +0100
changeset 761291 80841a51f5bc95a82debfe0dce5941ea75f3e65e
parent 761290 84a78e6e6569fc4996251934a71549bc9b38edc4
child 761292 13ce5e430bd77130f3385994edeba91a959f5662
push id100929
push usermozilla@buttercookie.de
push dateWed, 28 Feb 2018 22:01:37 +0000
reviewersesawin
bugs1437382
milestone60.0a1
Bug 1437382 - Part 8 - Extract functions for creating and cancelling the delayed write timer. r?esawin MozReview-Commit-ID: BjZ2XYSi9rR
mobile/android/components/SessionStore.js
--- a/mobile/android/components/SessionStore.js
+++ b/mobile/android/components/SessionStore.js
@@ -974,20 +974,17 @@ SessionStore.prototype = {
     if (!this._saveTimer) {
       // Interval until the next disk operation is allowed
       let currentDelay = this._lastSaveTime + this._interval - Date.now();
 
       // If we have to wait, set a timer, otherwise saveState directly
       let delay = Math.max(currentDelay, MINIMUM_SAVE_DELAY);
       if (delay > 0) {
         this._pendingWrite++;
-        this._saveTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
-        this._saveTimer.init(this, delay, Ci.nsITimer.TYPE_ONE_SHOT);
-        log("saveStateDelayed() timer delay = " + delay +
-             ", incrementing _pendingWrite to " + this._pendingWrite);
+        this._createTimer(delay);
       } else {
         log("saveStateDelayed() no delay");
         this.saveState();
       }
     } else {
       log("saveStateDelayed() timer already running, taking no action");
     }
   },
@@ -1007,24 +1004,35 @@ SessionStore.prototype = {
     log("flushPendingState(), _pendingWrite = " + this._pendingWrite);
     if (this._pendingWrite) {
       this._saveState(false);
       return true;
     }
     return false;
   },
 
+  _createTimer: function ss_createTimer(aDelay) {
+    this._saveTimer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
+    this._saveTimer.init(this, aDelay, Ci.nsITimer.TYPE_ONE_SHOT);
+    log("saveTimer delay = " + aDelay +
+        ", incrementing _pendingWrite to " + this._pendingWrite);
+  },
+
+  _killTimer: function ss_killTimer() {
+    if (this._saveTimer) {
+      this._saveTimer.cancel();
+      this._saveTimer = null;
+      log("killed queued saveTimer");
+    }
+  },
+
   _saveState: function ss_saveState(aAsync) {
     log("_saveState(aAsync = " + aAsync + ")");
     // Kill any queued timer and save immediately
-    if (this._saveTimer) {
-      this._saveTimer.cancel();
-      this._saveTimer = null;
-      log("_saveState() killed queued timer");
-    }
+    this._killTimer();
 
     // Periodically save a "known good" copy of the session store data.
     if (!this._writeInProgress && Date.now() - this._lastBackupTime > this._backupInterval &&
          this._sessionDataIsGood && this._sessionFile.exists()) {
       if (this._sessionFileBackup.exists()) {
         this._sessionFileBackup.remove(false);
       }