add_task(async function test() {
let page = await XPCShellContentUtils.loadContentPage("about:blank", {
remote: true,
});
await new Promise(resolve => {
let mm = page.browser.messageManager;
mm.addMessageListener("chromeEventHandler", function (msg) { var result = msg.json;
equal(
result.processType,
Ci.nsIXULRuntime.PROCESS_TYPE_CONTENT, "The frame script is running in a real distinct child process"
);
ok(
result.hasCorrectInterface, "docshell.chromeEventHandler has EventTarget interface"
);
});
mm.addMessageListener("DOMWindowCreatedReceived", function (msg) {
ok(true, "the chrome event handler looks functional"); var result = msg.json;
ok(
result.stableChromeEventHandler, "docShell.chromeEventHandler is stable"
);
ok(result.iframeHasNewDocShell, "iframe spawns a new docShell");
ok(
result.iframeHasSameChromeEventHandler, "but iframe has the same chrome event handler"
);
resolve();
});
// Inject a frame script in the child process:
page.loadFrameScript(async function () { /* eslint-env mozilla/frame-script */ var chromeEventHandler = docShell.chromeEventHandler;
sendAsyncMessage("chromeEventHandler", {
processType: Services.appinfo.processType,
hasCorrectInterface:
chromeEventHandler && EventTarget.isInstance(chromeEventHandler),
});
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.