1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3 /* eslint-disable mozilla/no-arbitrary-setTimeout */
7 add_setup(async function () {
8 await SpecialPowers.pushPrefEnv({ set: [["ui.tooltip.delay_ms", 0]] });
11 add_task(async function () {
12 await BrowserTestUtils.withNewTab(
15 url: "data:text/html,<!DOCTYPE html>",
17 async function (browser) {
18 info("Moving mouse out of the way.");
19 await EventUtils.synthesizeAndWaitNativeMouseMove(browser, 300, 300);
21 await SpecialPowers.spawn(browser, [], function () {
22 let widget = content.document.insertAnonymousContent();
23 widget.root.innerHTML = `<button style="pointer-events: auto; position: absolute; width: 200px; height: 200px;" title="foo">bar</button>`;
25 "@mozilla.org/embedcomp/default-tooltiptextprovider;1"
26 ].getService(Ci.nsITooltipTextProvider);
31 tttp.getNodeText(widget.root.querySelector("button"), text, dir),
32 "A tooltip should be shown for NAC"
34 is(text.value, "foo", "Tooltip text should be correct");
37 let awaitTooltipOpen = new Promise(resolve => {
38 let tooltipId = Services.appinfo.browserTabsRemoteAutostart
39 ? "remoteBrowserTooltip"
41 let tooltip = document.getElementById(tooltipId);
42 tooltip.addEventListener(
45 resolve(event.target);
51 info("Initial mouse move");
52 await EventUtils.synthesizeAndWaitNativeMouseMove(browser, 50, 5);
54 await new Promise(resolve => setTimeout(resolve, 400));
55 info("Second mouse move");
56 await EventUtils.synthesizeAndWaitNativeMouseMove(browser, 70, 5);
57 info("Waiting for tooltip to open");
58 let tooltip = await awaitTooltipOpen;
60 tooltip.getAttribute("label"),
62 "tooltip label should match expectation"