<script src="resources/redirect-updates-history-item.js"></script>
<script>

// Test that we properly update a history item when reloading the history item
// results in a redirect to a different document.  We verify that the resulting
// document is not treated as the same document as the original document in
// history.  See redirect-on-reload-updates-history-item.php for more details.

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.dumpBackForwardList();
    testRunner.waitUntilDone();
}
onload = function() {
    setTimeout(function() {
        // These fields are used by subsequent pages in this test.  Clear them
        // to avoid confusing the test with old state.
        clearLocationCookie();
        delete sessionStorage.done;

        location = 'resources/redirect-on-reload-updates-history-item.php';
    }, 0);
}
</script>
