Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /pointerevents/compat/pointerevent_mouse-pointer-preventdefault-passive.html - WPT Dashboard Interop Dashboard
<!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>