tor-browser

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

browser_net_telemetry_persist_toggle_changed.js (2426B)


      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 the log persistence telemetry event
      8 */
      9 const { TelemetryTestUtils } = ChromeUtils.importESModule(
     10  "resource://testing-common/TelemetryTestUtils.sys.mjs"
     11 );
     12 
     13 function togglePersistLogsOption(monitor) {
     14  clickSettingsMenuItem(monitor, "persist-logs");
     15 }
     16 
     17 function ensurePersistLogsCheckedState(monitor, isChecked) {
     18  openSettingsMenu(monitor);
     19  const persistNode = getSettingsMenuItem(monitor, "persist-logs");
     20  return !!persistNode?.getAttribute("aria-checked") === isChecked;
     21 }
     22 
     23 add_task(async function () {
     24  const { monitor } = await initNetMonitor(SINGLE_GET_URL, { requestCount: 1 });
     25  info("Starting test... ");
     26 
     27  const { store, windowRequire } = monitor.panelWin;
     28  const Actions = windowRequire("devtools/client/netmonitor/src/actions/index");
     29 
     30  store.dispatch(Actions.batchEnable(false));
     31 
     32  await waitForAllNetworkUpdateEvents();
     33 
     34  // Clear all events
     35  Services.telemetry.clearEvents();
     36 
     37  // Ensure no events have been logged
     38  TelemetryTestUtils.assertNumberOfEvents(0);
     39 
     40  // Click on the toggle - "true" and make sure it was set to correct value
     41  let onPersistChanged = monitor.panelWin.api.once(TEST_EVENTS.PERSIST_CHANGED);
     42  togglePersistLogsOption(monitor);
     43  await waitUntil(() => ensurePersistLogsCheckedState(monitor, true));
     44  await onPersistChanged;
     45 
     46  // Click a second time - "false" and make sure it was set to correct value
     47  onPersistChanged = monitor.panelWin.api.once(TEST_EVENTS.PERSIST_CHANGED);
     48  togglePersistLogsOption(monitor);
     49  await waitUntil(() => ensurePersistLogsCheckedState(monitor, false));
     50  await onPersistChanged;
     51 
     52  const expectedEvents = [
     53    {
     54      category: "devtools.main",
     55      method: "persist_changed",
     56      object: "netmonitor",
     57      value: "true",
     58    },
     59    {
     60      category: "devtools.main",
     61      method: "persist_changed",
     62      object: "netmonitor",
     63      value: "false",
     64    },
     65  ];
     66 
     67  const filter = {
     68    category: "devtools.main",
     69    method: "persist_changed",
     70    object: "netmonitor",
     71  };
     72 
     73  await waitForAllNetworkUpdateEvents();
     74  // Will compare filtered events to event list above
     75  await TelemetryTestUtils.assertEvents(expectedEvents, filter);
     76 
     77  // Set Persist log preference back to false
     78  Services.prefs.setBoolPref("devtools.netmonitor.persistlog", false);
     79 
     80  return teardown(monitor);
     81 });