<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1536471 --> <head> <title>Test for Bug 1536471</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> <script type="application/javascript"> let testWin; async function test() { // Open a new tab and load a document with an iframe inside testWin = window.open("file_bug1536471.html"); await waitForLoad(); var iframe = testWin.document.getElementById("staticFrame"); is(testWin.history.length, 1, "Checking the number of session history entries when there is only one iframe"); // Navigate the iframe to different pages await loadUriInFrame(iframe, "frame1.html"); is(testWin.history.length, 2, "Checking the number of session history entries after having navigated a single iframe 1 time"); await loadUriInFrame(iframe, "frame2.html"); is(testWin.history.length, 3, "Checking the number of session history entries after having navigated a single iframe 2 times"); await loadUriInFrame(iframe, "frame3.html"); is(testWin.history.length, 4, "Checking the number of session history entries after having navigated a single iframe 3 times"); // Reload the top document testWin.location.reload(true); await waitForLoad(); is(testWin.history.length, 1, "Checking the number of session history entries after reloading the top document"); testWin.close(); SimpleTest.finish(); } async function waitForLoad() { await new Promise(resolve => { window.bodyOnLoad = function() { setTimeout(resolve, 0); window.bodyOnLoad = undefined; }; }); } async function iframeOnload(frame) { return new Promise(resolve => { frame.addEventListener("load", () => { setTimeout(resolve, 0); }, {once: true}); }); } async function loadUriInFrame(frame, uri) { let onloadPromise = iframeOnload(frame); frame.src = uri; await onloadPromise; } </script> </head> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1536471">Mozilla Bug </a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> <script type="text/javascript"> SimpleTest.waitForExplicitFinish(); </script> </pre> <body onload="test()"> </body> </html>