blob: 98a429ea6d7c14218a932ad1f1674319780518a6 [file] [log] [blame]
<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("OriginalEntry", "original");
history.pushState(null, null, "#");
history.pushState(null, null, "");
history.pushState(null, null, "#hash");
history.pushState(null, null, "#otherhash");
history.pushState(null, null, "#");
history.pushState(null, null, null);
history.pushState(null, null, "some-other.html");
history.pushState(null, null, "some-other.html?withquery");
history.pushState(null, null, "some-other.html?withquery#");
history.pushState(null, null, "some-other.html?withquery");
history.pushState(null, null, "some-other.html?withquery#somehash");
history.pushState(null, null, "some-other.html?withquery#");
history.pushState(null, null, "some-other.html?withquery#someotherhash");
history.pushState(null, null, "some-other.html?withsomeotherquery#someotherhash");
history.pushState(null, null, "some-other.html?withsomeotherquery#somehash");
history.pushState(null, null, "some-other.html?withsomeotherquery");
history.pushState(null, null, "some-other.html?withsomeotherquery#");
history.pushState(null, null, "some-other.html?withsomeotherquery");
history.pushState("BufferEntry", "Last entry");
history.back();
}
function lastPathComponent(url)
{
return url.split('/').pop();
}
onpopstate = function(event)
{
log("State popped with event " + event.state + " (type " + typeof event.state + ") and last path component " + lastPathComponent(location.href));
if (event.state != "OriginalEntry")
setTimeout("history.back();", 0);
else if (window.testRunner)
testRunner.notifyDone();
}
onhashchange = function(event)
{
log("Hash change fired and last path component is " + lastPathComponent(event.newURL));
}
</script>
<body onload="runTest();">
<pre>
This test pushes a series of state objects with different URLs and fragment identifiers meant to test the hashChange event as states are popped.
</pre><br>
<pre id="logger"></pre>
</body>
</html>