diff options
Diffstat (limited to 'dom/events/test/pointerevents/test_getCoalescedEvents.html')
-rw-r--r-- | dom/events/test/pointerevents/test_getCoalescedEvents.html | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/dom/events/test/pointerevents/test_getCoalescedEvents.html b/dom/events/test/pointerevents/test_getCoalescedEvents.html new file mode 100644 index 0000000000..69eeac6919 --- /dev/null +++ b/dom/events/test/pointerevents/test_getCoalescedEvents.html @@ -0,0 +1,88 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=1303957 +--> +<head> + <meta charset="utf-8"> + <title>Test for Bug 1303957</title> + <script src="/tests/SimpleTest/EventUtils.js"></script> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1303957">Mozilla Bug 1303957</a> +<p id="display"></p> +<div id="target0" style="width: 50px; height: 50px; background: green"></div> +<script type="text/javascript"> +/** Test for Bug 1303957 **/ +SimpleTest.waitForExplicitFinish(); + +function runTests() { + let target0 = window.document.getElementById("target0"); + let utils = SpecialPowers.getDOMWindowUtils(window); + utils.advanceTimeAndRefresh(0); + + SimpleTest.executeSoon(async () => { + // Flush all pending mouse events before synthesizing events. + + target0.addEventListener("pointermove", (ev) => { + let length = ev.getCoalescedEvents().length; + ok(length >= 1, "Coalesced events should >= 1, got " + length); + + let rect = target0.getBoundingClientRect(); + let prevOffsetX = 0; + let prevOffsetY = 0; + + for (let i = 0; i < length; ++i) { + let coalescedEvent = ev.getCoalescedEvents()[i]; + isnot(coalescedEvent.timeStamp, 0, "getCoalescedEvents()[" + i + "].timeStamp"); + is(coalescedEvent.type, "pointermove", "getCoalescedEvents()[" + i + "].type"); + is(coalescedEvent.pointerId, ev.pointerId, "getCoalescedEvents()[" + i + "].pointerId"); + is(coalescedEvent.pointerType, ev.pointerType, "getCoalescedEvents()[" + i + "].pointerType"); + is(coalescedEvent.isPrimary, ev.isPrimary, "getCoalescedEvents()[" + i + "].isPrimary"); + is(coalescedEvent.target, ev.target, "getCoalescedEvents()[" + i + "].target"); + is(coalescedEvent.currentTarget, null, "getCoalescedEvents()[" + i + "].currentTarget"); + is(coalescedEvent.eventPhase, Event.NONE, "getCoalescedEvents()[" + i + "].eventPhase"); + is(coalescedEvent.cancelable, false, "getCoalescedEvents()[" + i + "].cancelable"); + is(coalescedEvent.bubbles, false, "getCoalescedEvents()[" + i + "].bubbles"); + + ok(coalescedEvent.offsetX >= prevOffsetX, "getCoalescedEvents()[" + i + "].offsetX = " + coalescedEvent.offsetX); + ok(coalescedEvent.offsetX == 5 || coalescedEvent.offsetX == 10 || + coalescedEvent.offsetX == 15 || coalescedEvent.offsetX == 20, "expected offsetX"); + + ok(coalescedEvent.offsetY >= prevOffsetY, "getCoalescedEvents()[" + i + "].offsetY = " + coalescedEvent.offsetY); + ok(coalescedEvent.offsetY == 5 || coalescedEvent.offsetY == 10 || + coalescedEvent.offsetY == 15 || coalescedEvent.offsetY == 20, "expected offsetY"); + + prevOffsetX = coalescedEvent.offsetX; + prevOffsetY = coalescedEvent.offsetY; + + let x = rect.left + prevOffsetX; + let y = rect.top + prevOffsetY; + // coordinates may change slightly due to rounding + ok((coalescedEvent.clientX <= x+2) && (coalescedEvent.clientX >= x-2), "getCoalescedEvents()[" + i + "].clientX"); + ok((coalescedEvent.clientY <= y+2) && (coalescedEvent.clientY >= y-2), "getCoalescedEvents()[" + i + "].clientY"); + } + }, { once: true }); + + target0.addEventListener("pointerup", (ev) => { + utils.restoreNormalRefresh(); + SimpleTest.finish(); + }, { once: true }); + + await promiseNativeMouseEvent({ type: "mousemove", target: target0, offsetX: 5, offsetY: 5 }); + await promiseNativeMouseEvent({ type: "mousemove", target: target0, offsetX: 10, offsetY: 10 }); + await promiseNativeMouseEvent({ type: "mousemove", target: target0, offsetX: 15, offsetY: 15 }); + await promiseNativeMouseEvent({ type: "mousemove", target: target0, offsetX: 20, offsetY: 20 }); + synthesizeNativeMouseEvent({ type: "click", target: target0, offsetX: 20, offsetY: 20 }); + }); +} + +SimpleTest.waitForFocus(() => { + SpecialPowers.pushPrefEnv({"set": [["dom.events.coalesce.mousemove", true]]}, runTests); +}); + +</script> +</body> +</html> |