Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Test for following reordering operation:
// * DragAndDrop the target component to back
// * DragAndDrop the target component to front
// * DragAndDrop the target component over the starting of the tab
// * DragAndDrop the target component over the ending of the tab
// * Mouse was out from the document while dragging
// * Select overflowed item, then DnD that
//
// This test is on the assumption which default toolbar has following tools.
// * inspector
// * webconsole
// * jsdebugger
// * styleeditor
// * performance
// * memory
// * netmonitor
// * storage
// * accessibility
// * application
const { Toolbox } = require("resource://devtools/client/framework/toolbox.js");
const TEST_STARTING_ORDER = [
"inspector",
"webconsole",
"jsdebugger",
"styleeditor",
"performance",
"memory",
"netmonitor",
"storage",
"accessibility",
"application",
];
const TEST_DATA = [
{
description: "DragAndDrop the target component to back",
dragTarget: "webconsole",
dropTarget: "jsdebugger",
expectedOrder: [
"inspector",
"jsdebugger",
"webconsole",
"styleeditor",
"performance",
"memory",
"netmonitor",
"storage",
"accessibility",
"application",
],
},
{
description: "DragAndDrop the target component to front",
dragTarget: "webconsole",
dropTarget: "inspector",
expectedOrder: [
"webconsole",
"inspector",
"jsdebugger",
"styleeditor",
"performance",
"memory",
"netmonitor",
"storage",
"accessibility",
"application",
],
},
{
description:
"DragAndDrop the target component over the starting of the tab",
dragTarget: "netmonitor",
passedTargets: [
"memory",
"performance",
"styleeditor",
"jsdebugger",
"webconsole",
"inspector",
],
dropTarget: "#toolbox-buttons-start",
expectedOrder: [
"netmonitor",
"inspector",
"webconsole",
"jsdebugger",
"styleeditor",
"performance",
"memory",
"storage",
"accessibility",
"application",
],
},
{
description: "DragAndDrop the target component over the ending of the tab",
dragTarget: "webconsole",
passedTargets: [
"jsdebugger",
"styleeditor",
"performance",
"memory",
"netmonitor",
"storage",
],
dropTarget: "#toolbox-buttons-end",
expectedOrder: [
"inspector",
"jsdebugger",
"styleeditor",
"performance",
"memory",
"netmonitor",
"storage",
"accessibility",
"application",
"webconsole",
],
},
];
add_task(async function () {
// Enable the Application panel (atm it's only available on Nightly)
await pushPref("devtools.application.enabled", true);
const tab = await addTab("about:blank");
const toolbox = await openToolboxForTab(
tab,
"inspector",
Toolbox.HostType.BOTTOM
);
const originalPreference = Services.prefs.getCharPref(
"devtools.toolbox.tabsOrder"
);
const win = getWindow(toolbox);
const { outerWidth: originalWindowWidth, outerHeight: originalWindowHeight } =
win;
registerCleanupFunction(() => {
Services.prefs.setCharPref(
"devtools.toolbox.tabsOrder",
originalPreference
);
win.resizeTo(originalWindowWidth, originalWindowHeight);
});
for (const testData of TEST_DATA) {
info(`Test for '${testData.description}'`);
prepareToolTabReorderTest(toolbox, TEST_STARTING_ORDER);
await dndToolTab(
toolbox,
testData.dragTarget,
testData.dropTarget,
testData.passedTargets
);
assertToolTabOrder(toolbox, testData.expectedOrder);
assertToolTabSelected(toolbox, testData.dragTarget);
assertToolTabPreferenceOrder(testData.expectedOrder);
}
info("Test with overflowing tabs");
prepareToolTabReorderTest(toolbox, TEST_STARTING_ORDER);
await resizeWindow(toolbox, 800);
await toolbox.selectTool("storage");
const dragTarget = "storage";
const dropTarget = "inspector";
const expectedOrder = [
"storage",
"inspector",
"webconsole",
"jsdebugger",
"styleeditor",
"performance",
"memory",
"netmonitor",
"accessibility",
"application",
];
await dndToolTab(toolbox, dragTarget, dropTarget);
assertToolTabSelected(toolbox, dragTarget);
assertToolTabPreferenceOrder(expectedOrder);
});