insert-space-at-beginning-of-wrapped-line.html (1828B)
1 <!DOCTYPE html> 2 <script src="/resources/testharness.js"></script> 3 <script src="/resources/testharnessreport.js"></script> 4 <script src="/resources/testdriver.js"></script> 5 <script src="/resources/testdriver-vendor.js"></script> 6 <script src="/resources/testdriver-actions.js"></script> 7 <script src="../include/editor-test-utils.js"></script> 8 <style> 9 #textarea, 10 #plaintext, 11 #richedit { 12 font-family: "Courier", monospace; 13 width: 10ch; 14 } 15 #plaintext, 16 #richedit { 17 border: 1px solid black; 18 white-space: pre-wrap; 19 } 20 </style> 21 <textarea id="textarea"></textarea> 22 <div id="plaintext" contenteditable="plaintext-only"></div> 23 <div id="richedit" contenteditable></div> 24 <script> 25 async function runInElement(element, before, after) { 26 promise_test(async () => { 27 const utils = new EditorTestUtils(element); 28 let offset = before.length; 29 let acutal; 30 if (element.tagName === "TEXTAREA") { 31 element.value = before + after; 32 element.focus(); 33 element.setSelectionRange(offset, offset); 34 await utils.sendKey(" "); 35 actual = element.value; 36 } else { 37 element.textContent = before + after; 38 let textNode = element.firstChild; 39 window 40 .getSelection() 41 .setBaseAndExtent(textNode, offset, textNode, offset); 42 await utils.sendKey(" "); 43 actual = element.textContent; 44 } 45 assert_equals(actual, before + " " + after); 46 }, `Typing space at "${before}|${after}" should insert a space in ${element.id}`); 47 } 48 49 function run(before, after) { 50 runInElement(textarea, before, after); 51 runInElement(plaintext, before, after); 52 runInElement(richedit, before, after); 53 } 54 run("123456789 ", "XY"); 55 run("12345 ", "XY"); 56 run("12345 ", "XY"); 57 run("123456789-", "XY"); 58 </script>