tor-browser

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

memory-helpers.js (1872B)


      1 /* exported Task, startServerAndGetSelectedTabMemory, destroyServerAndFinish,
      2   waitForTime, waitUntil */
      3 "use strict";
      4 
      5 const { require } = ChromeUtils.importESModule(
      6  "resource://devtools/shared/loader/Loader.sys.mjs"
      7 );
      8 const {
      9  CommandsFactory,
     10 } = require("resource://devtools/shared/commands/commands-factory.js");
     11 
     12 // Always log packets when running tests.
     13 Services.prefs.setBoolPref("devtools.debugger.log", true);
     14 var gReduceTimePrecision = Services.prefs.getBoolPref(
     15  "privacy.reduceTimerPrecision"
     16 );
     17 Services.prefs.setBoolPref("privacy.reduceTimerPrecision", false);
     18 SimpleTest.registerCleanupFunction(function () {
     19  Services.prefs.clearUserPref("devtools.debugger.log");
     20  Services.prefs.setBoolPref(
     21    "privacy.reduceTimerPrecision",
     22    gReduceTimePrecision
     23  );
     24 });
     25 
     26 async function getTargetForSelectedTab() {
     27  const browserWindow = Services.wm.getMostRecentBrowserWindow();
     28  const commands = await CommandsFactory.forTab(
     29    browserWindow.gBrowser.selectedTab
     30  );
     31  await commands.targetCommand.startListening();
     32 
     33  // Retrieve the target of the test document
     34  const targets = await commands.targetCommand.getAllTargets([
     35    commands.targetCommand.TYPES.FRAME,
     36  ]);
     37 
     38  return targets.find(t => t.url !== "chrome://mochikit/content/harness.xhtml");
     39 }
     40 
     41 async function startServerAndGetSelectedTabMemory() {
     42  const target = await getTargetForSelectedTab();
     43  const memory = await target.getFront("memory");
     44  return { memory, target };
     45 }
     46 
     47 async function destroyServerAndFinish(target) {
     48  await target.destroy();
     49  SimpleTest.finish();
     50 }
     51 
     52 function waitForTime(ms) {
     53  return new Promise(resolve => {
     54    setTimeout(resolve, ms);
     55  });
     56 }
     57 
     58 function waitUntil(predicate) {
     59  if (predicate()) {
     60    return Promise.resolve(true);
     61  }
     62  return new Promise(resolve =>
     63    setTimeout(() => waitUntil(predicate).then(() => resolve(true)), 10)
     64  );
     65 }