<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="resources/extend-selection.css" />
<style>
.fix_width {font-size: 10px; font-family: sans-serif;}
</style>
<script src="resources/move-by-word-visually.js"></script>
<script>

onload = function() {
    try {
        runTest();
    } finally {
        flushLog();
    }
};

if (window.testRunner && window.internals) {
    testRunner.dumpAsText();
    internals.settings.setEditingBehavior('windows');
}
</script>
</head>
<body>
<div id="testMoveByWord">
<!-- 
Title saves the word breaks.
The format of title is "xxx|xxxx".

The sequence on the left of "|" is word boundaries when moving caret from left to right.
The sequence on the right of "|" is word boundaries when moving caret from right to left.

If there is a single node in the line, the sequence are offsets.
If there are multiple nodes in the line, the sequence is array of [anchor_node_id, offset, child_node_index], 
where child_node_index is optional, default is the first child of the anchor node.
-->

<!-- test multispaces -->
<div dir=ltr class="test_move_by_word" title="0 4 8 15 18|18 15 8 4 0" contenteditable>abc def    hij opq</div>
<div dir=ltr class="test_move_by_word" title="4 8 15 22 28|28 22 15 8 4" contenteditable>    abc    def    hij    opq    </div>
<div dir=ltr class="test_move_by_word" title="4 8 15 21|21 15 8 4" contenteditable>    abc    אבצ    def    </div>
<div dir=ltr class="test_move_by_word" title="4 8 15 21 29 36 42|42 36 29 21 15 8 4" contenteditable>    abc    def    אבצ    דדפ    hij    opq    </div>
<div dir=ltr class="test_move_by_word" title="4 8 15 22 35 28 43 50 57 63|63 57 50 43 28 35 22 15 8 4" contenteditable>    abc    def    hij    אבצ    דעפ    היח    opq    rst    uvw    </div>
<div dir=ltr class="test_move_by_word" title="4 21 14 7 28|28 7 14 21 4" contenteditable>    אבצ    דעפ    חיח    ופק    </div>
<div dir=ltr class="test_move_by_word" title="4 8 15 21|21 15 8 4" contenteditable>    אבצ    abc    דעפ     </div>
<div dir=ltr class="test_move_by_word" title="4 7 15 22 28 33 40|40 33 28 22 15 7 4" contenteditable>    אבצ    דעפ    abc   def   חיח    ופק    </div>
<div dir=ltr class="test_move_by_word" title="4 14 7 22 29 35 41 51 46 58|58 46 51 41 35 29 22 7 14 4" contenteditable>    אבצ    דעפ    חיח    abc   def   jih   ופק  ופק    רסת     </div>

<div dir=ltr class="test_move_by_word" title="0 14 7 3 18|18 3 7 14 0" contenteditable>אבצ דעפ    היח ופק</div>
<div dir=ltr class="test_move_by_word" title="0 7 3 12 19 23 26|26 23 19 12 3 7 0" contenteditable>אבצ דעפ היח    abc def hij</div>
<div dir=ltr class="test_move_by_word" title="0 4 8 12 22 18 27 34 38 41|41 38 34 27 18 22 12 8 4 0" contenteditable>abc def hij    אבצ דעפ היח    opq rst uvw</div>

<div dir=rtl class="test_move_by_word" title="18 3 7 14 0|0 14 7 3 18" contenteditable>abc def    hij opq</div>
<div dir=rtl class="test_move_by_word" title="28 7 14 21 4|4 21 14 7 28" contenteditable>    abc    def    hij    opq    </div>
<div dir=rtl class="test_move_by_word" title="21 15 8 4|4 8 15 21" contenteditable>    abc    אבצ    def    </div>
<div dir=rtl class="test_move_by_word" title="42 35 29 22 15 7 4|4 7 15 22 29 35 42" contenteditable>    abc    def    אבצ    דדפ    hij    opq    </div>
<div dir=rtl class="test_move_by_word" title="63 49 56 43 36 29 22 7 14 4|4 14 7 22 29 36 43 56 49 63" contenteditable>    abc    def    hij    אבצ    דעפ    היח    opq    rst    uvw    </div>
<div dir=rtl class="test_move_by_word" title="28 22 15 8 4|4 8 15 22 28" contenteditable>    אבצ    דעפ    חיח    ופק    </div>
<div dir=rtl class="test_move_by_word" title="21 15 8 4|4 8 15 21" contenteditable>    אבצ    abc    דעפ     </div>
<div dir=rtl class="test_move_by_word" title="40 34 28 21 15 8 4|4 8 15 21 28 34 40" contenteditable>    אבצ    דעפ    abc   def   חיח    ופק    </div>
<div dir=rtl class="test_move_by_word" title="58 52 47 41 28 34 22 15 8 4|4 8 15 22 34 28 41 47 52 58" contenteditable>    אבצ    דעפ    חיח    abc   def   jih   ופק  ופק    רסת     </div>

