browser_878452_drag_to_panel.js (3528B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 CustomizableUI.createWidget({ 7 id: "cui-panel-item-to-drag-to", 8 defaultArea: CustomizableUI.AREA_FIXED_OVERFLOW_PANEL, 9 label: "Item in panel to drag to", 10 }); 11 12 // Dragging an item from the palette to another button in the panel should work. 13 add_task(async function () { 14 await startCustomizing(); 15 let btn = document.getElementById("new-window-button"); 16 let placements = getAreaWidgetIds(CustomizableUI.AREA_FIXED_OVERFLOW_PANEL); 17 18 let lastButtonIndex = placements.length - 1; 19 let lastButton = placements[lastButtonIndex]; 20 let placementsAfterInsert = placements 21 .slice(0, lastButtonIndex) 22 .concat(["new-window-button", lastButton]); 23 let lastButtonNode = document.getElementById(lastButton); 24 simulateItemDrag(btn, lastButtonNode, "start"); 25 assertAreaPlacements( 26 CustomizableUI.AREA_FIXED_OVERFLOW_PANEL, 27 placementsAfterInsert 28 ); 29 ok(!CustomizableUI.inDefaultState, "Should no longer be in default state."); 30 let palette = document.getElementById("customization-palette"); 31 simulateItemDrag(btn, palette); 32 CustomizableUI.removeWidgetFromArea("cui-panel-item-to-drag-to"); 33 ok(CustomizableUI.inDefaultState, "Should be in default state again."); 34 await endCustomizing(); 35 }); 36 37 // Dragging an item from the palette to the panel itself should also work. 38 add_task(async function () { 39 CustomizableUI.addWidgetToArea( 40 "cui-panel-item-to-drag-to", 41 CustomizableUI.AREA_FIXED_OVERFLOW_PANEL 42 ); 43 await startCustomizing(); 44 let btn = document.getElementById("new-window-button"); 45 let panel = document.getElementById(CustomizableUI.AREA_FIXED_OVERFLOW_PANEL); 46 let placements = getAreaWidgetIds(CustomizableUI.AREA_FIXED_OVERFLOW_PANEL); 47 48 let placementsAfterAppend = placements.concat(["new-window-button"]); 49 simulateItemDrag(btn, panel); 50 assertAreaPlacements( 51 CustomizableUI.AREA_FIXED_OVERFLOW_PANEL, 52 placementsAfterAppend 53 ); 54 ok(!CustomizableUI.inDefaultState, "Should no longer be in default state."); 55 let palette = document.getElementById("customization-palette"); 56 simulateItemDrag(btn, palette); 57 CustomizableUI.removeWidgetFromArea("cui-panel-item-to-drag-to"); 58 ok(CustomizableUI.inDefaultState, "Should be in default state again."); 59 await endCustomizing(); 60 }); 61 62 // Dragging an item from the palette to an empty panel should also work. 63 add_task(async function () { 64 let widgetIds = getAreaWidgetIds(CustomizableUI.AREA_FIXED_OVERFLOW_PANEL); 65 while (widgetIds.length) { 66 CustomizableUI.removeWidgetFromArea(widgetIds.shift()); 67 } 68 await startCustomizing(); 69 let btn = document.getElementById("new-window-button"); 70 let panel = document.getElementById(CustomizableUI.AREA_FIXED_OVERFLOW_PANEL); 71 72 assertAreaPlacements(panel.id, []); 73 74 let placementsAfterAppend = ["new-window-button"]; 75 simulateItemDrag(btn, panel); 76 assertAreaPlacements( 77 CustomizableUI.AREA_FIXED_OVERFLOW_PANEL, 78 placementsAfterAppend 79 ); 80 ok(!CustomizableUI.inDefaultState, "Should no longer be in default state."); 81 let palette = document.getElementById("customization-palette"); 82 simulateItemDrag(btn, palette); 83 assertAreaPlacements(panel.id, []); 84 await endCustomizing(); 85 }); 86 87 registerCleanupFunction(async function asyncCleanup() { 88 CustomizableUI.destroyWidget("cui-panel-item-to-drag-to"); 89 await resetCustomization(); 90 });