tor-browser

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

Event-dispatch-click.tentative.html (2544B)


      1 <!doctype html>
      2 <title>Clicks on input element</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <div id=dump style=display:none></div>
      6 <script>
      7 var dump = document.getElementById("dump")
      8 
      9 test(t => {
     10  const input = document.createElement("input");
     11  input.type = "checkbox";
     12  input.disabled = true;
     13  const label = document.createElement("label");
     14  label.append(input);
     15  dump.append(label);
     16  label.click();
     17  assert_false(input.checked);
     18 }, "disabled checkbox should not be checked from label click");
     19 
     20 test(t => {
     21  const input = document.createElement("input");
     22  input.type = "radio";
     23  input.disabled = true;
     24  const label = document.createElement("label");
     25  label.append(input);
     26  dump.append(label);
     27  label.click();
     28  assert_false(input.checked);
     29 }, "disabled radio should not be checked from label click");
     30 
     31 test(t => {
     32  const input = document.createElement("input");
     33  input.type = "checkbox";
     34  input.disabled = true;
     35  const label = document.createElement("label");
     36  label.append(input);
     37  dump.append(label);
     38  label.dispatchEvent(new MouseEvent("click"));
     39  assert_false(input.checked);
     40 }, "disabled checkbox should not be checked from label click by dispatchEvent");
     41 
     42 test(t => {
     43  const input = document.createElement("input");
     44  input.type = "radio";
     45  input.disabled = true;
     46  const label = document.createElement("label");
     47  label.append(input);
     48  dump.append(label);
     49  label.dispatchEvent(new MouseEvent("click"));
     50  assert_false(input.checked);
     51 }, "disabled radio should not be checked from label click by dispatchEvent");
     52 
     53 test(t => {
     54  const checkbox = dump.appendChild(document.createElement("input"));
     55  checkbox.type = "checkbox";
     56  checkbox.onclick = ev => {
     57    checkbox.type = "date";
     58    ev.preventDefault();
     59  };
     60  checkbox.dispatchEvent(new MouseEvent("click", { cancelable: true }));
     61  assert_false(checkbox.checked);
     62 }, "checkbox morphed into another type should not mutate checked state");
     63 
     64 test(t => {
     65  const radio1 = dump.appendChild(document.createElement("input"));
     66  const radio2 = dump.appendChild(radio1.cloneNode());
     67  radio1.type = radio2.type = "radio";
     68  radio1.name = radio2.name = "foo";
     69  radio2.checked = true;
     70  radio1.onclick = ev => {
     71    radio1.type = "date";
     72    ev.preventDefault();
     73  };
     74  radio1.dispatchEvent(new MouseEvent("click", { cancelable: true }));
     75  assert_false(radio1.checked);
     76  assert_true(radio2.checked);
     77 }, "radio morphed into another type should not steal the existing checked state");
     78 </script>