diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /layout/generic/test/test_movement_by_words.html | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'layout/generic/test/test_movement_by_words.html')
-rw-r--r-- | layout/generic/test/test_movement_by_words.html | 510 |
1 files changed, 510 insertions, 0 deletions
diff --git a/layout/generic/test/test_movement_by_words.html b/layout/generic/test/test_movement_by_words.html new file mode 100644 index 000000000..fae98e567 --- /dev/null +++ b/layout/generic/test/test_movement_by_words.html @@ -0,0 +1,510 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test Word Movement (including nsTextFrame::PeekOffsetWord)</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<p id="display"></p> +<div id="content" style="display: block"> +<div contentEditable id="editor"></div> +</div> +<p id="catch">Catch-all +<pre id="test"><script class="testbody" type="text/javascript;version=1.7"> + +/** Tests for bugs 384147, 981281, 1066756 **/ + +SimpleTest.waitForExplicitFinish(); + +SimpleTest.waitForFocus(function(){setTimeout(focusing, 0)}); + +function focusing() { + document.getElementById("editor").focus(); + // This seems to be necessary because the selection is not set up properly otherwise + setTimeout(test, 0); +} + +var eatSpace; +var stopAtPunctuation; +var wordModifiers = + (navigator.platform.indexOf("Mac") >= 0) ? {altKey:true} : {ctrlKey:true}; +var sel = window.getSelection(); +var editor = document.getElementById("editor"); + +function setPrefs(eat_space, stop_at_punctuation, callback) { + eatSpace = eat_space; + stopAtPunctuation = stop_at_punctuation; + SpecialPowers.pushPrefEnv({"set": [["layout.word_select.eat_space_to_next_word", eat_space], ["layout.word_select.stop_at_punctuation", stop_at_punctuation]]}, callback); +} + +function errString(dir) { + return dir + " movement broken with eatSpace=" + eatSpace + + ", stopAtPunctuation=" + stopAtPunctuation + " in \"" + editor.innerHTML + + "\"; sel.anchorNode.parentNode=" + sel.anchorNode.parentNode; +} + +function testRight(node, offset) { + synthesizeKey("VK_RIGHT", wordModifiers); + is(sel.anchorNode, node, errString("Right")); + is(sel.anchorOffset, offset, errString("Right")); +} + +function testLeft(node, offset) { + synthesizeKey("VK_LEFT", wordModifiers); + is(sel.anchorNode, node, errString("Left")); + is(sel.anchorOffset, offset, errString("Left")); +} + +var afterEditorNode = document.getElementById("catch").firstChild; + +var ChineseChars = "漢字"; +var HiraganaChars = "ひらがな"; +var KatakanaChars = "カタカナ"; +var JapaneseFullStop = "。"; +var JapaneseComma = "、"; +var ModifierColon = "꞉"; + +function test() { + setPrefs(false, true, test1); +} + +function test1() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 5); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 3); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + // In the next test, we expect to be at the end of the + // space that is not collapsed away + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 11); + testRight(editor.firstChild, 19); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 10); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild.nextSibling.firstChild, 1); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 3); + testLeft(editor.firstChild, 0); + + // test for bug 1066756 + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // test basic word movement with eat_space_next_to_word true. + setPrefs(true, true, test2); +} + +function test2() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 1); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 4); + testRight(editor.firstChild.nextSibling, 2); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 11); + testRight(editor.firstChild, 19); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild.nextSibling.firstChild, 0); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild.nextSibling.firstChild, 1); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 10); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 10); + testLeft(editor.firstChild, 5); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 3); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // Test basic word movement with stop_at_punctuation false (bug 981281). + setPrefs(false, false, test3); +} + +function test3() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 5); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 5); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 3); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 22); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 3); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 10); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + // And again with eat_space_next_to_word true. + setPrefs(true, false, test4); +} + +function test4() { + editor.innerHTML = "Hello Kitty"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 11); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "<b>Hello</b> Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 1); + testRight(editor.firstChild.nextSibling, 6); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Hello </b>Kitty"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.nextSibling, 0); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.firstChild, 6); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "<b>Log out</b> roc"; + sel.collapse(editor.firstChild.firstChild, 0); + testRight(editor.firstChild.firstChild, 4); + testRight(editor.firstChild.nextSibling, 2); + testRight(editor.firstChild.nextSibling, 5); + testLeft(editor.firstChild.nextSibling, 1); + testLeft(editor.firstChild.firstChild, 4); + testLeft(editor.firstChild.firstChild, 0); + + editor.innerHTML = "http://www.mozilla.org"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 22); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild.nextSibling.firstChild, 0); + testRight(editor.firstChild.nextSibling.nextSibling, 5); + testLeft(editor.firstChild, 11); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 2); + testRight(editor.firstChild, 6); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 6); + testLeft(editor.firstChild, 2); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 4); + testRight(editor.firstChild, 8); + testRight(editor.firstChild, 12); + testLeft(editor.firstChild, 8); + testLeft(editor.firstChild, 4); + testLeft(editor.firstChild, 0); + + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 14); + testLeft(editor.firstChild, 0); + + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 8); + testLeft(editor.firstChild, 0); + + editor.innerHTML = "hello" + ModifierColon + " wo" + ModifierColon + "rld"; + sel.collapse(editor.firstChild, 0); + testRight(editor.firstChild, 7); + testRight(editor.firstChild, 13); + testLeft(editor.firstChild, 7); + testLeft(editor.firstChild, 0); + + SimpleTest.finish(); +} + + +</script></pre> +</body> +</html> |