Make precompilation of Sync modules work.

This commit is contained in:
Fedor 2019-09-05 20:09:47 +03:00
parent 89cd153885
commit 6d26641379
5 changed files with 70 additions and 43 deletions

View File

@ -60,20 +60,60 @@ SyncScheduler.prototype = {
},
// nextSync is in milliseconds, but prefs can't hold that much
get nextSync() Svc.Prefs.get("nextSync", 0) * 1000,
set nextSync(value) Svc.Prefs.set("nextSync", Math.floor(value / 1000)),
get nextSync() {
if (Svc.Prefs) {
return Svc.Prefs.get("nextSync", 0) * 1000
}
},
set nextSync(value) {
if (Svc.Prefs) {
Svc.Prefs.set("nextSync", Math.floor(value / 1000))
}
},
get syncInterval() Svc.Prefs.get("syncInterval", this.singleDeviceInterval),
set syncInterval(value) Svc.Prefs.set("syncInterval", value),
get syncInterval() {
if (Svc.Prefs) {
return Svc.Prefs.get("syncInterval", this.singleDeviceInterval)
}
},
set syncInterval(value) {
if (Svc.Prefs) {
Svc.Prefs.set("syncInterval", value)
}
},
get syncThreshold() Svc.Prefs.get("syncThreshold", SINGLE_USER_THRESHOLD),
set syncThreshold(value) Svc.Prefs.set("syncThreshold", value),
get syncThreshold() {
if (Svc.Prefs) {
return Svc.Prefs.get("syncThreshold", SINGLE_USER_THRESHOLD)
}
},
set syncThreshold(value) {
if (Svc.Prefs) {
Svc.Prefs.set("syncThreshold", value)
}
},
get globalScore() Svc.Prefs.get("globalScore", 0),
set globalScore(value) Svc.Prefs.set("globalScore", value),
get globalScore() {
if (Svc.Prefs) {
return Svc.Prefs.get("globalScore", 0)
}
},
set globalScore(value) {
if (Svc.Prefs) {
Svc.Prefs.set("globalScore", value)
}
},
get numClients() Svc.Prefs.get("numClients", 0),
set numClients(value) Svc.Prefs.set("numClients", value),
get numClients() {
if (Svc.Prefs) {
return Svc.Prefs.get("numClients", 0)
}
},
set numClients(value) {
if (Svc.Prefs) {
Svc.Prefs.set("numClients", value)
}
},
init: function init() {
this._log.level = Log.Level[Svc.Prefs.get("log.logger.service.main")];
@ -523,7 +563,7 @@ SyncScheduler.prototype = {
},
get isBlocked() {
let until = Svc.Prefs.get("scheduler.blocked-until");
let until = Svc.Prefs ? Svc.Prefs.get("scheduler.blocked-until") : undefined;
if (until === undefined) {
return false;
}
@ -770,19 +810,19 @@ ErrorHandler.prototype = {
},
get currentAlertMode() {
return Svc.Prefs.get("errorhandler.alert.mode");
return Svc.Prefs ? Svc.Prefs.get("errorhandler.alert.mode") : undefined;
},
set currentAlertMode(str) {
return Svc.Prefs.set("errorhandler.alert.mode", str);
return Svc.Prefs ? Svc.Prefs.set("errorhandler.alert.mode", str) : undefined;
},
get earliestNextAlert() {
return Svc.Prefs.get("errorhandler.alert.earliestNext", 0) * 1000;
return Svc.Prefs ? Svc.Prefs.get("errorhandler.alert.earliestNext", 0) * 1000 : undefined;
},
set earliestNextAlert(msec) {
return Svc.Prefs.set("errorhandler.alert.earliestNext", msec / 1000);
return Svc.Prefs ? Svc.Prefs.set("errorhandler.alert.earliestNext", msec / 1000) : undefined;
},
clearServerAlerts: function () {

View File

@ -296,21 +296,6 @@ Sync11Service.prototype = {
return false;
},
// The global "enabled" state comes from prefs, and will be set to false
// whenever the UI that exposes what to sync finds all Sync engines disabled.
get enabled() {
return Svc.Prefs.get("enabled");
},
set enabled(val) {
// There's no real reason to impose this other than to catch someone doing
// something we don't expect with bad consequences - all setting of this
// pref are in the UI code and external to this module.
if (val) {
throw new Error("Only disabling via this setter is supported");
}
Svc.Prefs.set("enabled", val);
},
/**
* Prepare to initialize the rest of Weave after waiting a little bit
*/
@ -340,6 +325,8 @@ Sync11Service.prototype = {
this._clusterManager = this.identity.createClusterManager(this);
this.recordManager = new RecordManager(this);
this.enabled = true;
this._registerEngines();
let ua = Cc["@mozilla.org/network/protocol;1?name=http"].
@ -1236,10 +1223,6 @@ Sync11Service.prototype = {
},
sync: function sync() {
if (!this.enabled) {
this._log.debug("Not syncing as Sync is disabled.");
return;
}
let dateStr = new Date().toLocaleFormat(LOG_DATE_FORMAT);
this._log.debug("User-Agent: " + SyncStorageRequest.prototype.userAgent);
this._log.info("Starting sync at " + dateStr);

View File

@ -321,10 +321,17 @@ this.Utils = {
* could not be loaded, the first argument will be undefined.
*/
jsonLoad: Task.async(function*(filePath, that, callback) {
let path = OS.Path.join(OS.Constants.Path.profileDir, "weave", filePath + ".json");
let path;
try {
path = OS.Path.normalize(OS.Path.join(OS.Constants.Path.profileDir, "weave", filePath + ".json"));
} catch (e) {
if (that._log) {
that._log.debug("Path join error: " + e);
}
}
if (that._log) {
that._log.trace("Loading json from disk: " + filePath);
that._log.trace("Loading json from disk: " + path);
}
let json;
@ -341,8 +348,9 @@ this.Utils = {
}
}
}
callback.call(that, json);
if (callback) {
callback.call(that, json);
}
}),
/**

View File

@ -24,10 +24,6 @@ pref("services.sync.scheduler.sync11.singleDeviceInterval", 86400); // 1 day
pref("services.sync.errorhandler.networkFailureReportTimeout", 1209600); // 2 weeks
// A "master" pref for Sync being enabled. Will be set to false if the sync
// customization UI finds all our builtin engines disabled (and addons are
// free to force this to true if they have their own engine)
pref("services.sync.enabled", true);
// Our engines.
pref("services.sync.engine.addons", false);
pref("services.sync.engine.bookmarks", true);

View File

@ -183,7 +183,7 @@ add_test(function test_login_on_sync() {
// This test exercises these two branches.
_("We're ready to sync if locked.");
Svc.Prefs.set("enabled", true);
Service.enabled = true;
Services.io.offline = false;
Service.scheduler.checkSyncStatus();
do_check_true(scheduleCalled);