tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 });