1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/generic/test/test_movement_by_words.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,480 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <title>Test Word Movement (including nsTextFrame::PeekOffsetWord)</title> 1.8 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script> 1.10 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.11 +</head> 1.12 +<body> 1.13 +<p id="display"></p> 1.14 +<div id="content" style="display: block"> 1.15 +<div contentEditable id="editor"></div> 1.16 +</div> 1.17 +<p id="catch">Catch-all 1.18 +<pre id="test"><script class="testbody" type="text/javascript;version=1.7"> 1.19 + 1.20 +/** Tests for bugs 384147 and 981281 **/ 1.21 + 1.22 +SimpleTest.waitForExplicitFinish(); 1.23 + 1.24 +SimpleTest.waitForFocus(function(){setTimeout(focusing, 0)}); 1.25 + 1.26 +function focusing() { 1.27 + document.getElementById("editor").focus(); 1.28 + // This seems to be necessary because the selection is not set up properly otherwise 1.29 + setTimeout(test, 0); 1.30 +} 1.31 + 1.32 +var eatSpace; 1.33 +var stopAtPunctuation; 1.34 +var wordModifiers = 1.35 + (navigator.platform.indexOf("Mac") >= 0) ? {altKey:true} : {ctrlKey:true}; 1.36 +var sel = window.getSelection(); 1.37 +var editor = document.getElementById("editor"); 1.38 + 1.39 +function setPrefs(eat_space, stop_at_punctuation, callback) { 1.40 + eatSpace = eat_space; 1.41 + stopAtPunctuation = stop_at_punctuation; 1.42 + SpecialPowers.pushPrefEnv({"set": [["layout.word_select.eat_space_to_next_word", eat_space], ["layout.word_select.stop_at_punctuation", stop_at_punctuation]]}, callback); 1.43 +} 1.44 + 1.45 +function errString(dir) { 1.46 + return dir + " movement broken with eatSpace=" + eatSpace + 1.47 + ", stopAtPunctuation=" + stopAtPunctuation + " in \"" + editor.innerHTML + 1.48 + "\"; sel.anchorNode.parentNode=" + sel.anchorNode.parentNode; 1.49 +} 1.50 + 1.51 +function testRight(node, offset) { 1.52 + synthesizeKey("VK_RIGHT", wordModifiers); 1.53 + is(sel.anchorNode, node, errString("Right")); 1.54 + is(sel.anchorOffset, offset, errString("Right")); 1.55 +} 1.56 + 1.57 +function testLeft(node, offset) { 1.58 + synthesizeKey("VK_LEFT", wordModifiers); 1.59 + is(sel.anchorNode, node, errString("Left")); 1.60 + is(sel.anchorOffset, offset, errString("Left")); 1.61 +} 1.62 + 1.63 +var afterEditorNode = document.getElementById("catch").firstChild; 1.64 + 1.65 +var ChineseChars = "漢字"; 1.66 +var HiraganaChars = "ひらがな"; 1.67 +var KatakanaChars = "カタカナ"; 1.68 +var JapaneseFullStop = "。"; 1.69 +var JapaneseComma = "、"; 1.70 + 1.71 +function test() { 1.72 + setPrefs(false, true, test1); 1.73 +} 1.74 + 1.75 +function test1() { 1.76 + editor.innerHTML = "Hello Kitty"; 1.77 + sel.collapse(editor.firstChild, 0); 1.78 + testRight(editor.firstChild, 5); 1.79 + testRight(editor.firstChild, 11); 1.80 + testLeft(editor.firstChild, 6); 1.81 + testLeft(editor.firstChild, 0); 1.82 + 1.83 + editor.innerHTML = "<b>Hello</b> Kitty"; 1.84 + sel.collapse(editor.firstChild.firstChild, 0); 1.85 + testRight(editor.firstChild.nextSibling, 0); 1.86 + testRight(editor.firstChild.nextSibling, 6); 1.87 + testLeft(editor.firstChild.nextSibling, 1); 1.88 + testLeft(editor.firstChild.firstChild, 0); 1.89 + 1.90 + editor.innerHTML = "<b>Hello </b>Kitty"; 1.91 + sel.collapse(editor.firstChild.firstChild, 0); 1.92 + testRight(editor.firstChild.firstChild, 5); 1.93 + testRight(editor.firstChild.nextSibling, 5); 1.94 + testLeft(editor.firstChild.firstChild, 6); 1.95 + testLeft(editor.firstChild.firstChild, 0); 1.96 + 1.97 + editor.innerHTML = "<b>Log out</b> roc"; 1.98 + sel.collapse(editor.firstChild.firstChild, 0); 1.99 + testRight(editor.firstChild.firstChild, 3); 1.100 + testRight(editor.firstChild.nextSibling, 0); 1.101 + testRight(editor.firstChild.nextSibling, 5); 1.102 + // In the next test, we expect to be at the end of the 1.103 + // space that is not collapsed away 1.104 + testLeft(editor.firstChild.nextSibling, 1); 1.105 + testLeft(editor.firstChild.firstChild, 4); 1.106 + testLeft(editor.firstChild.firstChild, 0); 1.107 + 1.108 + editor.innerHTML = "http://www.mozilla.org"; 1.109 + sel.collapse(editor.firstChild, 0); 1.110 + testRight(editor.firstChild, 7); 1.111 + testRight(editor.firstChild, 11); 1.112 + testRight(editor.firstChild, 19); 1.113 + testLeft(editor.firstChild, 11); 1.114 + testLeft(editor.firstChild, 7); 1.115 + testLeft(editor.firstChild, 0); 1.116 + 1.117 + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; 1.118 + sel.collapse(editor.firstChild, 0); 1.119 + testRight(editor.firstChild, 3); 1.120 + testRight(editor.firstChild, 7); 1.121 + testRight(editor.firstChild, 10); 1.122 + testRight(editor.firstChild.nextSibling.nextSibling, 5); 1.123 + testLeft(editor.firstChild.nextSibling.firstChild, 1); 1.124 + testLeft(editor.firstChild, 8); 1.125 + testLeft(editor.firstChild, 5); 1.126 + testLeft(editor.firstChild, 0); 1.127 + 1.128 + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; 1.129 + sel.collapse(editor.firstChild, 0); 1.130 + testRight(editor.firstChild, 2); 1.131 + testRight(editor.firstChild, 6); 1.132 + testRight(editor.firstChild, 8); 1.133 + testLeft(editor.firstChild, 6); 1.134 + testLeft(editor.firstChild, 2); 1.135 + testLeft(editor.firstChild, 0); 1.136 + 1.137 + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; 1.138 + sel.collapse(editor.firstChild, 0); 1.139 + testRight(editor.firstChild, 2); 1.140 + testRight(editor.firstChild, 6); 1.141 + testRight(editor.firstChild, 8); 1.142 + testLeft(editor.firstChild, 6); 1.143 + testLeft(editor.firstChild, 2); 1.144 + testLeft(editor.firstChild, 0); 1.145 + 1.146 + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; 1.147 + sel.collapse(editor.firstChild, 0); 1.148 + testRight(editor.firstChild, 4); 1.149 + testRight(editor.firstChild, 8); 1.150 + testRight(editor.firstChild, 12); 1.151 + testLeft(editor.firstChild, 8); 1.152 + testLeft(editor.firstChild, 4); 1.153 + testLeft(editor.firstChild, 0); 1.154 + 1.155 + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; 1.156 + sel.collapse(editor.firstChild, 0); 1.157 + testRight(editor.firstChild, 5); 1.158 + testRight(editor.firstChild, 10); 1.159 + testRight(editor.firstChild, 14); 1.160 + testLeft(editor.firstChild, 10); 1.161 + testLeft(editor.firstChild, 5); 1.162 + testLeft(editor.firstChild, 0); 1.163 + 1.164 + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; 1.165 + sel.collapse(editor.firstChild, 0); 1.166 + testRight(editor.firstChild, 5); 1.167 + testRight(editor.firstChild, 10); 1.168 + testRight(editor.firstChild, 14); 1.169 + testLeft(editor.firstChild, 10); 1.170 + testLeft(editor.firstChild, 5); 1.171 + testLeft(editor.firstChild, 0); 1.172 + 1.173 + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; 1.174 + sel.collapse(editor.firstChild, 0); 1.175 + testRight(editor.firstChild, 3); 1.176 + testRight(editor.firstChild, 6); 1.177 + testRight(editor.firstChild, 8); 1.178 + testLeft(editor.firstChild, 6); 1.179 + testLeft(editor.firstChild, 3); 1.180 + testLeft(editor.firstChild, 0); 1.181 + 1.182 + // test basic word movement with eat_space_next_to_word true. 1.183 + setPrefs(true, true, test2); 1.184 +} 1.185 + 1.186 +function test2() { 1.187 + editor.innerHTML = "Hello Kitty"; 1.188 + sel.collapse(editor.firstChild, 0); 1.189 + testRight(editor.firstChild, 6); 1.190 + testRight(editor.firstChild, 11); 1.191 + testLeft(editor.firstChild, 6); 1.192 + testLeft(editor.firstChild, 0); 1.193 + 1.194 + editor.innerHTML = "<b>Hello</b> Kitty"; 1.195 + sel.collapse(editor.firstChild.firstChild, 0); 1.196 + testRight(editor.firstChild.nextSibling, 1); 1.197 + testRight(editor.firstChild.nextSibling, 6); 1.198 + testLeft(editor.firstChild.nextSibling, 1); 1.199 + testLeft(editor.firstChild.firstChild, 0); 1.200 + 1.201 + editor.innerHTML = "<b>Hello </b>Kitty"; 1.202 + sel.collapse(editor.firstChild.firstChild, 0); 1.203 + testRight(editor.firstChild.nextSibling, 0); 1.204 + testRight(editor.firstChild.nextSibling, 5); 1.205 + testLeft(editor.firstChild.firstChild, 6); 1.206 + testLeft(editor.firstChild.firstChild, 0); 1.207 + 1.208 + editor.innerHTML = "<b>Log out</b> roc"; 1.209 + sel.collapse(editor.firstChild.firstChild, 0); 1.210 + testRight(editor.firstChild.firstChild, 4); 1.211 + testRight(editor.firstChild.nextSibling, 2); 1.212 + testRight(editor.firstChild.nextSibling, 5); 1.213 + testLeft(editor.firstChild.nextSibling, 1); 1.214 + testLeft(editor.firstChild.firstChild, 4); 1.215 + testLeft(editor.firstChild.firstChild, 0); 1.216 + 1.217 + editor.innerHTML = "http://www.mozilla.org"; 1.218 + sel.collapse(editor.firstChild, 0); 1.219 + testRight(editor.firstChild, 7); 1.220 + testRight(editor.firstChild, 11); 1.221 + testRight(editor.firstChild, 19); 1.222 + testLeft(editor.firstChild, 11); 1.223 + testLeft(editor.firstChild, 7); 1.224 + testLeft(editor.firstChild, 0); 1.225 + 1.226 + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; 1.227 + sel.collapse(editor.firstChild, 0); 1.228 + testRight(editor.firstChild, 4); 1.229 + testRight(editor.firstChild, 8); 1.230 + testRight(editor.firstChild.nextSibling.firstChild, 0); 1.231 + testRight(editor.firstChild.nextSibling.nextSibling, 5); 1.232 + testLeft(editor.firstChild.nextSibling.firstChild, 1); 1.233 + testLeft(editor.firstChild, 8); 1.234 + testLeft(editor.firstChild, 5); 1.235 + testLeft(editor.firstChild, 0); 1.236 + 1.237 + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; 1.238 + sel.collapse(editor.firstChild, 0); 1.239 + testRight(editor.firstChild, 2); 1.240 + testRight(editor.firstChild, 6); 1.241 + testRight(editor.firstChild, 8); 1.242 + testLeft(editor.firstChild, 6); 1.243 + testLeft(editor.firstChild, 2); 1.244 + testLeft(editor.firstChild, 0); 1.245 + 1.246 + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; 1.247 + sel.collapse(editor.firstChild, 0); 1.248 + testRight(editor.firstChild, 2); 1.249 + testRight(editor.firstChild, 6); 1.250 + testRight(editor.firstChild, 8); 1.251 + testLeft(editor.firstChild, 6); 1.252 + testLeft(editor.firstChild, 2); 1.253 + testLeft(editor.firstChild, 0); 1.254 + 1.255 + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; 1.256 + sel.collapse(editor.firstChild, 0); 1.257 + testRight(editor.firstChild, 4); 1.258 + testRight(editor.firstChild, 8); 1.259 + testRight(editor.firstChild, 12); 1.260 + testLeft(editor.firstChild, 8); 1.261 + testLeft(editor.firstChild, 4); 1.262 + testLeft(editor.firstChild, 0); 1.263 + 1.264 + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; 1.265 + sel.collapse(editor.firstChild, 0); 1.266 + testRight(editor.firstChild, 5); 1.267 + testRight(editor.firstChild, 10); 1.268 + testRight(editor.firstChild, 14); 1.269 + testLeft(editor.firstChild, 10); 1.270 + testLeft(editor.firstChild, 5); 1.271 + testLeft(editor.firstChild, 0); 1.272 + 1.273 + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; 1.274 + sel.collapse(editor.firstChild, 0); 1.275 + testRight(editor.firstChild, 5); 1.276 + testRight(editor.firstChild, 10); 1.277 + testRight(editor.firstChild, 14); 1.278 + testLeft(editor.firstChild, 10); 1.279 + testLeft(editor.firstChild, 5); 1.280 + testLeft(editor.firstChild, 0); 1.281 + 1.282 + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; 1.283 + sel.collapse(editor.firstChild, 0); 1.284 + testRight(editor.firstChild, 3); 1.285 + testRight(editor.firstChild, 6); 1.286 + testRight(editor.firstChild, 8); 1.287 + testLeft(editor.firstChild, 6); 1.288 + testLeft(editor.firstChild, 3); 1.289 + testLeft(editor.firstChild, 0); 1.290 + 1.291 + // Test basic word movement with stop_at_punctuation false (bug 981281). 1.292 + setPrefs(false, false, test3); 1.293 +} 1.294 + 1.295 +function test3() { 1.296 + editor.innerHTML = "Hello Kitty"; 1.297 + sel.collapse(editor.firstChild, 0); 1.298 + testRight(editor.firstChild, 5); 1.299 + testRight(editor.firstChild, 11); 1.300 + testLeft(editor.firstChild, 6); 1.301 + testLeft(editor.firstChild, 0); 1.302 + 1.303 + editor.innerHTML = "<b>Hello</b> Kitty"; 1.304 + sel.collapse(editor.firstChild.firstChild, 0); 1.305 + testRight(editor.firstChild.nextSibling, 0); 1.306 + testRight(editor.firstChild.nextSibling, 6); 1.307 + testLeft(editor.firstChild.nextSibling, 1); 1.308 + testLeft(editor.firstChild.firstChild, 0); 1.309 + 1.310 + editor.innerHTML = "<b>Hello </b>Kitty"; 1.311 + sel.collapse(editor.firstChild.firstChild, 0); 1.312 + testRight(editor.firstChild.firstChild, 5); 1.313 + testRight(editor.firstChild.nextSibling, 5); 1.314 + testLeft(editor.firstChild.firstChild, 6); 1.315 + testLeft(editor.firstChild.firstChild, 0); 1.316 + 1.317 + editor.innerHTML = "<b>Log out</b> roc"; 1.318 + sel.collapse(editor.firstChild.firstChild, 0); 1.319 + testRight(editor.firstChild.firstChild, 3); 1.320 + testRight(editor.firstChild.nextSibling, 0); 1.321 + testRight(editor.firstChild.nextSibling, 5); 1.322 + testLeft(editor.firstChild.nextSibling, 1); 1.323 + testLeft(editor.firstChild.firstChild, 4); 1.324 + testLeft(editor.firstChild.firstChild, 0); 1.325 + 1.326 + editor.innerHTML = "http://www.mozilla.org"; 1.327 + sel.collapse(editor.firstChild, 0); 1.328 + testRight(editor.firstChild, 22); 1.329 + testLeft(editor.firstChild, 0); 1.330 + 1.331 + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; 1.332 + sel.collapse(editor.firstChild, 0); 1.333 + testRight(editor.firstChild, 3); 1.334 + testRight(editor.firstChild, 7); 1.335 + testRight(editor.firstChild, 10); 1.336 + testRight(editor.firstChild.nextSibling.nextSibling, 5); 1.337 + testLeft(editor.firstChild, 11); 1.338 + testLeft(editor.firstChild, 8); 1.339 + testLeft(editor.firstChild, 4); 1.340 + testLeft(editor.firstChild, 0); 1.341 + 1.342 + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; 1.343 + sel.collapse(editor.firstChild, 0); 1.344 + testRight(editor.firstChild, 2); 1.345 + testRight(editor.firstChild, 6); 1.346 + testRight(editor.firstChild, 8); 1.347 + testLeft(editor.firstChild, 6); 1.348 + testLeft(editor.firstChild, 2); 1.349 + testLeft(editor.firstChild, 0); 1.350 + 1.351 + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; 1.352 + sel.collapse(editor.firstChild, 0); 1.353 + testRight(editor.firstChild, 2); 1.354 + testRight(editor.firstChild, 6); 1.355 + testRight(editor.firstChild, 8); 1.356 + testLeft(editor.firstChild, 6); 1.357 + testLeft(editor.firstChild, 2); 1.358 + testLeft(editor.firstChild, 0); 1.359 + 1.360 + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; 1.361 + sel.collapse(editor.firstChild, 0); 1.362 + testRight(editor.firstChild, 4); 1.363 + testRight(editor.firstChild, 8); 1.364 + testRight(editor.firstChild, 12); 1.365 + testLeft(editor.firstChild, 8); 1.366 + testLeft(editor.firstChild, 4); 1.367 + testLeft(editor.firstChild, 0); 1.368 + 1.369 + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; 1.370 + sel.collapse(editor.firstChild, 0); 1.371 + testRight(editor.firstChild, 14); 1.372 + testLeft(editor.firstChild, 0); 1.373 + 1.374 + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; 1.375 + sel.collapse(editor.firstChild, 0); 1.376 + testRight(editor.firstChild, 14); 1.377 + testLeft(editor.firstChild, 0); 1.378 + 1.379 + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; 1.380 + sel.collapse(editor.firstChild, 0); 1.381 + testRight(editor.firstChild, 8); 1.382 + testLeft(editor.firstChild, 0); 1.383 + 1.384 + // And again with eat_space_next_to_word true. 1.385 + setPrefs(true, false, test4); 1.386 +} 1.387 + 1.388 +function test4() { 1.389 + editor.innerHTML = "Hello Kitty"; 1.390 + sel.collapse(editor.firstChild, 0); 1.391 + testRight(editor.firstChild, 6); 1.392 + testRight(editor.firstChild, 11); 1.393 + testLeft(editor.firstChild, 6); 1.394 + testLeft(editor.firstChild, 0); 1.395 + 1.396 + editor.innerHTML = "<b>Hello</b> Kitty"; 1.397 + sel.collapse(editor.firstChild.firstChild, 0); 1.398 + testRight(editor.firstChild.nextSibling, 1); 1.399 + testRight(editor.firstChild.nextSibling, 6); 1.400 + testLeft(editor.firstChild.nextSibling, 1); 1.401 + testLeft(editor.firstChild.firstChild, 0); 1.402 + 1.403 + editor.innerHTML = "<b>Hello </b>Kitty"; 1.404 + sel.collapse(editor.firstChild.firstChild, 0); 1.405 + testRight(editor.firstChild.nextSibling, 0); 1.406 + testRight(editor.firstChild.nextSibling, 5); 1.407 + testLeft(editor.firstChild.firstChild, 6); 1.408 + testLeft(editor.firstChild.firstChild, 0); 1.409 + 1.410 + editor.innerHTML = "<b>Log out</b> roc"; 1.411 + sel.collapse(editor.firstChild.firstChild, 0); 1.412 + testRight(editor.firstChild.firstChild, 4); 1.413 + testRight(editor.firstChild.nextSibling, 2); 1.414 + testRight(editor.firstChild.nextSibling, 5); 1.415 + testLeft(editor.firstChild.nextSibling, 1); 1.416 + testLeft(editor.firstChild.firstChild, 4); 1.417 + testLeft(editor.firstChild.firstChild, 0); 1.418 + 1.419 + editor.innerHTML = "http://www.mozilla.org"; 1.420 + sel.collapse(editor.firstChild, 0); 1.421 + testRight(editor.firstChild, 22); 1.422 + testLeft(editor.firstChild, 0); 1.423 + 1.424 + editor.innerHTML = "Set .rc to <b>'</b>quiz'"; 1.425 + sel.collapse(editor.firstChild, 0); 1.426 + testRight(editor.firstChild, 4); 1.427 + testRight(editor.firstChild, 8); 1.428 + testRight(editor.firstChild.nextSibling.firstChild, 0); 1.429 + testRight(editor.firstChild.nextSibling.nextSibling, 5); 1.430 + testLeft(editor.firstChild, 11); 1.431 + testLeft(editor.firstChild, 8); 1.432 + testLeft(editor.firstChild, 4); 1.433 + testLeft(editor.firstChild, 0); 1.434 + 1.435 + editor.innerHTML = ChineseChars + HiraganaChars + ChineseChars; 1.436 + sel.collapse(editor.firstChild, 0); 1.437 + testRight(editor.firstChild, 2); 1.438 + testRight(editor.firstChild, 6); 1.439 + testRight(editor.firstChild, 8); 1.440 + testLeft(editor.firstChild, 6); 1.441 + testLeft(editor.firstChild, 2); 1.442 + testLeft(editor.firstChild, 0); 1.443 + 1.444 + editor.innerHTML = ChineseChars + KatakanaChars + ChineseChars; 1.445 + sel.collapse(editor.firstChild, 0); 1.446 + testRight(editor.firstChild, 2); 1.447 + testRight(editor.firstChild, 6); 1.448 + testRight(editor.firstChild, 8); 1.449 + testLeft(editor.firstChild, 6); 1.450 + testLeft(editor.firstChild, 2); 1.451 + testLeft(editor.firstChild, 0); 1.452 + 1.453 + editor.innerHTML = KatakanaChars + HiraganaChars + KatakanaChars; 1.454 + sel.collapse(editor.firstChild, 0); 1.455 + testRight(editor.firstChild, 4); 1.456 + testRight(editor.firstChild, 8); 1.457 + testRight(editor.firstChild, 12); 1.458 + testLeft(editor.firstChild, 8); 1.459 + testLeft(editor.firstChild, 4); 1.460 + testLeft(editor.firstChild, 0); 1.461 + 1.462 + editor.innerHTML = HiraganaChars + JapaneseComma + HiraganaChars + JapaneseFullStop + HiraganaChars; 1.463 + sel.collapse(editor.firstChild, 0); 1.464 + testRight(editor.firstChild, 14); 1.465 + testLeft(editor.firstChild, 0); 1.466 + 1.467 + editor.innerHTML = KatakanaChars + JapaneseComma + KatakanaChars + JapaneseFullStop + KatakanaChars; 1.468 + sel.collapse(editor.firstChild, 0); 1.469 + testRight(editor.firstChild, 14); 1.470 + testLeft(editor.firstChild, 0); 1.471 + 1.472 + editor.innerHTML = ChineseChars + JapaneseComma + ChineseChars + JapaneseFullStop + ChineseChars; 1.473 + sel.collapse(editor.firstChild, 0); 1.474 + testRight(editor.firstChild, 8); 1.475 + testLeft(editor.firstChild, 0); 1.476 + 1.477 + SimpleTest.finish(); 1.478 +} 1.479 + 1.480 + 1.481 +</script></pre> 1.482 +</body> 1.483 +</html>