<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();
    testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
}

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>
