<script>

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpChildFramesAsText();
    testRunner.waitUntilDone();
}

function log(msg) {
    document.getElementById("logger").innerHTML += msg + "<br>";
}

window.onload = function()
{
    try {
        for( var i = 0; i < 75; ++i ) {
            history.replaceState(0, 0, "#" + i);
            log("Successfully added item: " + i);
        }
    } catch (e) {
        log(e);
    }

    openFrame();
}

function openFrame()
{
    var iframe = document.createElement('iframe');
    iframe.src = 'resources/replacestate-iframe.html'
    document.body.appendChild(iframe);
}

</script>
<body>
Test should not crash.<br>
Test does replaceStates both from the main frame and from an iframe and makes sure they both count against state object count limit.<br>
<div id="logger"></div>
</body>
