tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>