<!-- multispaces while preserving spaces -->
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 11 15 18|18 15 11 4 0" contenteditable>abc def    hij opq</div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 11 18 25 32|32 25 18 11 4 0" contenteditable>    abc    def    hij    opq    </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 11 18 25|25 18 11 4 0" contenteditable>    abc    אבצ    def    </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 11 18 21 32 39 46|46 39 32 21 18 11 4 0" contenteditable>    abc    def    אבצ    דדפ    hij    opq    </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 11 18 25 35 28 46 53 60 67|67 60 53 46 28 35 25 18 11 4 0" contenteditable>    abc    def    hij    אבצ    דעפ    היח    opq    rst    uvw    </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 21 14 7 32|32 7 14 21 4 0" contenteditable>    אבצ    דעפ    חיח    ופק    </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 11 18 26|26 18 11 4 0" contenteditable>    אבצ    abc    דעפ     </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 7 18 24 30 33 44|44 33 30 24 18 7 4 0" contenteditable>    אבצ    דעפ    abc   def   חיח    ופק    </div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 14 7 25 31 37 43 51 46 63|63 46 51 43 37 31 25 7 14 4 0" contenteditable>    אבצ    דעפ    חיח    abc   def   jih   ופק  ופק    רסת     </div>

<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 14 7 3 18|18 3 7 14 0" contenteditable>אבצ דעפ    היח ופק</div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 7 3 15 19 23 26|26 23 19 15 3 7 0" contenteditable>אבצ דעפ היח    abc def hij</div>
<div style="white-space:pre" dir=ltr class="test_move_by_word" title="0 4 8 15 22 18 30 34 38 41|41 38 34 30 18 22 15 8 4 0" contenteditable>abc def hij    אבצ דעפ היח    opq rst uvw</div>

<div style="white-space:pre" dir=rtl class="test_move_by_word" title="18 3 7 14 0|0 14 7 3 18" contenteditable>abc def    hij opq</div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="32 7 14 21 4 0|0 4 21 14 7 32" contenteditable>    abc    def    hij    opq    </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="25 18 11 4 0|0 4 11 18 25" contenteditable>    abc    אבצ    def    </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="46 35 32 25 18 7 4 0|0 4 7 18 25 32 35 46" contenteditable>    abc    def    אבצ    דדפ    hij    opq    </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="67 49 56 46 39 32 25 7 14 4 0|0 4 14 7 25 32 39 46 56 49 67" contenteditable>    abc    def    hij    אבצ    דעפ    היח    opq    rst    uvw    </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="32 25 18 11 4 0|0 4 11 18 25 32" contenteditable>    אבצ    דעפ    חיח    ופק    </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="26 18 11 4 0|0 4 11 18 26" contenteditable>    אבצ    abc    דעפ     </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="44 37 30 21 18 11 4 0|0 4 11 18 21 30 37 44" contenteditable>    אבצ    דעפ    abc   def   חיח    ופק    </div>
<div style="white-space:pre" dir=rtl class="test_move_by_word" title="63 55 48 43 28 34 25 18 11 4 0|0 4 11 18 25 34 28 43 48 55 63" contenteditable>    אבצ    דעפ    חיח    abc   def   jih   ופק  ופק    רסת     </div>

<!-- test words not separated by spaces -->
<div style="white-space:pre" contenteditable dir=ltr class="test_move_by_word" title="0 1 2 3 4 9 10 11 17 21 24|24 21 17 11 10 9 4 3 2 1 0">人一氧喝大    笑抬的     abc def</div>

</div>
<pre id="console"></pre>
</body>
</html>
