<!-- webkit-test-runner [ enableBackForwardCache=true ] -->
<p>Test pageshow/pagehide event behavior when navigating back to an cached page.</p>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

window.onload = function(evt) {
    alert("window.onload");
}

window.onpageshow = function(evt) {
    alert("window.onpageshow" + ", target = " + evt.target + ", persisted = " + evt.persisted);
    if (evt.persisted) {
        // Returned back.
        window.onpagehide = null;
        setTimeout(function() { if (window.testRunner) testRunner.notifyDone(); }, 0);
    } else {
        setTimeout('window.location.href = "data:text/html,<script>history.back();</scr" + "ipt>"', 0);
    }
}

window.onpagehide = function(evt) {
    alert("window.onpagehide" + ", target = " + evt.target + ", persisted = " + evt.persisted);
}

</script>
