michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: "use strict"; michael@0: michael@0: // Dragging an item from the palette to another button in the panel should work. michael@0: add_task(function() { michael@0: yield startCustomizing(); michael@0: let btn = document.getElementById("feed-button"); michael@0: let panel = document.getElementById(CustomizableUI.AREA_PANEL); michael@0: let placements = getAreaWidgetIds(CustomizableUI.AREA_PANEL); michael@0: michael@0: let lastButtonIndex = placements.length - 1; michael@0: let lastButton = placements[lastButtonIndex]; michael@0: let placementsAfterInsert = placements.slice(0, lastButtonIndex).concat(["feed-button", lastButton]); michael@0: let lastButtonNode = document.getElementById(lastButton); michael@0: simulateItemDrag(btn, lastButtonNode); michael@0: assertAreaPlacements(CustomizableUI.AREA_PANEL, placementsAfterInsert); michael@0: ok(!CustomizableUI.inDefaultState, "Should no longer be in default state."); michael@0: let palette = document.getElementById("customization-palette"); michael@0: simulateItemDrag(btn, palette); michael@0: ok(CustomizableUI.inDefaultState, "Should be in default state again."); michael@0: }); michael@0: michael@0: // Dragging an item from the palette to the panel itself should also work. michael@0: add_task(function() { michael@0: yield startCustomizing(); michael@0: let btn = document.getElementById("feed-button"); michael@0: let panel = document.getElementById(CustomizableUI.AREA_PANEL); michael@0: let placements = getAreaWidgetIds(CustomizableUI.AREA_PANEL); michael@0: michael@0: let placementsAfterAppend = placements.concat(["feed-button"]); michael@0: simulateItemDrag(btn, panel); michael@0: assertAreaPlacements(CustomizableUI.AREA_PANEL, placementsAfterAppend); michael@0: ok(!CustomizableUI.inDefaultState, "Should no longer be in default state."); michael@0: let palette = document.getElementById("customization-palette"); michael@0: simulateItemDrag(btn, palette); michael@0: ok(CustomizableUI.inDefaultState, "Should be in default state again."); michael@0: }); michael@0: michael@0: // Dragging an item from the palette to an empty panel should also work. michael@0: add_task(function() { michael@0: let widgetIds = getAreaWidgetIds(CustomizableUI.AREA_PANEL); michael@0: while (widgetIds.length) { michael@0: CustomizableUI.removeWidgetFromArea(widgetIds.shift()); michael@0: } michael@0: yield startCustomizing(); michael@0: let btn = document.getElementById("feed-button"); michael@0: let panel = document.getElementById(CustomizableUI.AREA_PANEL); michael@0: michael@0: assertAreaPlacements(panel.id, []); michael@0: michael@0: let placementsAfterAppend = ["feed-button"]; michael@0: simulateItemDrag(btn, panel); michael@0: assertAreaPlacements(CustomizableUI.AREA_PANEL, placementsAfterAppend); michael@0: ok(!CustomizableUI.inDefaultState, "Should no longer be in default state."); michael@0: let palette = document.getElementById("customization-palette"); michael@0: simulateItemDrag(btn, palette); michael@0: assertAreaPlacements(panel.id, []); michael@0: }); michael@0: michael@0: add_task(function asyncCleanup() { michael@0: yield endCustomizing(); michael@0: yield resetCustomization(); michael@0: });