delete-to-join-blocks.tentative.html (3386B)
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="flags" content="may"> 6 <title>Testing normalizing white-space sequence after joining blocks</title> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="../../include/editor-test-utils.js"></script> 10 <script> 11 "use strict"; 12 13 addEventListener("DOMContentLoaded", () => { 14 // README: 15 // These tests based on the behavior of Chrome 134. This test does NOT define 16 // nor suggest any standard behavior (actually, some expected results might 17 // look odd), but this test must help you to understand how other browsers 18 // use different logic to normalize white-space sequence. 19 20 const editingHost = document.querySelector("div[contenteditable]"); 21 const utils = new EditorTestUtils(editingHost); 22 23 async function addPromiseTest(aInitHTML, aExpectedHTML) { 24 promise_test(async () => { 25 utils.setupEditingHost(aInitHTML); 26 document.execCommand("delete"); 27 assert_equals(editingHost.innerHTML, aExpectedHTML); 28 }, `document.execCommand("delete") when "${aInitHTML}"`); 29 } 30 31 // Join sibling blocks. 32 addPromiseTest( 33 `<div> </div><div>{}<br></div>`, 34 `<div> </div>` 35 ); 36 addPromiseTest( 37 `<div>a </div><div>{}<br></div>`, 38 `<div>a </div>` 39 ); 40 addPromiseTest( 41 `<div><br></div><div>[] </div>`, 42 `<div> </div>` 43 ); 44 addPromiseTest( 45 `<div><br></div><div>[] b</div>`, 46 `<div> b</div>` 47 ); 48 addPromiseTest( 49 `<div>a</div><div>[] b</div>`, 50 `<div>a b</div>` 51 ); 52 addPromiseTest( 53 `<div>a </div><div>[] b</div>`, 54 `<div>a b</div>` 55 ); 56 57 // Join child block with its parent block. 58 addPromiseTest( 59 `<div> <div>{}<br></div></div>`, 60 `<div> </div>` 61 ); 62 addPromiseTest( 63 `<div>a <div>{}<br></div></div>`, 64 `<div>a </div>` 65 ); 66 addPromiseTest( 67 `<div><br><div>[] </div></div>`, 68 `<div><div> </div></div>` 69 ); 70 addPromiseTest( 71 `<div><br><div>[] b</div></div>`, 72 `<div><div> b</div></div>` 73 ); 74 addPromiseTest( 75 `<div>a<div>[] b</div></div>`, 76 `a b` 77 ); 78 addPromiseTest( 79 `<div>a <div>[] b</div></div>`, 80 `a b` 81 ); 82 83 // Join parent block with a child block. 84 addPromiseTest( 85 `<div><div> </div>{}<br></div>`, 86 `<div><div> </div></div>` 87 ); 88 addPromiseTest( 89 `<div><div>a </div>{}<br></div>`, 90 `<div><div>a </div></div>` 91 ); 92 addPromiseTest( 93 `<div><div><br></div>[] </div>`, 94 `<div> </div>` 95 ); 96 addPromiseTest( 97 `<div><div><br></div>[] b</div>`, 98 `<div> b</div>` 99 ); 100 addPromiseTest( 101 `<div><div>a</div>[] b</div>`, 102 `<div>a b</div>` 103 ); 104 addPromiseTest( 105 `<div><div>a </div>[] b</div>`, 106 `<div>a b</div>` 107 ); 108 }, {once: true}); 109 </script> 110 </head> 111 <body> 112 <div contenteditable></div> 113 </body> 114 </html>