Bug 1356826: Part 6 - Wait for delayed startup before checking for side-loads. r?aswan draft
authorKris Maglione <maglione.k@gmail.com>
Sat, 15 Apr 2017 14:09:41 -0700
changeset 566803 ac18e7ebf09d6cf51092339508229c1b8bbfcf90
parent 566802 2ad1fa3507852ce0d20194cd209e2d2e7cdcf58c
child 566804 26663a49184409997551bf36897bcdd8cd3edc2c
push id55341
push usermaglione.k@gmail.com
push dateSun, 23 Apr 2017 19:06:57 +0000
reviewersaswan
bugs1356826
milestone55.0a1
Bug 1356826: Part 6 - Wait for delayed startup before checking for side-loads. r?aswan MozReview-Commit-ID: IpuRNbdUXmE
browser/base/content/browser.js
browser/modules/ExtensionsUI.jsm
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1122,16 +1122,21 @@ addEventListener("DOMContentLoaded", fun
     if (tabToOpen instanceof XULElement && tabToOpen.hasAttribute("usercontextid")) {
       initBrowser.setAttribute("usercontextid", tabToOpen.getAttribute("usercontextid"));
     }
   }
 
   gBrowser.updateBrowserRemoteness(initBrowser, gMultiProcessBrowser);
 });
 
+let _resolveDelayedStartup;
+var delayedStartupPromise = new Promise(resolve => {
+  _resolveDelayedStartup = resolve;
+});
+
 var gBrowserInit = {
   delayedStartupFinished: false,
 
   onLoad() {
     gBrowser.addEventListener("DOMUpdatePageReport", gPopupBlockerObserver);
 
     Services.obs.addObserver(gPluginHandler.NPAPIPluginCrashed, "plugin-crashed");
 
@@ -1601,16 +1606,17 @@ var gBrowserInit = {
         if (panel.state == "open") {
           panel.hidePopup();
         }
       }
     });
 
     this.delayedStartupFinished = true;
 
+    _resolveDelayedStartup();
     Services.obs.notifyObservers(window, "browser-delayed-startup-finished");
     TelemetryTimestamps.add("delayedStartupFinished");
   },
 
   // Returns the URI(s) to load at startup.
   _getUriToLoad() {
     // window.arguments[0]: URI to load (string), or an nsIArray of
     //                      nsISupportsStrings to load, or a xul:tab of
--- a/browser/modules/ExtensionsUI.jsm
+++ b/browser/modules/ExtensionsUI.jsm
@@ -30,24 +30,26 @@ const BRAND_PROPERTIES = "chrome://brand
 const HTML_NS = "http://www.w3.org/1999/xhtml";
 
 this.ExtensionsUI = {
   sideloaded: new Set(),
   updates: new Set(),
   sideloadListener: null,
   histogram: null,
 
-  init() {
+  async init() {
     this.histogram = Services.telemetry.getHistogramById("EXTENSION_INSTALL_PROMPT_RESULT");
 
     Services.obs.addObserver(this, "webextension-permission-prompt");
     Services.obs.addObserver(this, "webextension-update-permissions");
     Services.obs.addObserver(this, "webextension-install-notify");
     Services.obs.addObserver(this, "webextension-optional-permission-prompt");
 
+    await RecentWindow.getMostRecentBrowserWindow().delayedStartupPromise;
+
     this._checkForSideloaded();
   },
 
   _checkForSideloaded() {
     AddonManager.getAllAddons(addons => {
       // Check for any side-loaded addons that the user is allowed
       // to enable.
       let sideloaded = addons.filter(