tor-browser

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

head_dbg.js (2899B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 /* exported DevToolsClient, initTestDevToolsServer */
      7 
      8 const { loader, require } = ChromeUtils.importESModule(
      9  "resource://devtools/shared/loader/Loader.sys.mjs"
     10 );
     11 const xpcInspector = require("xpcInspector");
     12 const {
     13  DevToolsServer,
     14 } = require("resource://devtools/server/devtools-server.js");
     15 const {
     16  DevToolsClient,
     17 } = require("resource://devtools/client/devtools-client.js");
     18 // We need to require lazily since will be crashed if we load SocketListener too early
     19 // in xpc shell test due to SocketListener loads PSM module.
     20 loader.lazyRequireGetter(
     21  this,
     22  "SocketListener",
     23  "resource://devtools/shared/security/socket.js",
     24  true
     25 );
     26 
     27 // We do not want to log packets by default, because in some tests,
     28 // we can be sending large amounts of data. The test harness has
     29 // trouble dealing with logging all the data, and we end up with
     30 // intermittent time outs (e.g. bug 775924).
     31 // Services.prefs.setBoolPref("devtools.debugger.log", true);
     32 // Services.prefs.setBoolPref("devtools.debugger.log.verbose", true);
     33 // Enable remote debugging for the relevant tests.
     34 Services.prefs.setBoolPref("devtools.debugger.remote-enabled", true);
     35 
     36 // Convert an nsIScriptError 'logLevel' value into an appropriate string.
     37 function scriptErrorLogLevel(message) {
     38  switch (message.logLevel) {
     39    case Ci.nsIConsoleMessage.info:
     40      return "info";
     41    case Ci.nsIConsoleMessage.warn:
     42      return "warning";
     43    default:
     44      Assert.equal(message.logLevel, Ci.nsIConsoleMessage.error);
     45      return "error";
     46  }
     47 }
     48 
     49 // Register a console listener, so console messages don't just disappear
     50 // into the ether.
     51 var listener = {
     52  observe(message) {
     53    let string;
     54    try {
     55      message.QueryInterface(Ci.nsIScriptError);
     56      dump(
     57        message.sourceName +
     58          ":" +
     59          message.lineNumber +
     60          ": " +
     61          scriptErrorLogLevel(message) +
     62          ": " +
     63          message.errorMessage +
     64          "\n"
     65      );
     66      string = message.errorMessage;
     67    } catch (ex) {
     68      // Be a little paranoid with message, as the whole goal here is to lose
     69      // no information.
     70      try {
     71        string = "" + message.message;
     72      } catch (e) {
     73        string = "<error converting error message to string>";
     74      }
     75    }
     76 
     77    // Make sure we exit all nested event loops so that the test can finish.
     78    while (xpcInspector.eventLoopNestLevel > 0) {
     79      xpcInspector.exitNestedEventLoop();
     80    }
     81 
     82    info("head_dbg.js got console message: " + string + "\n");
     83  },
     84 };
     85 
     86 Services.console.registerListener(listener);
     87 
     88 /**
     89 * Initialize the testing devtools server.
     90 */
     91 function initTestDevToolsServer() {
     92  const { createRootActor } = require("xpcshell-test/testactors");
     93  DevToolsServer.setRootActor(createRootActor);
     94  DevToolsServer.init();
     95 }