tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

AllowJavascriptChild.sys.mjs (1018B)


      1 export class AllowJavascriptChild extends JSWindowActorChild {
      2  async receiveMessage(msg) {
      3    switch (msg.name) {
      4      case "CheckScriptsAllowed":
      5        return this.checkScriptsAllowed();
      6      case "CheckFiredLoadEvent":
      7        return this.contentWindow.wrappedJSObject.gFiredOnload;
      8      case "CreateIframe":
      9        return this.createIframe(msg.data.url);
     10    }
     11    return null;
     12  }
     13 
     14  handleEvent(event) {
     15    if (event.type === "load") {
     16      this.sendAsyncMessage("LoadFired");
     17    }
     18  }
     19 
     20  checkScriptsAllowed() {
     21    let win = this.contentWindow;
     22 
     23    win.wrappedJSObject.gFiredOnclick = false;
     24    win.document.body.click();
     25    return win.wrappedJSObject.gFiredOnclick;
     26  }
     27 
     28  async createIframe(url) {
     29    let doc = this.contentWindow.document;
     30 
     31    let iframe = doc.createElement("iframe");
     32    iframe.src = url;
     33    doc.body.appendChild(iframe);
     34 
     35    await new Promise(resolve => {
     36      iframe.addEventListener("load", resolve, { once: true });
     37    });
     38 
     39    return iframe.browsingContext;
     40  }
     41 }