Files
ladybird/Tests/LibWeb/Text/input/UIEvents/UIEventInit-view.html
Jelle Raaijmakers f55fe69d4d LibWeb: Rework Internals' mouse control
Instead of defining somewhat high level mouse actions, allow granular
control of mouse clicks and mouse down/up/move events. We will want to
simulate things like holding down a mouse button after double clicking
and then dragging the mouse to another position in the future, and this
enables that.
2026-02-06 14:18:10 +00:00

46 lines
1.8 KiB
HTML

<!DOCTYPE html>
<style>
div {
width: 100px;
height: 100px;
background-color: red;
}
</style>
<script src="../include.js"></script>
<body></body>
<script>
asyncTest(async done => {
let events = [
{ name: "click", trigger: (x, y) => internals.click(x, y) },
{ name: "dblclick", trigger: (x, y) => internals.click(x, y, 2) },
{ name: "mousedown", trigger: (x, y) => internals.click(x, y) },
{ name: "pointerdown", trigger: (x, y) => internals.click(x, y) },
{ name: "mouseup", trigger: (x, y) => internals.click(x, y) },
{ name: "pointerup", trigger: (x, y) => internals.click(x, y) },
{ name: "mousemove", trigger: (x, y) => internals.mouseMove(x, y) },
{ name: "pointermove", trigger: (x, y) => internals.mouseMove(x, y) },
{ name: "mouseover", trigger: (x, y) => internals.mouseMove(x, y) },
{ name: "mouseout", trigger: (x, y) => { internals.mouseMove(x, y); internals.mouseMove(x + 100, y + 100); } },
{ name: "wheel", trigger: (x, y) => internals.wheel(x, y, 1, 0) },
];
for (const event of events) {
const target = document.createElement("div");
document.body.appendChild(target);
let promise = new Promise(resolve => {
target.addEventListener(event.name, (e) => {
println(`${event.name} event view is set to the active window: ${e.view === window}`);
resolve();
});
});
const rect = target.getBoundingClientRect();
const x = rect.left + rect.width / 2;
const y = rect.top + rect.height / 2;
event.trigger(x, y);
await promise;
target.remove();
}
done();
});
</script>