fune/browser/base/content/test/tabs/browser_tab_tooltips.js
Emilio Cobos Álvarez b73c08693f Bug 1768004 - Remove proton places tooltip code. r=dao
There's nobody working on it, and tooltips should hopefully be nice
enough after recent changes (bug 1765423).

Having it enabled causes artifacts like bug 1767815 comment 3. We can
always rescue this from hg history if needed.

Differential Revision: https://phabricator.services.mozilla.com/D145621
2022-05-05 16:18:17 +00:00

108 lines
3.1 KiB
JavaScript

// Offset within the tab for the mouse event
const MOUSE_OFFSET = 7;
// Normal tooltips are positioned vertically at least this amount
const MIN_VERTICAL_TOOLTIP_OFFSET = 18;
function openTooltip(node, tooltip) {
let tooltipShownPromise = BrowserTestUtils.waitForEvent(
tooltip,
"popupshown"
);
window.windowUtils.disableNonTestMouseEvents(true);
EventUtils.synthesizeMouse(node, 2, 2, { type: "mouseover" });
EventUtils.synthesizeMouse(node, 4, 4, { type: "mousemove" });
EventUtils.synthesizeMouse(node, MOUSE_OFFSET, MOUSE_OFFSET, {
type: "mousemove",
});
EventUtils.synthesizeMouse(node, 2, 2, { type: "mouseout" });
window.windowUtils.disableNonTestMouseEvents(false);
return tooltipShownPromise;
}
function closeTooltip(node, tooltip) {
let tooltipHiddenPromise = BrowserTestUtils.waitForEvent(
tooltip,
"popuphidden"
);
EventUtils.synthesizeMouse(document.documentElement, 2, 2, {
type: "mousemove",
});
return tooltipHiddenPromise;
}
// This test verifies that the tab tooltip appears at the correct location, aligned
// with the bottom of the tab, and that the tooltip appears near the close button.
add_task(async function() {
const tabUrl =
"data:text/html,<html><head><title>A Tab</title></head><body>Hello</body></html>";
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, tabUrl);
let tooltip = document.getElementById("tabbrowser-tab-tooltip");
await openTooltip(tab, tooltip);
let tabRect = tab.getBoundingClientRect();
let tooltipRect = tooltip.getBoundingClientRect();
isfuzzy(
tooltipRect.left,
tabRect.left + MOUSE_OFFSET,
1,
"tooltip left position for tab"
);
ok(
tooltipRect.top >= tabRect.top + MIN_VERTICAL_TOOLTIP_OFFSET + MOUSE_OFFSET,
"tooltip top position for tab"
);
is(
tooltip.getAttribute("position"),
"",
"tooltip position attribute for tab"
);
await closeTooltip(tab, tooltip);
await openTooltip(tab.closeButton, tooltip);
let closeButtonRect = tab.closeButton.getBoundingClientRect();
tooltipRect = tooltip.getBoundingClientRect();
isfuzzy(
tooltipRect.left,
closeButtonRect.left + MOUSE_OFFSET,
1,
"tooltip left position for close button"
);
ok(
tooltipRect.top >
closeButtonRect.top + MIN_VERTICAL_TOOLTIP_OFFSET + MOUSE_OFFSET,
"tooltip top position for close button"
);
ok(
!tooltip.hasAttribute("position"),
"tooltip position attribute for close button"
);
await closeTooltip(tab, tooltip);
BrowserTestUtils.removeTab(tab);
});
// This test verifies that a mouse wheel closes the tooltip.
add_task(async function() {
const tabUrl =
"data:text/html,<html><head><title>A Tab</title></head><body>Hello</body></html>";
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, tabUrl);
let tooltip = document.getElementById("tabbrowser-tab-tooltip");
await openTooltip(tab, tooltip);
EventUtils.synthesizeWheel(tab, 4, 4, {
deltaMode: WheelEvent.DOM_DELTA_LINE,
deltaY: 1.0,
});
is(tooltip.state, "closed", "wheel event closed the tooltip");
BrowserTestUtils.removeTab(tab);
});