<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=172261 --> <head> <title>Test for Bug 172261</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=172261">Mozilla Bug 172261</a> <p id="display"> <iframe id="test"></iframe> </p> <div id="content" style="display: none"> </div> <pre id="test"> <script class="testbody" type="text/javascript"> /** Test for Bug 172261 **/ SimpleTest.waitForExplicitFinish(); SimpleTest.requestFlakyTimeout("untriaged"); var callable = false; function toggleCallable() { callable = true; } var doTestInIframe = false; // Shouldn't do history stuff from inside onload addLoadEvent(function() { setTimeout(startTest, 10) }); function startTest() { // First, create a dummy document. Use onunload handlers to make sure // bfcache doesn't screw us up. var doc = $("test").contentDocument; doc.write("<html><body onunload=''>First</body></html>"); doc.close(); // Now write our test document doc.write("<html><script>window.onerror = parent.onerror; if (parent.doTestInIframe) { parent.is(document.domain, parent.document.domain, 'Domains should match'); parent.toggleCallable(); } <" + "/script><body>Second</body></html>"); doc.close(); $("test").onload = goForward; history.back(); } function goForward() { $("test").onload = doTest; doTestInIframe = true; history.forward(); } function doTest() { is($("test").contentDocument.domain, document.domain, "Domains should match 2"); is($("test").contentDocument.location.href, location.href, "Locations should match"); is(callable, true, "Subframe should be able to call us"); SimpleTest.finish(); } </script> </pre> </body> </html>