<html>
<head>
<script>

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

function log(txt)
{
    document.getElementById("logger").innerText += txt + "\n";
}
    
function runTest()
{
    history.replaceState("OriginalHistoryItem", "Replaced title");
    log("History length is " + history.length);
    history.pushState("NewHistoryItem", "Pushed title");
    log("History length is " + history.length);
    history.back();
}

onpopstate = function(event)
{
    log("State popped - " + event.state + " (type " + typeof event.state + ")");
    if (event.state == "OriginalHistoryItem")
        history.forward();
    else if (window.testRunner)
        testRunner.notifyDone();
}

</script>
<body onload="runTest();">
<pre>
This test does the following:
-Makes a call to replaceState()
-Makes sure the history length is correct
-Makes a call to pushState()
-Makes sure the history length is correct
-Goes back, and makes sure the popstate event is correct
-Goes forward, and makes sure the popstate event is correct
</pre><br>
<pre id="logger"></pre>
</body>
</html>
