forked from mirrors/gecko-dev
117 lines
3.8 KiB
JavaScript
117 lines
3.8 KiB
JavaScript
"use strict";
|
|
|
|
var overflowPanel = document.getElementById("widget-overflow");
|
|
|
|
var originalWindowWidth;
|
|
registerCleanupFunction(function () {
|
|
overflowPanel.removeAttribute("animate");
|
|
window.resizeTo(originalWindowWidth, window.outerHeight);
|
|
let navbar = document.getElementById(CustomizableUI.AREA_NAVBAR);
|
|
return TestUtils.waitForCondition(() => !navbar.hasAttribute("overflowing"));
|
|
});
|
|
|
|
// Right-click on an item within the overflow panel should
|
|
// show a context menu with options to move it.
|
|
add_task(async function () {
|
|
overflowPanel.setAttribute("animate", "false");
|
|
let fxaButton = document.getElementById("fxa-toolbar-menu-button");
|
|
if (BrowserTestUtils.is_hidden(fxaButton)) {
|
|
// FxA button is likely hidden since the user is logged out.
|
|
let initialFxaStatus = document.documentElement.getAttribute("fxastatus");
|
|
document.documentElement.setAttribute("fxastatus", "signed_in");
|
|
registerCleanupFunction(() =>
|
|
document.documentElement.setAttribute("fxastatus", initialFxaStatus)
|
|
);
|
|
ok(BrowserTestUtils.is_visible(fxaButton), "FxA button is now visible");
|
|
}
|
|
|
|
originalWindowWidth = window.outerWidth;
|
|
let navbar = document.getElementById(CustomizableUI.AREA_NAVBAR);
|
|
ok(
|
|
!navbar.hasAttribute("overflowing"),
|
|
"Should start with a non-overflowing toolbar."
|
|
);
|
|
window.resizeTo(kForceOverflowWidthPx, window.outerHeight);
|
|
|
|
await TestUtils.waitForCondition(() => navbar.hasAttribute("overflowing"));
|
|
ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
|
|
|
|
let chevron = document.getElementById("nav-bar-overflow-button");
|
|
let shownPanelPromise = promisePanelElementShown(window, overflowPanel);
|
|
chevron.click();
|
|
await shownPanelPromise;
|
|
|
|
let contextMenu = document.getElementById(
|
|
"customizationPanelItemContextMenu"
|
|
);
|
|
let shownContextPromise = popupShown(contextMenu);
|
|
ok(fxaButton, "fxa-toolbar-menu-button was found");
|
|
is(
|
|
fxaButton.getAttribute("overflowedItem"),
|
|
"true",
|
|
"FxA button is overflowing"
|
|
);
|
|
EventUtils.synthesizeMouse(fxaButton, 2, 2, {
|
|
type: "contextmenu",
|
|
button: 2,
|
|
});
|
|
await shownContextPromise;
|
|
|
|
is(
|
|
overflowPanel.state,
|
|
"open",
|
|
"The widget overflow panel should still be open."
|
|
);
|
|
|
|
let expectedEntries = [
|
|
[".customize-context-moveToPanel", true],
|
|
[".customize-context-removeFromPanel", true],
|
|
["---"],
|
|
[".viewCustomizeToolbar", true],
|
|
];
|
|
checkContextMenu(contextMenu, expectedEntries);
|
|
|
|
let hiddenContextPromise = popupHidden(contextMenu);
|
|
let hiddenPromise = promisePanelElementHidden(window, overflowPanel);
|
|
let moveToPanel = contextMenu.querySelector(".customize-context-moveToPanel");
|
|
if (moveToPanel) {
|
|
contextMenu.activateItem(moveToPanel);
|
|
} else {
|
|
contextMenu.hidePopup();
|
|
}
|
|
await hiddenContextPromise;
|
|
await hiddenPromise;
|
|
|
|
let fxaButtonPlacement = CustomizableUI.getPlacementOfWidget(
|
|
"fxa-toolbar-menu-button"
|
|
);
|
|
ok(fxaButtonPlacement, "FxA button should still have a placement");
|
|
is(
|
|
fxaButtonPlacement && fxaButtonPlacement.area,
|
|
CustomizableUI.AREA_FIXED_OVERFLOW_PANEL,
|
|
"FxA button should be pinned now"
|
|
);
|
|
CustomizableUI.reset();
|
|
|
|
// In some cases, it can take a tick for the navbar to overflow again. Wait for it:
|
|
await TestUtils.waitForCondition(() =>
|
|
fxaButton.hasAttribute("overflowedItem")
|
|
);
|
|
ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
|
|
|
|
fxaButtonPlacement = CustomizableUI.getPlacementOfWidget(
|
|
"fxa-toolbar-menu-button"
|
|
);
|
|
ok(fxaButtonPlacement, "FxA button should still have a placement");
|
|
is(
|
|
fxaButtonPlacement && fxaButtonPlacement.area,
|
|
"nav-bar",
|
|
"FxA button should be back in the navbar now"
|
|
);
|
|
|
|
is(
|
|
fxaButton.getAttribute("overflowedItem"),
|
|
"true",
|
|
"FxA button should still be overflowed"
|
|
);
|
|
});
|