tor-browser

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

browser_net_column-resize-fit.js (2886B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /**
      7 * Tests resizing of columns in NetMonitor.
      8 */
      9 add_task(async function () {
     10  // Reset visibleColumns so we only get the default ones
     11  // and not all that are set in head.js
     12  Services.prefs.clearUserPref("devtools.netmonitor.visibleColumns");
     13 
     14  // Init network monitor
     15  const { monitor } = await initNetMonitor(SIMPLE_URL, {
     16    requestCount: 1,
     17  });
     18  info("Starting test... ");
     19 
     20  const { document } = monitor.panelWin;
     21 
     22  const visibleColumns = getCurrentVisibleColumns(monitor);
     23 
     24  // Wait for network events (to have some requests in the table)
     25  const wait = waitForNetworkEvents(monitor, 1);
     26  await reloadBrowser();
     27  await wait;
     28 
     29  info("Testing column resize to fit using double-click on draggable resizer");
     30  const fileHeader = document.querySelector(`#requests-list-file-header-box`);
     31  const fileColumnResizer = fileHeader.querySelector(".column-resizer");
     32 
     33  EventUtils.sendMouseEvent({ type: "dblclick" }, fileColumnResizer);
     34 
     35  // After resize - get fresh prefs for tests.
     36  let columnsData = JSON.parse(
     37    Services.prefs.getCharPref("devtools.netmonitor.columnsData")
     38  );
     39 
     40  // `File` column before resize: 25%, after resize: 11.25%
     41  // `Transferred` column before resize: 10%, after resize: 10%
     42  checkColumnsData(columnsData, "file", 12);
     43  checkSumOfVisibleColumns(columnsData, visibleColumns);
     44 
     45  info(
     46    "Testing column resize to fit using context menu `Resize Column To Fit Content`"
     47  );
     48 
     49  // Resizing `transferred` column.
     50  EventUtils.sendMouseEvent(
     51    { type: "contextmenu" },
     52    document.querySelector("#requests-list-transferred-button")
     53  );
     54 
     55  await selectContextMenuItem(
     56    monitor,
     57    "request-list-header-resize-column-to-fit-content"
     58  );
     59 
     60  columnsData = JSON.parse(
     61    Services.prefs.getCharPref("devtools.netmonitor.columnsData")
     62  );
     63 
     64  // `Transferred` column before resize: 10%, after resize: 2.97%
     65  checkColumnsData(columnsData, "transferred", 3);
     66  checkSumOfVisibleColumns(columnsData, visibleColumns);
     67 
     68  // Done: clean up.
     69  return teardown(monitor);
     70 });
     71 
     72 function checkColumnsData(columnsData, column, expectedWidth) {
     73  const width = getWidthFromPref(columnsData, column);
     74  const widthsDiff = Math.abs(width - expectedWidth);
     75  Assert.less(
     76    widthsDiff,
     77    2,
     78    `Column ${column} has expected size. Got ${width}, Expected ${expectedWidth}`
     79  );
     80 }
     81 
     82 function checkSumOfVisibleColumns(columnsData, visibleColumns) {
     83  let sum = 0;
     84  visibleColumns.forEach(column => {
     85    sum += getWidthFromPref(columnsData, column);
     86  });
     87  sum = Math.round(sum);
     88  is(sum, 100, "All visible columns cover 100%.");
     89 }
     90 
     91 function getWidthFromPref(columnsData, column) {
     92  const widthInPref = columnsData.find(function (element) {
     93    return element.name === column;
     94  }).width;
     95  return widthInPref;
     96 }