<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=829383 --> <head> <title>Test for Bug 829383</title> <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=829383">Mozilla Bug 829383</a> <p id="display"></p> <div id="content" style="display: none"> <iframe name="target"></iframe> </div> <pre id="test"> <script class="testbody" type="text/javascript"> SimpleTest.waitForExplicitFinish(); const Ci = Components.interfaces; var mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIWebNavigation) .QueryInterface(Ci.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Ci.nsIInterfaceRequestor) .getInterface(Ci.nsIDOMWindow); // We need to wait for the hidden window to load, but can't access // an event target for a regular event listener. var hidden = mainWindow.Services.appShell.hiddenPrivateDOMWindow; mainWindow.PrivateBrowsingUtils.whenHiddenPrivateWindowReady(function(hidden) { var iframe = hidden.document.createElement('iframe'); iframe.src = 'generic.html'; hidden.document.body.appendChild(iframe); var win = mainWindow.OpenBrowserWindow({private: true}); win.addEventListener("load", function onLoad() { win.removeEventListener("load", onLoad, false); win.close(); win = null; }, false); }); function observer(aSubject, aTopic, aData) { is(aTopic, "last-pb-context-exited", "Unexpected observer topic"); mainWindow.Services.obs.removeObserver(observer, "last-pb-context-exited"); SimpleTest.finish(); } mainWindow.Services.obs.addObserver(observer, "last-pb-context-exited", false); </script> </pre> </body> </html>