tor-browser

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

select-all-and-delete-in-html-element-having-contenteditable.html (4777B)


      1 <!doctype html>
      2 <html contenteditable>
      3 <head>
      4 <meta charset=utf-8>
      5 <title>Test "Select all" and deletion work with &lt;html contenteditable&gt;</title>
      6 <script src=/resources/testharness.js></script>
      7 <script src=/resources/testharnessreport.js></script>
      8 <script src="/resources/testdriver.js"></script>
      9 <script src="/resources/testdriver-vendor.js"></script>
     10 <script src="/resources/testdriver-actions.js"></script>
     11 </head>
     12 <body>
     13 <script>
     14 "use strict";
     15 
     16 const kBackspaceKey = "\uE003";
     17 const kDeleteKey = "\uE017";
     18 const kMeta = "\uE03d";
     19 const kControl = "\uE009";
     20 
     21 async function selectAllWithKey(elementToSelectAll) {
     22  if (elementToSelectAll.length === 0) {
     23    throw "element to select all must not be empty";
     24  }
     25  getSelection().collapse(elementToSelectAll, 0);
     26  try {
     27    await new test_driver.Actions()
     28      .keyDown(kControl)
     29      .keyDown("a")
     30      .keyUp("a")
     31      .keyUp(kControl)
     32      .send();
     33    if (!getSelection().isCollapsed) {
     34      return;
     35    }
     36    await new test_driver.Actions()
     37      .keyDown(kMeta)
     38      .keyDown("a")
     39      .keyUp("a")
     40      .keyUp(kMeta)
     41      .send();
     42    if (!getSelection().isCollapsed) {
     43      return;
     44    }
     45  } catch (ex) {
     46    throw ex;
     47  }
     48  throw "Neither Control-A nor Meta-A does select all contents";
     49 }
     50 
     51 function deleteWithBackspaceKey() {
     52  return new test_driver.Actions()
     53    .keyDown(kBackspaceKey)
     54    .keyUp(kBackspaceKey)
     55    .send();
     56 }
     57 
     58 function deleteWithDeleteKey() {
     59  return new test_driver.Actions()
     60    .keyDown(kDeleteKey)
     61    .keyUp(kDeleteKey)
     62    .send();
     63 }
     64 
     65 promise_test(async () => {
     66  document.body.innerHTML = "abc";
     67  await selectAllWithKey(document.body);
     68  await deleteWithBackspaceKey();
     69  assert_in_array(document.body.innerHTML, ["", "<br>"]);
     70 }, "Select All, then, Backspace");
     71 
     72 promise_test(async () => {
     73  document.body.innerHTML = "abc";
     74  await selectAllWithKey(document.body);
     75  await deleteWithDeleteKey();
     76  assert_in_array(document.body.innerHTML, ["", "<br>"]);
     77 }, "Select All, then, Delete");
     78 
     79 promise_test(async () => {
     80  document.body.innerHTML = "abc";
     81  document.execCommand("selectall");
     82  await deleteWithBackspaceKey();
     83  assert_in_array(document.body.innerHTML, ["", "<br>"]);
     84 }, 'execCommand("selectall"), then, Backspace');
     85 
     86 promise_test(async () => {
     87  document.body.innerHTML = "abc";
     88  document.execCommand("selectall");
     89  await deleteWithDeleteKey();
     90  assert_in_array(document.body.innerHTML, ["", "<br>"]);
     91 }, 'execCommand("selectall"), then, Delete');
     92 
     93 promise_test(async () => {
     94  document.body.innerHTML = "abc";
     95  await selectAllWithKey(document.body);
     96  document.execCommand("forwarddelete", false, false);
     97  assert_in_array(document.body.innerHTML, ["", "<br>"]);
     98 }, 'Select All, then, execCommand("forwarddelete")');
     99 
    100 promise_test(async () => {
    101  document.body.innerHTML = "abc";
    102  await selectAllWithKey(document.body);
    103  document.execCommand("delete", false, false);
    104  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    105 }, 'Select All, then, execCommand("delete")');
    106 
    107 test(() => {
    108  document.body.innerHTML = "abc";
    109  document.execCommand("selectall");
    110  document.execCommand("forwarddelete", false, false);
    111  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    112 }, 'execCommand("selectall"), then, execCommand("forwarddelete")');
    113 
    114 test(() => {
    115  document.body.innerHTML = "abc";
    116  document.execCommand("selectall");
    117  document.execCommand("delete", false, false);
    118  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    119 }, 'execCommand("selectall"), then, execCommand("delete")');
    120 
    121 promise_test(async () => {
    122  document.body.innerHTML = "abc";
    123  getSelection().selectAllChildren(document.documentElement);
    124  await deleteWithBackspaceKey();
    125  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    126 }, 'getSelection().selectAllChildren(document.documentElement), then, Backspace');
    127 
    128 promise_test(async () => {
    129  document.body.innerHTML = "abc";
    130  getSelection().selectAllChildren(document.documentElement);
    131  await deleteWithDeleteKey();
    132  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    133 }, 'getSelection().selectAllChildren(document.documentElement), then, Delete');
    134 
    135 test(() => {
    136  document.body.innerHTML = "abc";
    137  getSelection().selectAllChildren(document.documentElement);
    138  document.execCommand("forwarddelete", false, false);
    139  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    140 }, 'getSelection().selectAllChildren(document.documentElement), then, execCommand("forwarddelete")');
    141 
    142 test(() => {
    143  document.body.innerHTML = "abc";
    144  getSelection().selectAllChildren(document.documentElement);
    145  document.execCommand("delete", false, false);
    146  assert_in_array(document.body.innerHTML, ["", "<br>"]);
    147 }, 'getSelection().selectAllChildren(document.documentElement), then, execCommand("delete")');
    148 
    149 </script>
    150 </body>
    151 </html>