<html>
<body>
<embed name="plg" type="application/x-webkit-test-netscape" width=100 height=100></embed>
<p>Test for <a href="http://bugzilla.opendarwin.org/show_bug.cgi?id=11517">bug 11517</a>:
Flash clicks/interactivity not working properly.</p>
<script>

    plg.eventLoggingEnabled = true;

    if (!window.layoutTestController) {
        document.write("This test does not work in manual mode.");
    } else {
        layoutTestController.dumpAsText();
        
        eventSender.mouseMoveTo(0,0);
        eventSender.mouseMoveTo(20,20);
        eventSender.mouseDown();
        eventSender.mouseUp();
        eventSender.mouseMoveTo(30,30);
        eventSender.mouseDown();
        eventSender.mouseMoveTo(40,30);
        eventSender.mouseUp();
        eventSender.mouseMoveTo(0,0);
    }

    plg.eventLoggingEnabled = false; // stop logging so our output doesn't bleed into the next test

</script>
</body>
</html>
