<head>
<script>
function test()
{
    if (window.layoutTestController)
        layoutTestController.dumpAsText();
    if (window.eventSender) {
        eventSender.mouseMoveTo(20, 70);
        eventSender.mouseDown();
        eventSender.mouseUp();
    }
}

function selectClicked() {
    var message = "Passed";
    var paragraph = document.createElement('p');
    paragraph.appendChild(document.createTextNode(message));
    document.getElementById('console').appendChild(paragraph);
}
</script>
</head>
<body onload="test();">
<p>This tests clicking on an empty select. If successful, the console message says Passed. See bug 11765.
<form>
<select  onclick="selectClicked()" style="width:100px;height:100px;" id="select" size=2>
</select>
</form>
<p id="console"></p>
</body>
