tenfourfox/browser/components/customizableui/test/browser_968565_insert_before_hidden_items.js
Cameron Kaiser c9b2922b70 hello FPR
2017-04-19 00:56:45 -07:00

57 lines
2.1 KiB
JavaScript

/* 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(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.
navbar.insertItem(hidden1.id);
navbar.insertItem(hidden2.id);
// Drag an item and drop it onto the nav-bar customization target, but
// not over a particular item.
yield startCustomizing();
let downloadsButton = document.getElementById("downloads-button");
simulateItemDrag(downloadsButton, navbar.customizationTarget);
yield endCustomizing();
is(downloadsButton.previousSibling.id, lastVisible.id,
"The downloads button should be placed after the last visible item.");
yield resetCustomization();
});