chromium/third_party/blink/web_tests/fast/history/history-length-append-subframe-with-hash.html

<!DOCTYPE html>
<html>
<head>
    <script src="../../resources/js-test.js"></script>
</head>
<body>
    <p id="description"></p>
    <pre id="console"></pre>

    <script>
    var jsTestIsAsync = true;

    description('Tests that appending iframe with with no URL and setting its URL later (including hash part) does not overwrite current history entry.');

    if (window.testRunner)
        testRunner.clearBackForwardList();

    onload = beginTest;

    function beginTest() {
        // The frame must be appened both on initial load and after navigating
        // back. On first load we must set the same SRC as after navigating away.
        var iframe = document.createElement('iframe');
        document.body.appendChild(iframe);

        if (location.hash.indexOf('wentBack') == -1) {
            // Run else code path after going back.
            location.hash = 'wentBack';

            setFrameSrc();

            // Navigate forward and back to create forward navigation entry.
            // Must be done outside the load handler to generate history entry.
            window.setTimeout(function() {
                location.href = 'resources/back-on-load.html';
            }, 0);
        } else {
            window.setTimeout(setFrameSrcAndfinishTest, 100);
        }
    }

    function setFrameSrc() {
        document.querySelector('iframe').src = 'about:blank/#identifier';
    }

    function setFrameSrcAndfinishTest() {
        document.querySelector('iframe').src = 'about:blank/#identifier';
        testRunner.dumpBackForwardList();
        finishJSTest();
    }
    </script>
</body>
</html>