| Index: LayoutTests/editing/caret/caret-direction-auto.html | 
| diff --git a/LayoutTests/editing/caret/caret-direction-auto.html b/LayoutTests/editing/caret/caret-direction-auto.html | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..bc1d3fca57b4787ed9d42d24de66027d778260ad | 
| --- /dev/null | 
| +++ b/LayoutTests/editing/caret/caret-direction-auto.html | 
| @@ -0,0 +1,50 @@ | 
| +<!DOCTYPE html> | 
| +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | 
| +<script src="../../resources/js-test.js"></script> | 
| +<textarea id="textarea" dir="auto" style="font-size: 20px; width: 20ex; border: solid thin black; padding: 10px;">א!</textarea> | 
| +<script> | 
| +description('Tests various scenarios for caret position when direction is auto'); | 
| + | 
| +var text = document.getElementById('textarea'); | 
| +var beforeCaretPos, afterCaretPos; | 
| +text.focus(); | 
| +shouldBeEqualToString('textarea.value', 'א!'); | 
| + | 
| +debug('1. Caret is at right if text is in LTR direction'); | 
| +beforeCaretPos = textInputController.firstRectForCharacterRange(0, 3); | 
| +testRunner.execCommand('MoveToEndOfLine'); | 
| +document.execCommand('InsertLineBreak'); | 
| +document.execCommand('InsertText', false, 'hello'); | 
| +afterCaretPos = textInputController.firstRectForCharacterRange(4, 5); | 
| +shouldBeEqualToString('textarea.value', 'א!\nhello'); | 
| +debug('Compares lines if they are different'); | 
| +shouldNotBe('beforeCaretPos[1]', 'afterCaretPos[1]'); | 
| +debug('New text is in LTR direction, start of caret will differ'); | 
| +shouldBeGreaterThan('beforeCaretPos[0]', 'afterCaretPos[0]'); | 
| + | 
| +debug('2. Addition of RTL text in middle of LTR text, caret moves to the left of the line.'); | 
| +beforeCaretPos = afterCaretPos; | 
| +document.execCommand('InsertText', false, '\u05d0\u05d0'); | 
| +afterCaretPos = textInputController.firstRectForCharacterRange(4, 7); | 
| +shouldBeEqualToString('textarea.value', 'א!\nhelloאא'); | 
| +debug('RTL text added will be move caret to start of position where hello begins'); | 
| +shouldBe('beforeCaretPos[0]', 'afterCaretPos[0]+afterCaretPos[2]'); | 
| + | 
| +debug('3. Adding LTR text after RTL should move caret towards right.'); | 
| +beforeCaretPos = afterCaretPos; | 
| +document.execCommand('InsertText', false, 'bye'); | 
| +afterCaretPos = textInputController.firstRectForCharacterRange(4, 10); | 
| +shouldBeEqualToString('textarea.value', 'א!\nhelloאאbye'); | 
| +debug('Start position of caret is same'); | 
| +shouldBe('beforeCaretPos[0]+beforeCaretPos[2]', 'afterCaretPos[0]'); | 
| +debug('But end position differs'); | 
| +shouldNotBe('beforeCaretPos[0]+beforeCaretPos[2]', 'afterCaretPos[0]+afterCaretPos[2]'); | 
| + | 
| +debug('4. Adding space, caret should move caret'); | 
| +beforeCaretPos = afterCaretPos; | 
| +document.execCommand('InsertText', false, ' '); | 
| +afterCaretPos = textInputController.firstRectForCharacterRange(4, 11); | 
| +shouldBeEqualToString('textarea.value', 'א!\nhelloאאbye '); | 
| +shouldBeGreaterThan('afterCaretPos[0]+afterCaretPos[2]', 'beforeCaretPos[0]+beforeCaretPos[2]'); | 
| + | 
| +</script> | 
|  |