tor-browser

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

preventDefault-during-activation-behavior.html (1590B)


      1 <!DOCTYPE html>
      2 <title>preventDefault during activation behavior</title>
      3 <link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=1197032">
      4 <link rel="help" href="https://html.spec.whatwg.org/multipage/C#the-button-element">
      5 <link rel="help" href="https://dom.spec.whatwg.org/#dispatching-events">
      6 <link rel="author" title="L. David Baron" href="https://dbaron.org/">
      7 <link rel="author" title="Google" href="http://www.google.com/">
      8 <script src="/resources/testharness.js"></script>
      9 <script src="/resources/testharnessreport.js"></script>
     10 <body>
     11 
     12 <form id="f">
     13  <input type="submit" id="b">
     14 </form>
     15 
     16 <script>
     17 
     18 promise_test(async () => {
     19  let form = document.getElementById("f");
     20  let button = document.getElementById("b");
     21 
     22  let cached_event;
     23  let submit_fired = false;
     24 
     25  let click_promise = new Promise((resolve, reject) => {
     26    button.addEventListener("click", event => {
     27      assert_false(submit_fired);
     28      cached_event = event;
     29      resolve();
     30    });
     31  });
     32 
     33  form.addEventListener("submit", event => {
     34    assert_false(submit_fired);
     35    assert_true(!!cached_event, "click should have fired");
     36 
     37    // Call preventDefault on the click event during its activation
     38    // behavior, to test the bug that we're trying to test.
     39    cached_event.preventDefault();
     40 
     41    // prevent the form submission from navigating the page
     42    event.preventDefault();
     43 
     44    submit_fired = true;
     45  });
     46 
     47  assert_false(submit_fired);
     48  button.click();
     49  await click_promise;
     50  assert_true(submit_fired);
     51 }, "behavior of preventDefault during activation behavior");
     52 
     53 </script>