<html>
<head>
<script>
    function runTest() {
        if (!window.eventSender)
            return;
        if (window.internals)
            window.internals.setHeaderHeight(100);
        if (window.testRunner)
            testRunner.dumpAsText();

        eventSender.mouseMoveTo(20, 120);
        eventSender.mouseDown();
        eventSender.mouseUp();
    }
</script>
</head>
<body onload="runTest()">
    <iframe src="resources/iframe-to-hit-test.html" scrolling="no" frameborder="no" height="300" width="600"></iframe>
    <div id="result">This test needs to be run through WebKitTestRunner.</div>
</body>
</html>
