tor-browser

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

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