59 lines
1.7 KiB
HTML
59 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset=utf-8>
|
|
</head>
|
|
<body>
|
|
<script src="../../resources/testharness.js"></script>
|
|
<script src="../../resources/testharnessreport.js"></script>
|
|
<script src="../utils.js"></script>
|
|
<script>
|
|
|
|
'use strict';
|
|
|
|
function runMouseSequence()
|
|
{
|
|
eventSender.mouseDown();
|
|
eventSender.mouseMoveTo(25, 25);
|
|
eventSender.mouseMoveTo(75, 75);
|
|
eventSender.mouseUp();
|
|
}
|
|
|
|
target_test({ x: "50px", y: "50px", width: "100px", height: "100px" }, (target, test) => {
|
|
const eventTracker = new EventTracker(target, ["mousedown", "mouseover", "mouseenter", "mousemove", "mouseout", "mouseleave", "mouseup"]);
|
|
|
|
// First, move the mouse over the element to start in that state.
|
|
eventSender.mouseMoveTo(75, 75);
|
|
eventTracker.clear();
|
|
|
|
// Then, press the mouse, don't call preventDefault() while handling "pointerdown", move the mouse out, then back over and finally release.
|
|
runMouseSequence();
|
|
|
|
eventTracker.assertMatchesEvents([
|
|
{"type": "mousedown" },
|
|
{"type": "mouseout" },
|
|
{"type": "mouseleave" },
|
|
{"type": "mouseover" },
|
|
{"type": "mouseenter" },
|
|
{"type": "mousemove" },
|
|
{"type": "mouseup" }
|
|
]);
|
|
|
|
eventTracker.clear();
|
|
|
|
// Then do the same thing but calling preventDefault() while handling "pointerdown".
|
|
target.addEventListener("pointerdown", event => event.preventDefault());
|
|
runMouseSequence();
|
|
|
|
eventTracker.assertMatchesEvents([
|
|
{"type": "mouseout" },
|
|
{"type": "mouseleave" },
|
|
{"type": "mouseover" },
|
|
{"type": "mouseenter" },
|
|
]);
|
|
test.done();
|
|
}, `Testing that calling preventDefault() when handling a "pointerdown" event only blocks expected events.`);
|
|
|
|
</script>
|
|
</body>
|
|
</html> |