browser_1003588_no_specials_in_panel.js (4174B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 function simulateItemDragAndEnd(aToDrag, aTarget) { 7 var ds = Cc["@mozilla.org/widget/dragservice;1"].getService( 8 Ci.nsIDragService 9 ); 10 11 ds.startDragSessionForTests( 12 window, 13 Ci.nsIDragService.DRAGDROP_ACTION_MOVE | 14 Ci.nsIDragService.DRAGDROP_ACTION_COPY | 15 Ci.nsIDragService.DRAGDROP_ACTION_LINK 16 ); 17 try { 18 var [result, dataTransfer] = EventUtils.synthesizeDragOver( 19 aToDrag.parentNode, 20 aTarget 21 ); 22 EventUtils.synthesizeDropAfterDragOver(result, dataTransfer, aTarget); 23 // Send dragend to move dragging item back to initial place. 24 EventUtils.sendDragEvent( 25 { type: "dragend", dataTransfer }, 26 aToDrag.parentNode 27 ); 28 } finally { 29 ds.getCurrentSession().endDragSession(true); 30 } 31 } 32 33 add_task(async function checkNoAddingToPanel() { 34 let area = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL; 35 let previousPlacements = getAreaWidgetIds(area); 36 CustomizableUI.addWidgetToArea("separator", area); 37 CustomizableUI.addWidgetToArea("spring", area); 38 CustomizableUI.addWidgetToArea("spacer", area); 39 assertAreaPlacements(area, previousPlacements); 40 41 let oldNumberOfItems = previousPlacements.length; 42 if (getAreaWidgetIds(area).length != oldNumberOfItems) { 43 CustomizableUI.reset(); 44 } 45 }); 46 47 add_task(async function checkAddingToToolbar() { 48 let area = CustomizableUI.AREA_NAVBAR; 49 let previousPlacements = getAreaWidgetIds(area); 50 CustomizableUI.addWidgetToArea("separator", area); 51 CustomizableUI.addWidgetToArea("spring", area); 52 CustomizableUI.addWidgetToArea("spacer", area); 53 let expectedPlacements = [...previousPlacements].concat([ 54 /separator/, 55 /spring/, 56 /spacer/, 57 ]); 58 assertAreaPlacements(area, expectedPlacements); 59 60 let newlyAddedElements = getAreaWidgetIds(area).slice(-3); 61 while (newlyAddedElements.length) { 62 CustomizableUI.removeWidgetFromArea(newlyAddedElements.shift()); 63 } 64 65 assertAreaPlacements(area, previousPlacements); 66 67 let oldNumberOfItems = previousPlacements.length; 68 if (getAreaWidgetIds(area).length != oldNumberOfItems) { 69 CustomizableUI.reset(); 70 } 71 }); 72 73 add_task(async function checkDragging() { 74 let startArea = CustomizableUI.AREA_TABSTRIP; 75 let targetArea = CustomizableUI.AREA_FIXED_OVERFLOW_PANEL; 76 let startingToolbarPlacements = getAreaWidgetIds(startArea); 77 let startingTargetPlacements = getAreaWidgetIds(targetArea); 78 79 CustomizableUI.addWidgetToArea("separator", startArea); 80 CustomizableUI.addWidgetToArea("spring", startArea); 81 CustomizableUI.addWidgetToArea("spacer", startArea); 82 83 let placementsWithSpecials = getAreaWidgetIds(startArea); 84 let elementsToMove = []; 85 for (let id of placementsWithSpecials) { 86 if (CustomizableUI.isSpecialWidget(id)) { 87 elementsToMove.push(id); 88 } 89 } 90 is(elementsToMove.length, 3, "Should have 3 elements to try and drag."); 91 92 await startCustomizing(); 93 let existingSpecial = null; 94 existingSpecial = 95 gCustomizeMode.visiblePalette.querySelector("toolbarspring"); 96 ok( 97 existingSpecial, 98 "Should have a flexible space in the palette by default in photon" 99 ); 100 for (let id of elementsToMove) { 101 simulateItemDragAndEnd( 102 document.getElementById(id), 103 document.getElementById(targetArea) 104 ); 105 } 106 107 assertAreaPlacements(startArea, placementsWithSpecials); 108 assertAreaPlacements(targetArea, startingTargetPlacements); 109 110 for (let id of elementsToMove) { 111 simulateItemDrag( 112 document.getElementById(id), 113 gCustomizeMode.visiblePalette 114 ); 115 } 116 117 assertAreaPlacements(startArea, startingToolbarPlacements); 118 assertAreaPlacements(targetArea, startingTargetPlacements); 119 120 let allSpecials = gCustomizeMode.visiblePalette.querySelectorAll( 121 "toolbarspring,toolbarseparator,toolbarspacer" 122 ); 123 allSpecials = [...allSpecials].filter(special => special != existingSpecial); 124 ok( 125 !allSpecials.length, 126 "No (new) specials should make it to the palette alive." 127 ); 128 await endCustomizing(); 129 }); 130 131 add_task(async function asyncCleanup() { 132 await endCustomizing(); 133 CustomizableUI.reset(); 134 });