mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +02:00
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.
46 lines
1.8 KiB
HTML
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>
|