delete-in-last-definition-list-item-when-parent-list-is-editing-host.html (2990B)
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="timeout" content="long"> 6 <meta name="variant" content="?action=Backspace"> 7 <meta name="variant" content="?action=Delete"> 8 <title>Delete in last list item should not delete parent list if it's editing host</title> 9 <script src="/resources/testharness.js"></script> 10 <script src="/resources/testharnessreport.js"></script> 11 <script src="/resources/testdriver.js"></script> 12 <script src="/resources/testdriver-vendor.js"></script> 13 <script src="/resources/testdriver-actions.js"></script> 14 <script src="../include/editor-test-utils.js"></script> 15 <script> 16 "use strict"; 17 18 const params = new URLSearchParams(location.search.substring(1)); 19 const backspace = params.get("action") == "Backspace"; 20 21 addEventListener("load", () => { 22 document.body.innerHTML ="<dl contenteditable></dl>"; 23 const editingHost = document.querySelector("dl[contenteditable]"); 24 const utils = new EditorTestUtils(editingHost); 25 26 function addPromiseTest(aTest) { 27 promise_test(async () => { 28 editingHost.focus(); 29 utils.setupEditingHost(aTest.innerHTML); 30 await (backspace ? utils.sendBackspaceKey() : utils.sendDeleteKey()); 31 utils.normalizeStyleAttributeValues(); 32 if (Array.isArray(aTest.expectedResult)) { 33 assert_in_array(editingHost.innerHTML, aTest.expectedResult); 34 } else { 35 assert_equals(editingHost.innerHTML, aTest.expectedResult); 36 } 37 assert_equals( 38 document.body.childNodes.length, 39 1, 40 `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")` 41 ); 42 assert_equals( 43 document.body.firstChild, 44 editingHost, 45 `The editing host should be the only child of <body> (got: "${document.body.innerHTML}")` 46 ); 47 }, `${backspace ? "Backspace" : "Delete"} in "<dl contenteditable>${aTest.innerHTML}</dl>"`); 48 } 49 50 addPromiseTest({ 51 innerHTML: "<dt>{}</dt>", 52 expectedResult: ["<dt></dt>", "<dt><br></dt>"], 53 }); 54 addPromiseTest({ 55 innerHTML: "<dd>{}</dd>", 56 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 57 }); 58 addPromiseTest({ 59 innerHTML: "<dd><ul><li>{}</li></ul></dd>", 60 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 61 }); 62 addPromiseTest({ 63 innerHTML: "<dd><ol><li>{}</li></ol></dd>", 64 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 65 }); 66 // If only sub-list in the editing host list element, the sub-list should be 67 // replaced with a list item. 68 addPromiseTest({ 69 innerHTML: "<ul><li>{}</li></ul>", 70 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 71 }); 72 addPromiseTest({ 73 innerHTML: "<ol><li>{}</li></ol>", 74 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 75 }); 76 addPromiseTest({ 77 innerHTML: "<dl><dt>{}</dt></dl>", 78 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 79 }); 80 addPromiseTest({ 81 innerHTML: "<dl><dd>{}</dd></dl>", 82 expectedResult: ["<dd></dd>", "<dd><br></dd>"], 83 }); 84 }, {once:true}); 85 </script> 86 </head> 87 <body></body> 88 </html>