async function talosStart() { // Tests are driven from pageloader.xhtml. We need to be careful to open // pageloader.xhtml before dismissing the default browser window or we // may inadvertently cause the browser to exit before the pageloader.xhtml // window is opened. Start by finding or waiting for the default window.
let defaultWin = Services.wm.getMostRecentWindow("navigator:browser"); if (!defaultWin) {
defaultWin = await new Promise(resolve => { const listener = {
onOpenWindow(win) { if (
win.docShell.domWindow.location.href ==
AppConstants.BROWSER_CHROME_URL
) {
Services.wm.removeListener(listener);
resolve(win);
}
},
};
Services.wm.addListener(listener);
});
}
// Wwe've got the default window, it is time for pageloader to take over. // Open pageloader.xhtml in a new window and then close the default window.
let chromeURL = "chrome://pageloader/content/pageloader.xhtml";
let args = {};
args.wrappedJSObject = args;
let newWin = Services.ww.openWindow( null,
chromeURL, "_blank", "chrome,dialog=no,all",
args
);
await new Promise(resolve => {
newWin.addEventListener("load", resolve);
});
defaultWin.close();
}
if (Services.env.exists("MOZ_USE_PAGELOADER")) { // TalosPowers is a separate WebExtension that may or may not already have // finished loading. tryLoad is used to wait for TalosPowers to be around // before continuing.
async function tryLoad() { try {
ChromeUtils.importESModule( "resource://talos-powers/TalosParentProfiler.sys.mjs"
);
} catch (err) {
await new Promise(resolve => setTimeout(resolve, 500)); return tryLoad();
}
returnnull;
}
// talosStart is async but we're deliberately not await-ing or return-ing // it here since it doesn't block extension startup.
tryLoad().then(() => {
talosStart();
});
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.