tor-browser

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

pointerevent_mouse-pointer-preventdefault-passive.html (2691B)


      1 <!DOCTYPE HTML>
      2 <title>Canceling passive pointerevents does not affect compat mouseevents</title>
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/resources/testdriver.js"></script>
      6 <script src="/resources/testdriver-vendor.js"></script>
      7 <script src="/resources/testdriver-actions.js"></script>
      8 <script src="../pointerevent_support.js"></script>
      9 <style>
     10  div {
     11    margin: 20px;
     12    padding: 20px;
     13    background-color: green;
     14    user-select: none; // Prevents text selection on drag.
     15  }
     16 </style>
     17 <div id="logger" draggable="false"></div>
     18 <div id="done"></div>
     19 
     20 <script>
     21  'use strict';
     22 
     23  const logger = document.getElementById("logger");
     24  const done = document.getElementById("done");
     25 
     26  let received_events = [];
     27 
     28  const logged_pointer_events = ["pointerdown", "pointermove", "pointerup",
     29    "pointerenter", "pointerleave", "pointerover", "pointerout"];
     30  const logged_mouse_events = ["mousedown", "mousemove", "mouseup",
     31    "mouseenter", "mouseleave", "mouseover", "mouseout"];
     32 
     33  const expected_pointer_events = [
     34    "pointerover", "pointerenter",
     35    "pointermove", "pointerdown", "pointermove", "pointerup",
     36    "pointerout", "pointerleave"
     37  ];
     38 
     39  const expected_mouse_events = [
     40    "mouseover", "mouseenter",
     41    "mousemove", "mousedown", "mousemove", "mouseup",
     42    "mouseout", "mouseleave"
     43  ];
     44 
     45  logged_pointer_events.forEach(ename => logger.addEventListener(ename, e => {
     46    received_events.push(e.type);
     47    e.preventDefault();
     48  }, { passive: true }));
     49 
     50  logged_mouse_events.forEach(ename => logger.addEventListener(ename, e =>
     51    received_events.push(e.type)));
     52 
     53  promise_test(async () => {
     54    received_events = [];
     55 
     56    let click_on_done = getEvent("click", done);
     57 
     58    let actions = new test_driver.Actions()
     59      // Start outside all event listeners
     60      .pointerMove(0, 0)
     61      .pointerDown()
     62      .pointerUp()
     63      // Drag within "logger"
     64      .pointerMove(0, 0, { origin: logger })
     65      .pointerDown()
     66      .pointerMove(15, 15, { origin: logger })
     67      .pointerUp()
     68      // Click "done"
     69      .pointerMove(0, 0, { origin: done })
     70      .pointerDown()
     71      .pointerUp()
     72      .send();
     73 
     74    await actions;
     75    await click_on_done;
     76 
     77    assert_array_equals(received_events.filter(isPointerEvent),
     78      expected_pointer_events, "expected pointer events");
     79    assert_array_equals(received_events.filter(isMouseEvent),
     80      expected_mouse_events, "expected mouse events");
     81    assert_true(arePointerEventsBeforeCompatMouseEvents(received_events),
     82      "pairing of pointer/mouse events");
     83  }, "Canceling passive pointerevents does not affect compat mouseevents");
     84 </script>