Bug 1437382 - Part 8 - Extract functions for creating and cancelling the delayed write timer. r?esawin
MozReview-Commit-ID: BjZ2XYSi9rR
--- 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);
}