91 lines
2.7 KiB
JavaScript
91 lines
2.7 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";
|
|
|
|
var navbar = document.getElementById(CustomizableUI.AREA_NAVBAR);
|
|
|
|
registerCleanupFunction(async function asyncCleanup() {
|
|
await resetCustomization();
|
|
});
|
|
|
|
// Resize to a small window, resize back, shouldn't affect default state.
|
|
add_task(async function () {
|
|
let originalWindowWidth = window.outerWidth;
|
|
ok(
|
|
!navbar.hasAttribute("overflowing"),
|
|
"Should start with a non-overflowing toolbar."
|
|
);
|
|
ok(CustomizableUI.inDefaultState, "Should start in default state.");
|
|
let navbarTarget = CustomizableUI.getCustomizationTarget(navbar);
|
|
let oldChildCount = navbarTarget.childElementCount;
|
|
let placements = [...navbarTarget.children].map(node => node.id);
|
|
|
|
window.resizeTo(kForceOverflowWidthPx, window.outerHeight);
|
|
await TestUtils.waitForCondition(
|
|
() => navbar.hasAttribute("overflowing"),
|
|
"Navbar has a overflowing attribute"
|
|
);
|
|
ok(navbar.hasAttribute("overflowing"), "Should have an overflowing toolbar.");
|
|
ok(
|
|
CustomizableUI.inDefaultState,
|
|
"Should still be in default state when overflowing."
|
|
);
|
|
Assert.less(
|
|
navbarTarget.childElementCount,
|
|
oldChildCount,
|
|
"Should have fewer children."
|
|
);
|
|
window.resizeTo(originalWindowWidth, window.outerHeight);
|
|
await TestUtils.waitForCondition(
|
|
() => !navbar.hasAttribute("overflowing"),
|
|
"Navbar does not have an overflowing attribute"
|
|
);
|
|
ok(
|
|
!navbar.hasAttribute("overflowing"),
|
|
"Should no longer have an overflowing toolbar."
|
|
);
|
|
ok(
|
|
CustomizableUI.inDefaultState,
|
|
"Should still be in default state now we're no longer overflowing."
|
|
);
|
|
|
|
// Verify actual physical placements match those of the placement array:
|
|
let placementCounter = 0;
|
|
for (let node of navbarTarget.children) {
|
|
if (node.getAttribute("skipintoolbarset") == "true") {
|
|
continue;
|
|
}
|
|
is(
|
|
placements[placementCounter++],
|
|
node.id,
|
|
"Nodes should match after overflow"
|
|
);
|
|
}
|
|
is(
|
|
placements.length,
|
|
placementCounter,
|
|
"Should have as many nodes as expected"
|
|
);
|
|
is(
|
|
navbarTarget.childElementCount,
|
|
oldChildCount,
|
|
"Number of nodes should match"
|
|
);
|
|
});
|
|
|
|
// Enter and exit customization mode, check that default state is correct.
|
|
add_task(async function () {
|
|
ok(CustomizableUI.inDefaultState, "Should start in default state.");
|
|
await startCustomizing();
|
|
ok(
|
|
CustomizableUI.inDefaultState,
|
|
"Should be in default state in customization mode."
|
|
);
|
|
await endCustomizing();
|
|
ok(
|
|
CustomizableUI.inDefaultState,
|
|
"Should be in default state after customization mode."
|
|
);
|
|
});
|