forked from mirrors/gecko-dev
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
108 lines
3.1 KiB
JavaScript
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);
|
|
});
|