tor-browser

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

browser_net_overrides_with_debugger.js (5209B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /* import-globals-from network-overrides-test-helpers.js */
      7 Services.scriptloader.loadSubScript(
      8  CHROME_URL_ROOT + "network-overrides-test-helpers.js",
      9  this
     10 );
     11 
     12 Services.scriptloader.loadSubScript(
     13  "chrome://mochitests/content/browser/devtools/client/debugger/test/mochitest/shared-head.js",
     14  this
     15 );
     16 
     17 /**
     18 * Test network override updates between the network monitor and the debugger.
     19 */
     20 
     21 // From Debugger to Netmonitor:
     22 // - add override in the debugger
     23 // - switch to netmonitor
     24 // - check override is displayed and remove it
     25 // - switch back to debugger and check the override is removed
     26 add_task(async function setOverrideInDebugger_removeOverrideInNetmonitor() {
     27  const { monitor, document } = await setupNetworkOverridesTest();
     28  const toolbox = monitor.toolbox;
     29 
     30  info("Switch to debugger and setup an override for a script");
     31  await toolbox.selectTool("jsdebugger");
     32  const dbg = createDebuggerContext(toolbox);
     33 
     34  await waitForSourcesInSourceTree(dbg, ["script.js"], {
     35    noExpand: false,
     36  });
     37 
     38  let overrides = [
     39    ...findAllElementsWithSelector(dbg, ".has-network-override"),
     40  ];
     41  is(overrides.length, 0, "No override is displayed in the debugger");
     42 
     43  info("Select script.js tree node, and add override");
     44  await selectSourceFromSourceTree(dbg, "script.js");
     45 
     46  const path = prepareFilePicker("script-override.js", window);
     47  await triggerSourceTreeContextMenu(
     48    dbg,
     49    findSourceNodeWithText(dbg, "script.js"),
     50    "#node-menu-overrides"
     51  );
     52  await writeTextContentToPath(OVERRIDDEN_SCRIPT, path);
     53 
     54  overrides = [...findAllElementsWithSelector(dbg, ".has-network-override")];
     55  is(overrides.length, 1, "An override is now displayed in the debugger");
     56 
     57  info("Switch back to netmonitor and check if the script is overridden");
     58  await toolbox.selectTool("netmonitor");
     59  const scriptRequest = document.querySelectorAll(".request-list-item")[1];
     60 
     61  // Assert override column is checked but disabled in context menu
     62  await assertOverrideColumnStatus(monitor, { visible: true });
     63  assertOverrideCellStatus(scriptRequest, { overridden: true });
     64  const overrideCell = scriptRequest.querySelector(".requests-list-override");
     65  ok(
     66    overrideCell.getAttribute("title").includes("script-override.js"),
     67    "The override icon's title contains the overridden path"
     68  );
     69 
     70  // Remove Network override
     71  await removeNetworkOverride(monitor, scriptRequest);
     72  ok(
     73    !scriptRequest.querySelector(".requests-list-override"),
     74    "There is no override cell"
     75  );
     76 
     77  info("Switch back to debugger and check the override was removed");
     78  await toolbox.selectTool("jsdebugger");
     79  overrides = [...findAllElementsWithSelector(dbg, ".has-network-override")];
     80  is(overrides.length, 0, "No override is displayed in the debugger");
     81 
     82  info("Switch back to netmonitor and tear down the test");
     83  await toolbox.selectTool("netmonitor");
     84 
     85  return teardown(monitor);
     86 });
     87 
     88 // From Netmonitor to Debugger:
     89 // - add override in the netmonitor
     90 // - switch to debugger
     91 // - check override is displayed and remove it
     92 // - switch back to netmonitor and check the override is removed
     93 add_task(async function setOverrideInNetmonitor_removeOverrideInDebugger() {
     94  const { monitor, document } = await setupNetworkOverridesTest();
     95  const toolbox = monitor.toolbox;
     96 
     97  let scriptRequest = document.querySelectorAll(".request-list-item")[1];
     98 
     99  info("Set a network override for the script request");
    100  const overrideFileName = "script-override.js";
    101  await setNetworkOverride(
    102    monitor,
    103    scriptRequest,
    104    overrideFileName,
    105    OVERRIDDEN_SCRIPT
    106  );
    107 
    108  info("Check that the script request is displayed as overridden");
    109  // Assert override column is checked but disabled in context menu
    110  await assertOverrideColumnStatus(monitor, { visible: true });
    111  assertOverrideCellStatus(scriptRequest, { overridden: true });
    112 
    113  info("Switch to debugger and check the override for a script");
    114  await toolbox.selectTool("jsdebugger");
    115  const dbg = createDebuggerContext(toolbox);
    116 
    117  await waitForSourcesInSourceTree(dbg, ["script.js"], {
    118    noExpand: false,
    119  });
    120 
    121  let overrides = [
    122    ...findAllElementsWithSelector(dbg, ".has-network-override"),
    123  ];
    124  is(overrides.length, 1, "An override is displayed in the debugger");
    125 
    126  info("Select script.js tree node, and remove the override");
    127  await selectSourceFromSourceTree(dbg, "script.js");
    128 
    129  const removed = waitForDispatch(dbg.toolbox.store, "REMOVE_NETWORK_OVERRIDE");
    130  await triggerSourceTreeContextMenu(
    131    dbg,
    132    findSourceNodeWithText(dbg, "script.js"),
    133    "#node-menu-overrides"
    134  );
    135  await removed;
    136 
    137  overrides = [...findAllElementsWithSelector(dbg, ".has-network-override")];
    138  is(
    139    overrides.length,
    140    0,
    141    "The override is no longer displayed in the debugger"
    142  );
    143 
    144  info("Switch back to netmonitor and check if the script is overridden");
    145  await toolbox.selectTool("netmonitor");
    146  scriptRequest = document.querySelectorAll(".request-list-item")[1];
    147 
    148  // Assert override column is now hidden
    149  await assertOverrideColumnStatus(monitor, { visible: false });
    150 
    151  return teardown(monitor);
    152 });