<html>
<script>
    function test() {
        if (window.layoutTestController) {
            layoutTestController.dumpAsText();
            layoutTestController.waitUntilDone();
        }
        setTimeout(test2, 0);
    }
    function test2() {
        document.getElementById('tf').focus();
        eventSender.keyDown('a');
        eventSender.keyDown("\r", null);
        if (window.layoutTestController)
            layoutTestController.notifyDone();
    }
    function test3()
    {
        document.getElementById('tf').style.display = "none";
    }
    function log(msg) {
        var res = document.getElementById('res');
        res.innerHTML = res.innerHTML + msg + "<br>";
    }

</script> 
<body onload="test()">
    This tests that when the onchange event handler causes the renderer to be deleted, we don't crash.<br>
    To run this test manually, type a character in the field and hit enter.<br>
    <input id="tf" onchange="test3()">
    <br>
    <div id="res"></div>
</body>
</html>
