<html>
<head>
    <script>
    function test() {
        if (window.layoutTestController) {
            layoutTestController.dumpAsText();
            // Set this preference so the tab key will actually insert a tab character- like in Mail.
            layoutTestController.setTabKeyCyclesThroughElements(false);
        }
        var ta = document.getElementById('ta');
        ta.focus();
        if (window.eventSender) {
            eventSender.keyDown("\t");
        }
        var res = document.getElementById('res');
        if (ta.value == "\t")
            res.innerHTML = "Test Passed";
    }
    </script>
</head>

<body onload="test()">
    This tests that you can insert a tab in a WebKit app that allows tab insertion<br>
    <textarea id="ta"></textarea><br>
    <div id="res">Test Failed</div>
</body>
</html>
