<html>
<head>
<script>

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var logDiv;

function log(msg, success)
{
    logDiv.appendChild(document.createElement('div')).textContent = msg + ': ' + (!!success ? 'PASS' : 'FAIL');
}

function runTest()
{
    logDiv = document.getElementById('console');
    var input = document.getElementsByTagName('input')[0];
    setTimeout(async function() {
        input.disabled = false;
        if (!window.eventSender)
            return;

        var x = input.offsetLeft + input.offsetWidth / 2;
        var y = input.offsetTop + input.offsetHeight / 2;
        await eventSender.asyncMouseMoveTo(x, y);
        await eventSender.asyncMouseDown();
        await eventSender.asyncMouseUp();
        eventSender.keyDown('a');
        log('The inner text element of the search input should never be 0-height', input.value == 'a');
        testRunner.notifyDone();
    }, 0);
}

</script>
</head>
<body onload="runTest()">
    <div>
        <input id="foo" type="search" results="0" disabled>
    </div>
<div id="console">
</div>
</body>
</html>
