tor-browser

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

browser_aboutdebugging_telemetry_navigate.js (1961B)


      1 /* Any copyright is dedicated to the Public Domain.
      2 * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 /* import-globals-from helper-telemetry.js */
      6 Services.scriptloader.loadSubScript(
      7  CHROME_URL_ROOT + "helper-telemetry.js",
      8  this
      9 );
     10 
     11 /**
     12 * Check that telemetry events are recorded when navigating between different
     13 * about:debugging pages.
     14 */
     15 add_task(async function () {
     16  // enable USB devices mocks
     17  const mocks = new Mocks();
     18 
     19  setupTelemetryTest();
     20 
     21  const { tab, document, window } = await openAboutDebugging();
     22  await selectThisFirefoxPage(document, window.AboutDebugging.store);
     23 
     24  const sessionId = getOpenEventSessionId();
     25  ok(!isNaN(sessionId), "Open event has a valid session id");
     26 
     27  info("Navigate to 'Connect' page");
     28  document.location.hash = "#/connect";
     29  await waitUntil(() => document.querySelector(".qa-connect-page"));
     30  checkSelectPageEvent("connect", sessionId);
     31 
     32  info("Navigate to 'USB device runtime' page");
     33  await navigateToUSBRuntime(mocks, document);
     34  checkSelectPageEvent("runtime", sessionId);
     35  await waitForAboutDebuggingRequests(window.AboutDebugging.store);
     36 
     37  await removeTab(tab);
     38 });
     39 
     40 function checkSelectPageEvent(expectedType, expectedSessionId) {
     41  const evts = readAboutDebuggingEvents().filter(
     42    e => e.method === "select_page"
     43  );
     44  is(evts.length, 1, "Exactly one select_page event recorded");
     45  is(
     46    evts[0].extras.page_type,
     47    expectedType,
     48    "Select page event has the expected type"
     49  );
     50  is(
     51    evts[0].extras.session_id,
     52    expectedSessionId,
     53    "Select page event has the expected session"
     54  );
     55 }
     56 
     57 async function navigateToUSBRuntime(mocks, doc) {
     58  mocks.createUSBRuntime("1337id", {
     59    deviceName: "Fancy Phone",
     60    name: "Lorem ipsum",
     61  });
     62  mocks.emitUSBUpdate();
     63  await connectToRuntime("Fancy Phone", doc);
     64  // navigate to it via URL
     65  doc.location.hash = "#/runtime/1337id";
     66  await waitUntil(() => doc.querySelector(".qa-runtime-page"));
     67 }