blob: 4ed053ac878ead1e6e7418e0f1445617d2e75338 [file] [log] [blame]
<!DOCTYPE html>
<html>
<body>
<script src="../../../resources/js-test-pre.js"></script>
<div id="description"></div>
<pre id="console"></pre>
<script>
description('Tests that popstate events fire for all history traversals (including navigation to fragments), not just when going back to a state object created via pushState.');
onload = function()
{
setTimeout(step, 0);
}
var currentStep = 0;
var popstateFireCount = 0;
function step()
{
switch (currentStep) {
case 0:
debug('setting hash to #state1');
location.hash = '#state1';
break;
case 1:
debug('setting hash to #state2');
location.hash = '#state2';
break;
case 2:
debug('going back');
history.back();
break;
case 3:
debug('going back');
history.back();
break;
case 4:
// The 5 expected popstate events are when:
// 1. The page loads
// 2. Navigating to #state1
// 3. Navigating to #state2
// 4. Going back to #state1
// 5. Going back to the initial page state
shouldBe('popstateFireCount', '4');
finishJSTest();
return;
default:
testFailed('unexpected state: ' + currentStep);
break;
}
currentStep++;
}
onpopstate = function(event)
{
debug('popstate fired with state ' + event.state);
popstateFireCount++;
setTimeout(step, 0);
}
var jsTestIsAsync = true;
</script>
<script src="../../../resources/js-test-post.js"></script>
</html>