<script>

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

onpopstate = function() {
    history.pushState(null, null);
    if (window.testRunner)
        testRunner.notifyDone();
}

onload = function() {
    history.pushState(null, null);
    history.back();
}

</script>
<body>
This test checks to make sure that calling pushState() from within a popstate event handler doesn't ASSERT or crash.
</body>
