| <!DOCTYPE HTML> |
| <title>Canceling passive pointerevents does not affect compat mouseevents</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="/resources/testdriver-actions.js"></script> |
| <script src="../pointerevent_support.js"></script> |
| <style> |
| div { |
| margin: 20px; |
| padding: 20px; |
| background-color: green; |
| user-select: none; // Prevents text selection on drag. |
| } |
| </style> |
| <div id="logger" draggable="false"></div> |
| <div id="done"></div> |
| |
| <script> |
| 'use strict'; |
| |
| const logger = document.getElementById("logger"); |
| const done = document.getElementById("done"); |
| |
| let received_events = []; |
| |
| const logged_pointer_events = ["pointerdown", "pointermove", "pointerup", |
| "pointerenter", "pointerleave", "pointerover", "pointerout"]; |
| const logged_mouse_events = ["mousedown", "mousemove", "mouseup", |
| "mouseenter", "mouseleave", "mouseover", "mouseout"]; |
| |
| const expected_pointer_events = [ |
| "pointerover", "pointerenter", |
| "pointermove", "pointerdown", "pointermove", "pointerup", |
| "pointerout", "pointerleave" |
| ]; |
| |
| const expected_mouse_events = [ |
| "mouseover", "mouseenter", |
| "mousemove", "mousedown", "mousemove", "mouseup", |
| "mouseout", "mouseleave" |
| ]; |
| |
| logged_pointer_events.forEach(ename => logger.addEventListener(ename, e => { |
| received_events.push(e.type); |
| e.preventDefault(); |
| }, { passive: true })); |
| |
| logged_mouse_events.forEach(ename => logger.addEventListener(ename, e => |
| received_events.push(e.type))); |
| |
| promise_test(async () => { |
| received_events = []; |
| |
| let click_on_done = getEvent("click", done); |
| |
| let actions = new test_driver.Actions() |
| // Start outside all event listeners |
| .pointerMove(0, 0) |
| .pointerDown() |
| .pointerUp() |
| // Drag within "logger" |
| .pointerMove(0, 0, { origin: logger }) |
| .pointerDown() |
| .pointerMove(15, 15, { origin: logger }) |
| .pointerUp() |
| // Click "done" |
| .pointerMove(0, 0, { origin: done }) |
| .pointerDown() |
| .pointerUp() |
| .send(); |
| |
| await actions; |
| await click_on_done; |
| |
| assert_array_equals(received_events.filter(isPointerEvent), |
| expected_pointer_events, "expected pointer events"); |
| assert_array_equals(received_events.filter(isMouseEvent), |
| expected_mouse_events, "expected mouse events"); |
| assert_true(arePointerEventsBeforeCompatMouseEvents(received_events), |
| "pairing of pointer/mouse events"); |
| }, "Canceling passive pointerevents does not affect compat mouseevents"); |
| </script> |