<html>
<script>
    if (window.testRunner)
        testRunner.waitUntilDone();

    function performUserEvents() {
        if (window.eventSender) {
            eventSender.mouseMoveTo(15, 15);
            eventSender.mouseDown();
            eventSender.mouseUp();
        }
    }
</script>

<body style="font-size: 32" onload="performUserEvents()">
<a href="someErrantPage.html"
   onclick="window.location='success200.html'; return false">
Click this link</a>
<br>
Test failed - This page uses javascript to implement the navigation to
another page that happens when the user clicks a link.  The key aspect
of this test is that this page should appear in the back/forward list,
since it is a (simulated) user action that causes the navigation from
this page to occur (vs a timer that did the same thing, but not
initiated by the user).
</body>
</html>
