/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
add_task(async function testDispatchMouseEvent({ client }) {
await loadURL(toDataURL("
foo
"));
const { Input } = client;
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], function() {
const div = content.document.querySelector("div");
content.mouseDownPromise = new Promise(resolve => {
div.addEventListener("mousedown", resolve, { once: true });
});
content.mouseUpPromise = new Promise(resolve => {
div.addEventListener("mouseup", resolve, { once: true });
});
content.clickPromise = new Promise(resolve => {
div.addEventListener("click", resolve, { once: true });
});
});
const { x, y } = await SpecialPowers.spawn(
gBrowser.selectedBrowser,
[],
() => {
return content.document.querySelector("div").getBoundingClientRect();
}
);
await Input.dispatchMouseEvent({
type: "mousePressed",
x,
y,
});
info("Waiting for DOM mousedown event on the div");
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function() {
await content.mouseDownPromise;
});
await Input.dispatchMouseEvent({
type: "mouseReleased",
x,
y,
});
info("Waiting for DOM mouseup event on the div");
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function() {
await content.mouseUpPromise;
});
info("Waiting for DOM click event on the div");
await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function() {
await content.clickPromise;
});
ok(true, "All events detected");
});