Bug 1731994: part 7) Update documentation of `nsIContentPermissionPrompt`. r=edgar...
[gecko.git] / docshell / test / unit / AllowJavascriptChild.jsm
blob41f50d42078f1449ffdb5e1f326b8156855fa170
1 "use strict";
2 var EXPORTED_SYMBOLS = ["AllowJavascriptChild"];
4 class AllowJavascriptChild extends JSWindowActorChild {
5   async receiveMessage(msg) {
6     switch (msg.name) {
7       case "CheckScriptsAllowed":
8         return this.checkScriptsAllowed();
9       case "CheckFiredLoadEvent":
10         return this.contentWindow.wrappedJSObject.gFiredOnload;
11       case "CreateIframe":
12         return this.createIframe(msg.data.url);
13     }
14     return null;
15   }
17   handleEvent(event) {
18     if (event.type === "load") {
19       this.sendAsyncMessage("LoadFired");
20     }
21   }
23   checkScriptsAllowed() {
24     let win = this.contentWindow;
26     win.wrappedJSObject.gFiredOnclick = false;
27     win.document.body.click();
28     return win.wrappedJSObject.gFiredOnclick;
29   }
31   async createIframe(url) {
32     let doc = this.contentWindow.document;
34     let iframe = doc.createElement("iframe");
35     iframe.src = url;
36     doc.body.appendChild(iframe);
38     await new Promise(resolve => {
39       iframe.addEventListener("load", resolve, { once: true });
40     });
42     return iframe.browsingContext;
43   }