Bug 1356826: Part 6 - Wait for delayed startup before checking for side-loads. r?aswan
MozReview-Commit-ID: IpuRNbdUXmE
--- 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(