mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1,018 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1,018 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
export 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;
 | 
						|
  }
 | 
						|
}
 |