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

211 lines
7.9 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";
requestLongerTimeout(2);
// One orphaned item should have two placeholders next to it.
add_task(function() {
yield startCustomizing();
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_PANEL);
ok(!CustomizableUI.inDefaultState, "Should no longer be in default state.");
}
if (!isInDevEdition()) {
ok(CustomizableUI.inDefaultState, "Should be in default state.");
} else {
ok(!CustomizableUI.inDefaultState, "Should not be in default state if on DevEdition.");
}
// This test relies on an exact number of widgets being in the panel.
// Remove the sync-button to satisfy that. (bug 1229236)
CustomizableUI.removeWidgetFromArea("sync-button");
let panel = document.getElementById(CustomizableUI.AREA_PANEL);
let placements = getAreaWidgetIds(CustomizableUI.AREA_PANEL);
assertAreaPlacements(CustomizableUI.AREA_PANEL, placements);
is(getVisiblePlaceholderCount(panel), 2, "Should only have 2 visible placeholders before exiting");
yield endCustomizing();
yield startCustomizing();
is(getVisiblePlaceholderCount(panel), 2, "Should only have 2 visible placeholders after re-entering");
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_NAVBAR, 2);
}
CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
ok(CustomizableUI.inDefaultState, "Should be in default state again.");
});
// Two orphaned items should have one placeholder next to them (case 1).
add_task(function() {
yield startCustomizing();
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_PANEL);
}
// This test relies on an exact number of widgets being in the panel.
// Remove the sync-button to satisfy that. (bug 1229236)
CustomizableUI.removeWidgetFromArea("sync-button");
let btn = document.getElementById("open-file-button");
let panel = document.getElementById(CustomizableUI.AREA_PANEL);
let placements = getAreaWidgetIds(CustomizableUI.AREA_PANEL);
let placementsAfterAppend = placements;
placementsAfterAppend = placements.concat(["open-file-button"]);
simulateItemDrag(btn, panel);
assertAreaPlacements(CustomizableUI.AREA_PANEL, placementsAfterAppend);
ok(!CustomizableUI.inDefaultState, "Should not be in default state.");
is(getVisiblePlaceholderCount(panel), 1, "Should only have 1 visible placeholder before exiting");
yield endCustomizing();
yield startCustomizing();
is(getVisiblePlaceholderCount(panel), 1, "Should only have 1 visible placeholder after re-entering");
let palette = document.getElementById("customization-palette");
simulateItemDrag(btn, palette);
btn = document.getElementById("open-file-button");
simulateItemDrag(btn, palette);
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_NAVBAR, 2);
}
CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
ok(CustomizableUI.inDefaultState, "Should be in default state again.");
});
// Two orphaned items should have one placeholder next to them (case 2).
add_task(function() {
yield startCustomizing();
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_PANEL);
}
// This test relies on an exact number of widgets being in the panel.
// Remove the sync-button to satisfy that. (bug 1229236)
CustomizableUI.removeWidgetFromArea("sync-button");
let btn = document.getElementById("add-ons-button");
let btn2 = document.getElementById("developer-button");
let panel = document.getElementById(CustomizableUI.AREA_PANEL);
let palette = document.getElementById("customization-palette");
let placements = getAreaWidgetIds(CustomizableUI.AREA_PANEL);
let placementsAfterAppend = placements.filter(p => p != btn.id && p != btn2.id);
simulateItemDrag(btn, palette);
simulateItemDrag(btn2, palette);
assertAreaPlacements(CustomizableUI.AREA_PANEL, placementsAfterAppend);
ok(!CustomizableUI.inDefaultState, "Should no longer be in default state.");
is(getVisiblePlaceholderCount(panel), 1, "Should only have 1 visible placeholder before exiting");
yield endCustomizing();
yield startCustomizing();
is(getVisiblePlaceholderCount(panel), 1, "Should only have 1 visible placeholder after re-entering");
simulateItemDrag(btn, panel);
simulateItemDrag(btn2, panel);
assertAreaPlacements(CustomizableUI.AREA_PANEL, placements);
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_NAVBAR, 2);
}
CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
ok(CustomizableUI.inDefaultState, "Should be in default state again.");
});
// A wide widget at the bottom of the panel should have three placeholders after it.
add_task(function() {
yield startCustomizing();
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_PANEL);
}
// This test relies on an exact number of widgets being in the panel.
// Remove the sync-button to satisfy that. (bug 1229236)
CustomizableUI.removeWidgetFromArea("sync-button");
let btn = document.getElementById("edit-controls");
let btn2 = document.getElementById("developer-button");
let panel = document.getElementById(CustomizableUI.AREA_PANEL);
let palette = document.getElementById("customization-palette");
let placements = getAreaWidgetIds(CustomizableUI.AREA_PANEL);
placements.pop();
simulateItemDrag(btn2, palette);
let placementsAfterAppend = placements.concat([placements.shift()]);
simulateItemDrag(btn, panel);
assertAreaPlacements(CustomizableUI.AREA_PANEL, placementsAfterAppend);
ok(!CustomizableUI.inDefaultState, "Should no longer be in default state.");
is(getVisiblePlaceholderCount(panel), 3, "Should have 3 visible placeholders before exiting");
yield endCustomizing();
yield startCustomizing();
is(getVisiblePlaceholderCount(panel), 3, "Should have 3 visible placeholders after re-entering");
simulateItemDrag(btn2, panel);
let zoomControls = document.getElementById("zoom-controls");
simulateItemDrag(btn, zoomControls);
if (isInDevEdition()) {
CustomizableUI.addWidgetToArea("developer-button", CustomizableUI.AREA_NAVBAR, 2);
}
CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
ok(CustomizableUI.inDefaultState, "Should be in default state again.");
});
// The default placements should have two placeholders at the bottom (or 1 in win8).
add_task(function() {
yield startCustomizing();
let numPlaceholders = -1;
if (isInDevEdition()) {
numPlaceholders = 3;
} else {
numPlaceholders = 2;
}
let panel = document.getElementById(CustomizableUI.AREA_PANEL);
ok(CustomizableUI.inDefaultState, "Should be in default state.");
// This test relies on an exact number of widgets being in the panel.
// Remove the sync-button to satisfy that. (bug 1229236)
CustomizableUI.removeWidgetFromArea("sync-button");
is(getVisiblePlaceholderCount(panel), numPlaceholders, "Should have " + numPlaceholders + " visible placeholders before exiting");
yield endCustomizing();
yield startCustomizing();
is(getVisiblePlaceholderCount(panel), numPlaceholders, "Should have " + numPlaceholders + " visible placeholders after re-entering");
CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
ok(CustomizableUI.inDefaultState, "Should still be in default state.");
});
add_task(function asyncCleanup() {
yield endCustomizing();
yield resetCustomization();
});
function getVisiblePlaceholderCount(aPanel) {
let visiblePlaceholders = aPanel.querySelectorAll(".panel-customization-placeholder:not([hidden=true])");
return visiblePlaceholders.length;
}