[Pkg-mozext-commits] [adblock-plus] 13/98: Issue 4131 - Simplify UI initialization logic
David Prévot
taffit at moszumanska.debian.org
Tue Oct 24 01:30:13 UTC 2017
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch master
in repository adblock-plus.
commit 0e13f59a69c2ddb65822ef2f194d195b900de0d4
Author: Wladimir Palant <trev at adblockplus.org>
Date: Tue Jun 7 18:21:37 2016 +0200
Issue 4131 - Simplify UI initialization logic
---
lib/ui.js | 86 +++++++++++++++++++++++++++++----------------------------------
1 file changed, 39 insertions(+), 47 deletions(-)
diff --git a/lib/ui.js b/lib/ui.js
index e1643bc..d5c5ea6 100644
--- a/lib/ui.js
+++ b/lib/ui.js
@@ -277,65 +277,57 @@ let UI = exports.UI =
*/
init: function()
{
- // We should call initDone once both overlay and filters are loaded
- let overlayLoaded = false;
- let filtersLoaded = false;
- let sessionRestored = false;
+ // We have to wait for multiple events before running start-up actions
+ let prerequisites = [];
// Start loading overlay
- let request = new XMLHttpRequest();
- request.mozBackgroundRequest = true;
- request.open("GET", "chrome://adblockplus/content/ui/overlay.xul");
- request.channel.owner = Utils.systemPrincipal;
- request.addEventListener("load", function(event)
+ prerequisites.push(new Promise((resolve, reject) =>
{
- if (onShutdown.done)
- return;
+ let request = new XMLHttpRequest();
+ request.mozBackgroundRequest = true;
+ request.open("GET", "chrome://adblockplus/content/ui/overlay.xul");
+ request.channel.owner = Utils.systemPrincipal;
+ request.addEventListener("load", event =>
+ {
+ if (onShutdown.done)
+ return;
- this.processOverlay(request.responseXML.documentElement);
+ this.processOverlay(request.responseXML.documentElement);
- // Don't wait for the rest of the startup sequence, add icon already
- this.addToolbarButton();
+ // Don't wait for the rest of the startup sequence, add icon already
+ this.addToolbarButton();
- overlayLoaded = true;
- if (overlayLoaded && filtersLoaded && sessionRestored)
- this.initDone();
- }.bind(this), false);
- request.send(null);
+ resolve();
+ }, false);
- // Wait for filters to load
- if (FilterStorage._loading)
- {
- let listener = function(action)
+ request.addEventListener("error", event =>
{
- if (action != "load")
- return;
+ reject(new Error("Unexpected: Failed to load overlay.xul"));
+ });
- FilterNotifier.removeListener(listener);
- filtersLoaded = true;
- if (overlayLoaded && filtersLoaded && sessionRestored)
- this.initDone();
- }.bind(this);
- FilterNotifier.addListener(listener);
- }
- else
- filtersLoaded = true;
+ request.send(null);
+ }));
+
+ // Wait for filters to load
+ if (FilterStorage._loading)
+ prerequisites.push(FilterNotifier.once("load"));
- // Initialize UI after the session is restored
- let window = this.currentWindow;
- if (!window && "nsISessionStore" in Ci)
+ // Wait for session to be restored
+ prerequisites.push(new Promise((resolve, reject) =>
{
- // No application windows yet, the application must be starting up. Wait
- // for session to be restored before initializing our UI.
- new SessionRestoreObserver(function()
+ let window = this.currentWindow;
+ if (!window && "nsISessionStore" in Ci)
{
- sessionRestored = true;
- if (overlayLoaded && filtersLoaded && sessionRestored)
- this.initDone();
- }.bind(this));
- }
- else
- sessionRestored = true;
+ // No application windows yet, the application must be starting up. Wait
+ // for session to be restored before initializing our UI.
+ new SessionRestoreObserver(resolve);
+ }
+ else
+ resolve();
+ }));
+
+ Promise.all(prerequisites).then(() => this.initDone())
+ .catch(e => Cu.reportError(e));
},
/**
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/adblock-plus.git
More information about the Pkg-mozext-commits
mailing list