fune/docshell/test/unit/AllowJavascriptChild.jsm
Kris Maglione ae436f55ec Bug 1646560: Part 2 - Move allowJavascript and friends from DocShell to BrowsingContext and WindowContext. r=jdescottes,nika,geckoview-reviewers,devtools-backward-compat-reviewers,agi
This is slightly complicated by the fact that the editor code wants to be able
to set this from the content process, so we really need separate
BrowsingContext and WindowContext flags, the latter of which can be set by the
owning process.

Differential Revision: https://phabricator.services.mozilla.com/D114899
2021-06-15 04:40:11 +00:00

44 lines
1 KiB
JavaScript

"use strict";
var EXPORTED_SYMBOLS = ["AllowJavascriptChild"];
class AllowJavascriptChild extends JSWindowActorChild {
async receiveMessage(msg) {
switch (msg.name) {
case "CheckScriptsAllowed":
return this.checkScriptsAllowed();
case "CheckFiredLoadEvent":
return this.contentWindow.wrappedJSObject.gFiredOnload;
case "CreateIframe":
return this.createIframe(msg.data.url);
}
return null;
}
handleEvent(event) {
if (event.type === "load") {
this.sendAsyncMessage("LoadFired");
}
}
checkScriptsAllowed() {
let win = this.contentWindow;
win.wrappedJSObject.gFiredOnclick = false;
win.document.body.click();
return win.wrappedJSObject.gFiredOnclick;
}
async createIframe(url) {
let doc = this.contentWindow.document;
let iframe = doc.createElement("iframe");
iframe.src = url;
doc.body.appendChild(iframe);
await new Promise(resolve => {
iframe.addEventListener("load", resolve, { once: true });
});
return iframe.browsingContext;
}
}