<html>
<body style="margin:0">
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}
</script>
<form name="form1"> 
<textarea name="text1" style="border:2px solid black;overflow:auto;height:400px;width:400px; position:absolute;">
x
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
y
</textarea>
</form> 
<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=27289">bug
27289</a>: This tests that mouse clicks/releases on scrollbars are handled
properly even is there was no mouse move onto the scrollbar; this is the
disabled control case. On success, the text should begin with "zx".<p/>
<div id="console"></div>
<script>
if (window.eventSender) {
    document.form1.text1.disabled = true;
    document.form1.style.display = "none";
    eventSender.mouseMoveTo(390, 10);
    document.form1.style.display = "";
    eventSender.mouseDown();
    eventSender.mouseUp();
    eventSender.mouseMoveTo(390, 350);
    eventSender.mouseMoveTo(4,350);
    eventSender.mouseDown();
    eventSender.mouseUp();
    eventSender.mouseMoveTo(4,4);
    document.form1.text1.disabled = false;
    eventSender.mouseDown();
    eventSender.mouseUp();
    eventSender.keyDown('z');
    setTimeout(finished, 500);
}

function finished()
{
    document.getElementById('console').innerHTML
        = "Text is \"" + document.form1.text1.value + "\"";
    testRunner.notifyDone();
}
</script>
</body>
</html>
