Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
registerCleanupFunction(async function () {
// Clean up when the test finishes.
await task_resetState();
});
/**
* Make sure the downloads button and indicator overflows into the nav-bar
* chevron properly, and then when those buttons are clicked in the overflow
* panel that the downloads panel anchors to the chevron`s icon.
*/
add_task(async function test_overflow_anchor() {
await SpecialPowers.pushPrefEnv({
set: [["browser.download.autohideButton", false]],
});
// Ensure that state is reset in case previous tests didn't finish.
await task_resetState();
// The downloads button should not be overflowed to begin with.
let button = CustomizableUI.getWidget("downloads-button").forWindow(window);
ok(!button.overflowed, "Downloads button should not be overflowed.");
is(
button.node.getAttribute("cui-areatype"),
"toolbar",
"Button should know it's in the toolbar"
);
await gCustomizeMode.addToPanel(button.node);
let promise = promisePanelOpened();
EventUtils.sendMouseEvent({ type: "mousedown", button: 0 }, button.node);
info("waiting for panel to open");
await promise;
let panel = DownloadsPanel.panel;
let chevron = document.getElementById("nav-bar-overflow-button");
is(
panel.anchorNode,
chevron.icon,
"Panel should be anchored to the chevron`s icon."
);
DownloadsPanel.hidePanel();
gCustomizeMode.addToToolbar(button.node);
// Now try opening the panel again.
promise = promisePanelOpened();
EventUtils.sendMouseEvent({ type: "mousedown", button: 0 }, button.node);
await promise;
let downloadsAnchor = button.node.badgeStack;
is(panel.anchorNode, downloadsAnchor);
DownloadsPanel.hidePanel();
});