mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 979034 - [Australis] Make CustomizationTabPreloader kick-off when the user opens the menu panel. r=ttaubert.
This commit is contained in:
parent
fc175da9d1
commit
a3a9b7abb1
@ -154,6 +154,10 @@ const PanelUI = {
|
||||
|
||||
this.panel.addEventListener("popupshown", function onPopupShown() {
|
||||
this.removeEventListener("popupshown", onPopupShown);
|
||||
// As an optimization for the customize mode transition, we preload
|
||||
// about:customizing in the background once the menu panel is first
|
||||
// shown.
|
||||
gCustomizationTabPreloader.ensurePreloading();
|
||||
deferred.resolve();
|
||||
});
|
||||
});
|
||||
|
@ -269,6 +269,11 @@ CustomizeMode.prototype = {
|
||||
panelContents.removeAttribute("customize-transitioning");
|
||||
|
||||
CustomizableUI.dispatchToolboxEvent("customizationready", {}, window);
|
||||
|
||||
// It's possible that we didn't enter customize mode via the menu panel,
|
||||
// meaning we didn't kick off about:customizing preloading. If that's
|
||||
// the case, let's kick it off for the next time we load this mode.
|
||||
window.gCustomizationTabPreloader.ensurePreloading();
|
||||
if (!this._wantToBeInCustomizeMode) {
|
||||
this.exit();
|
||||
}
|
||||
|
@ -472,7 +472,6 @@ BrowserGlue.prototype = {
|
||||
PageThumbs.init();
|
||||
NewTabUtils.init();
|
||||
BrowserNewTabPreloader.init();
|
||||
CustomizationTabPreloader.init();
|
||||
SignInToWebsiteUX.init();
|
||||
PdfJs.init();
|
||||
#ifdef NIGHTLY_BUILD
|
||||
|
@ -21,12 +21,6 @@ const CUSTOMIZATION_URL = "about:customizing";
|
||||
// The interval between swapping in a preload docShell and kicking off the
|
||||
// next preload in the background.
|
||||
const PRELOADER_INTERVAL_MS = 600;
|
||||
// The initial delay before we start preloading our first customization page. The
|
||||
// timer is started after the first 'browser-delayed-startup' has been sent.
|
||||
const PRELOADER_INIT_DELAY_MS = 7000;
|
||||
|
||||
const TOPIC_TIMER_CALLBACK = "timer-callback";
|
||||
const TOPIC_DELAYED_STARTUP = "browser-delayed-startup-finished";
|
||||
|
||||
function createTimer(obj, delay) {
|
||||
let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
|
||||
@ -42,10 +36,6 @@ function clearTimer(timer) {
|
||||
}
|
||||
|
||||
this.CustomizationTabPreloader = {
|
||||
init: function() {
|
||||
CustomizationTabPreloaderInternal.init();
|
||||
},
|
||||
|
||||
uninit: function () {
|
||||
CustomizationTabPreloaderInternal.uninit();
|
||||
},
|
||||
@ -53,28 +43,23 @@ this.CustomizationTabPreloader = {
|
||||
newTab: function (aTab) {
|
||||
return CustomizationTabPreloaderInternal.newTab(aTab);
|
||||
},
|
||||
|
||||
/**
|
||||
* ensurePreloading starts the preloading of the about:customizing
|
||||
* content page. This function is idempotent (until a call to uninit),
|
||||
* so multiple calls to it are fine.
|
||||
*/
|
||||
ensurePreloading: function() {
|
||||
CustomizationTabPreloaderInternal.ensurePreloading();
|
||||
},
|
||||
};
|
||||
|
||||
Object.freeze(CustomizationTabPreloader);
|
||||
|
||||
this.CustomizationTabPreloaderInternal = {
|
||||
_browser: null,
|
||||
_timer: null,
|
||||
_observing: false,
|
||||
|
||||
init: function () {
|
||||
Services.obs.addObserver(this, TOPIC_DELAYED_STARTUP, false);
|
||||
this._observing = true;
|
||||
},
|
||||
|
||||
uninit: function () {
|
||||
this._timer = clearTimer(this._timer);
|
||||
|
||||
if (this._observing) {
|
||||
Services.obs.removeObserver(this, TOPIC_DELAYED_STARTUP);
|
||||
this._observing = false;
|
||||
}
|
||||
|
||||
HostFrame.destroy();
|
||||
|
||||
if (this._browser) {
|
||||
@ -92,24 +77,11 @@ this.CustomizationTabPreloaderInternal = {
|
||||
return false;
|
||||
},
|
||||
|
||||
observe: function (aSubject, aTopic, aData) {
|
||||
if (aTopic == TOPIC_DELAYED_STARTUP) {
|
||||
Services.obs.removeObserver(this, TOPIC_DELAYED_STARTUP);
|
||||
this._observing = false;
|
||||
this._startTimer();
|
||||
} else if (aTopic == TOPIC_TIMER_CALLBACK) {
|
||||
this._timer = null;
|
||||
this._startPreloader();
|
||||
}
|
||||
},
|
||||
|
||||
_startTimer: function () {
|
||||
this._timer = createTimer(this, PRELOADER_INIT_DELAY_MS);
|
||||
},
|
||||
|
||||
_startPreloader: function () {
|
||||
ensurePreloading: function () {
|
||||
if (!this._browser) {
|
||||
this._browser = new HiddenBrowser();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function HiddenBrowser() {
|
||||
|
Loading…
Reference in New Issue
Block a user