зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1364571 - Delay Weave startup. r=kitcambridge
MozReview-Commit-ID: 4bm1LXLD7lV --HG-- extra : rebase_source : c1b14b70e4d952870800387f16c7fecab9667b49
This commit is contained in:
Родитель
00a6026fe9
Коммит
3d2e65ee7e
|
@ -16,6 +16,9 @@ Cu.import("resource://gre/modules/AsyncPrefs.jsm");
|
|||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "WindowsUIUtils", "@mozilla.org/windows-ui-utils;1", "nsIWindowsUIUtils");
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "AlertsService", "@mozilla.org/alerts-service;1", "nsIAlertsService");
|
||||
XPCOMUtils.defineLazyGetter(this, "WeaveService", () =>
|
||||
Cc["@mozilla.org/weave/service;1"].getService().wrappedJSObject
|
||||
);
|
||||
|
||||
// lazy module getters
|
||||
|
||||
|
@ -973,6 +976,10 @@ BrowserGlue.prototype = {
|
|||
|
||||
AutoCompletePopup.init();
|
||||
DateTimePickerHelper.init();
|
||||
// Check if Sync is configured
|
||||
if (Services.prefs.prefHasUserValue("services.sync.username")) {
|
||||
WeaveService.init();
|
||||
}
|
||||
|
||||
this._firstWindowTelemetry(aWindow);
|
||||
this._firstWindowLoaded();
|
||||
|
|
|
@ -1,18 +1,6 @@
|
|||
# WeaveService has to restrict its registration for the app-startup category
|
||||
# to the specific list of apps that use it so it doesn't get loaded in xpcshell.
|
||||
# Thus we restrict it to these apps:
|
||||
#
|
||||
# b2g: {3c2e2abc-06d4-11e1-ac3b-374f68613e61}
|
||||
# browser: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
|
||||
# mobile/android: {aa3c5121-dab2-40e2-81ca-7ea25febc110}
|
||||
# mobile/xul: {a23983c0-fd0e-11dc-95ff-0800200c9a66}
|
||||
# suite (comm): {92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
|
||||
# graphene: {d1bfe7d9-c01e-4237-998b-7b5f960a4314}
|
||||
|
||||
# Weave.js
|
||||
component {74b89fb0-f200-4ae8-a3ec-dd164117f6de} Weave.js
|
||||
contract @mozilla.org/weave/service;1 {74b89fb0-f200-4ae8-a3ec-dd164117f6de}
|
||||
category app-startup WeaveService service,@mozilla.org/weave/service;1 application={3c2e2abc-06d4-11e1-ac3b-374f68613e61} application={ec8030f7-c20a-464f-9b0e-13a3a9e97384} application={aa3c5121-dab2-40e2-81ca-7ea25febc110} application={a23983c0-fd0e-11dc-95ff-0800200c9a66} application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a} application={99bceaaa-e3c6-48c1-b981-ef9b46b67d60} application={d1bfe7d9-c01e-4237-998b-7b5f960a4314}
|
||||
component {d28f8a0b-95da-48f4-b712-caf37097be41} Weave.js
|
||||
contract @mozilla.org/network/protocol/about;1?what=sync-log {d28f8a0b-95da-48f4-b712-caf37097be41}
|
||||
|
||||
|
|
|
@ -94,6 +94,32 @@ WeaveService.prototype = {
|
|||
return onReadyPromise;
|
||||
},
|
||||
|
||||
init() {
|
||||
// Force Weave service to load if it hasn't triggered from overlays
|
||||
this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
||||
this.timer.initWithCallback({
|
||||
notify: () => {
|
||||
let isConfigured = false;
|
||||
// We only load more if it looks like Sync is configured.
|
||||
if (this.enabled) {
|
||||
// We have an associated FxAccount. So, do a more thorough check.
|
||||
// This will import a number of modules and thus increase memory
|
||||
// accordingly. We could potentially copy code performed by
|
||||
// this check into this file if our above code is yielding too
|
||||
// many false positives.
|
||||
Components.utils.import("resource://services-sync/main.js");
|
||||
isConfigured = Weave.Status.checkSetup() != Weave.CLIENT_NOT_CONFIGURED;
|
||||
}
|
||||
let getHistogramById = Services.telemetry.getHistogramById;
|
||||
getHistogramById("WEAVE_CONFIGURED").add(isConfigured);
|
||||
if (isConfigured) {
|
||||
getHistogramById("WEAVE_CONFIGURED_MASTER_PASSWORD").add(Utils.mpEnabled());
|
||||
this.ensureLoaded();
|
||||
}
|
||||
}
|
||||
}, 10000, Ci.nsITimer.TYPE_ONE_SHOT);
|
||||
},
|
||||
|
||||
/**
|
||||
* Whether Sync appears to be enabled.
|
||||
*
|
||||
|
@ -105,42 +131,6 @@ WeaveService.prototype = {
|
|||
get enabled() {
|
||||
let prefs = Services.prefs.getBranch(SYNC_PREFS_BRANCH);
|
||||
return prefs.prefHasUserValue("username");
|
||||
},
|
||||
|
||||
observe(subject, topic, data) {
|
||||
switch (topic) {
|
||||
case "app-startup":
|
||||
let os = Cc["@mozilla.org/observer-service;1"].
|
||||
getService(Ci.nsIObserverService);
|
||||
os.addObserver(this, "final-ui-startup", true);
|
||||
break;
|
||||
|
||||
case "final-ui-startup":
|
||||
// Force Weave service to load if it hasn't triggered from overlays
|
||||
this.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
||||
this.timer.initWithCallback({
|
||||
notify: () => {
|
||||
let isConfigured = false;
|
||||
// We only load more if it looks like Sync is configured.
|
||||
if (this.enabled) {
|
||||
// We have an associated FxAccount. So, do a more thorough check.
|
||||
// This will import a number of modules and thus increase memory
|
||||
// accordingly. We could potentially copy code performed by
|
||||
// this check into this file if our above code is yielding too
|
||||
// many false positives.
|
||||
Components.utils.import("resource://services-sync/main.js");
|
||||
isConfigured = Weave.Status.checkSetup() != Weave.CLIENT_NOT_CONFIGURED;
|
||||
}
|
||||
let getHistogramById = Services.telemetry.getHistogramById;
|
||||
getHistogramById("WEAVE_CONFIGURED").add(isConfigured);
|
||||
if (isConfigured) {
|
||||
getHistogramById("WEAVE_CONFIGURED_MASTER_PASSWORD").add(Utils.mpEnabled());
|
||||
this.ensureLoaded();
|
||||
}
|
||||
}
|
||||
}, 10000, Ci.nsITimer.TYPE_ONE_SHOT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче