[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