Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
function simulateItemDragAndEnd(aToDrag, aTarget) {
var ds = Cc["@mozilla.org/widget/dragservice;1"].getService(
Ci.nsIDragService
);
ds.startDragSessionForTests(
Ci.nsIDragService.DRAGDROP_ACTION_MOVE |
Ci.nsIDragService.DRAGDROP_ACTION_COPY |
Ci.nsIDragService.DRAGDROP_ACTION_LINK
);
try {
var [result, dataTransfer] = EventUtils.synthesizeDragOver(
aToDrag.parentNode,
aTarget
);
EventUtils.synthesizeDropAfterDragOver(result, dataTransfer, aTarget);
// Send dragend to move dragging item back to initial place.
EventUtils.sendDragEvent(
{ type: "dragend", dataTransfer },
aToDrag.parentNode
);
} finally {
ds.endDragSession(true);
}
}
add_task(async function checkNoAddingToPanel() {
let area = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL;
let previousPlacements = getAreaWidgetIds(area);
CustomizableUI.addWidgetToArea("separator", area);
CustomizableUI.addWidgetToArea("spring", area);
CustomizableUI.addWidgetToArea("spacer", area);
assertAreaPlacements(area, previousPlacements);
let oldNumberOfItems = previousPlacements.length;
if (getAreaWidgetIds(area).length != oldNumberOfItems) {
CustomizableUI.reset();
}
});
add_task(async function checkAddingToToolbar() {
let area = CustomizableUI.AREA_NAVBAR;
let previousPlacements = getAreaWidgetIds(area);
CustomizableUI.addWidgetToArea("separator", area);
CustomizableUI.addWidgetToArea("spring", area);
CustomizableUI.addWidgetToArea("spacer", area);
let expectedPlacements = [...previousPlacements].concat([
/separator/,
/spring/,
/spacer/,
]);
assertAreaPlacements(area, expectedPlacements);
let newlyAddedElements = getAreaWidgetIds(area).slice(-3);
while (newlyAddedElements.length) {
CustomizableUI.removeWidgetFromArea(newlyAddedElements.shift());
}
assertAreaPlacements(area, previousPlacements);
let oldNumberOfItems = previousPlacements.length;
if (getAreaWidgetIds(area).length != oldNumberOfItems) {
CustomizableUI.reset();
}
});
add_task(async function checkDragging() {
let startArea = CustomizableUI.AREA_TABSTRIP;
let targetArea = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL;
let startingToolbarPlacements = getAreaWidgetIds(startArea);
let startingTargetPlacements = getAreaWidgetIds(targetArea);
CustomizableUI.addWidgetToArea("separator", startArea);
CustomizableUI.addWidgetToArea("spring", startArea);
CustomizableUI.addWidgetToArea("spacer", startArea);
let placementsWithSpecials = getAreaWidgetIds(startArea);
let elementsToMove = [];
for (let id of placementsWithSpecials) {
if (CustomizableUI.isSpecialWidget(id)) {
elementsToMove.push(id);
}
}
is(elementsToMove.length, 3, "Should have 3 elements to try and drag.");
await startCustomizing();
let existingSpecial = null;
existingSpecial =
gCustomizeMode.visiblePalette.querySelector("toolbarspring");
ok(
existingSpecial,
"Should have a flexible space in the palette by default in photon"
);
for (let id of elementsToMove) {
simulateItemDragAndEnd(
document.getElementById(id),
document.getElementById(targetArea)
);
}
assertAreaPlacements(startArea, placementsWithSpecials);
assertAreaPlacements(targetArea, startingTargetPlacements);
for (let id of elementsToMove) {
simulateItemDrag(
document.getElementById(id),
gCustomizeMode.visiblePalette
);
}
assertAreaPlacements(startArea, startingToolbarPlacements);
assertAreaPlacements(targetArea, startingTargetPlacements);
let allSpecials = gCustomizeMode.visiblePalette.querySelectorAll(
"toolbarspring,toolbarseparator,toolbarspacer"
);
allSpecials = [...allSpecials].filter(special => special != existingSpecial);
ok(
!allSpecials.length,
"No (new) specials should make it to the palette alive."
);
await endCustomizing();
});
add_task(async function asyncCleanup() {
await endCustomizing();
CustomizableUI.reset();
});