<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
<body onload="redirect()">
<!-- Needs to take two seconds, because a faster refresh would result in not creating a b/f item for the navigation -->
<iframe src='data:text/html,<meta http-equiv="Refresh" content="2; URL=about:blank"><script>if (window.testRunner) { window.onpagehide=function(e){alert(&apos;pagehide &apos; + e.persisted)}; }</script>'></iframe>
<a id="outerLink" href='data:text/html,<p>PASSED if didn&apos;t crash in two seconds.</p><script>if (window.testRunner) setTimeout("testRunner.notifyDone()", 2500); </script>'>test</a>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function redirect()
{
    setTimeout(function () {
        if (window.eventSender) {
            var el = document.getElementById("outerLink");
            eventSender.mouseMoveTo(el.offsetLeft + 5, el.offsetTop + 5);
            eventSender.mouseDown();
            eventSender.mouseUp();
        }
    }, 0);
}
</script>
