file_bug1328501_framescript.js (998B)
1 // Forward iframe loaded event. 2 3 /* eslint-env mozilla/frame-script */ 4 5 addEventListener( 6 "frames-loaded", 7 () => sendAsyncMessage("test:frames-loaded"), 8 true, 9 true 10 ); 11 12 let requestObserver = { 13 observe(subject, topic) { 14 if (topic == "http-on-opening-request") { 15 // Get DOMWindow on all child docshells to force about:blank 16 // content viewers being created. 17 getChildDocShells().map(ds => { 18 ds 19 .QueryInterface(Ci.nsIInterfaceRequestor) 20 .getInterface(Ci.nsILoadContext).associatedWindow; 21 }); 22 } 23 }, 24 QueryInterface: ChromeUtils.generateQI(["nsIObserver"]), 25 }; 26 Services.obs.addObserver(requestObserver, "http-on-opening-request"); 27 addEventListener("unload", e => { 28 if (e.target == this) { 29 Services.obs.removeObserver(requestObserver, "http-on-opening-request"); 30 } 31 }); 32 33 function getChildDocShells() { 34 return docShell.getAllDocShellsInSubtree( 35 Ci.nsIDocShellTreeItem.typeAll, 36 Ci.nsIDocShell.ENUMERATE_FORWARDS 37 ); 38 }