Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const kHidden1Id = "test-hidden-button-1";
const kHidden2Id = "test-hidden-button-2";
var navbar = document.getElementById(CustomizableUI.AREA_NAVBAR);
// When we drag an item onto a customizable area, and not over a specific target, we
// should assume that we're appending them to the area. If doing so, we should scan
// backwards over any hidden items and insert the item before those hidden items.
add_task(async function () {
ok(CustomizableUI.inDefaultState, "Should be in the default state");
// Iterate backwards over the items in the nav-bar until we find the first
// one that is not hidden.
let placements = CustomizableUI.getWidgetsInArea(CustomizableUI.AREA_NAVBAR);
let lastVisible = null;
for (let widgetGroup of placements.reverse()) {
let widget = widgetGroup.forWindow(window);
if (widget && widget.node && !widget.node.hidden) {
lastVisible = widget.node;
break;
}
}
if (!lastVisible) {
ok(false, "Apparently, there are no visible items in the nav-bar.");
}
info("The last visible item in the nav-bar has ID: " + lastVisible.id);
let hidden1 = createDummyXULButton(kHidden1Id, "You can't see me");
let hidden2 = createDummyXULButton(kHidden2Id, "You can't see me either.");
hidden1.hidden = hidden2.hidden = true;
// Make sure we have some hidden items at the end of the nav-bar.
CustomizableUI.addWidgetToArea(kHidden1Id, "nav-bar");
CustomizableUI.addWidgetToArea(kHidden2Id, "nav-bar");
// Drag an item and drop it onto the nav-bar customization target, but
// not over a particular item.
await startCustomizing();
let homeButton = document.getElementById("home-button");
let navbarTarget = CustomizableUI.getCustomizationTarget(navbar);
simulateItemDrag(homeButton, navbarTarget, "end");
await endCustomizing();
is(
homeButton.previousElementSibling.id,
lastVisible.id,
"The downloads button should be placed after the last visible item."
);
await resetCustomization();
});