<html>
<head>
<script src=../../editing/editing.js language="JavaScript" type="text/JavaScript" ></script>
<script>
function test()
{
    var res = document.getElementById('res');
    var ta = document.getElementById('ta');

    // Send caret to bottom of textarea
    ta.focus();
    ta.setSelectionRange(ta.value.length, ta.value.length);
    ta.blur();

    ta.focus();
    ta.setSelectionRange(44, 44);
    typeCharacterCommand(' ');
    typeCharacterCommand('P');
    typeCharacterCommand('a');
    typeCharacterCommand('s');
    typeCharacterCommand('s');

}
</script>
</head>
<body onload="test()">
This tests that typing in a scrolled textarea does not cause unnecessary scrolling.<br>
<textarea id="ta" rows=7>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</textarea>
<br>
<div id="res"></div>
</body>
</html>
