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 }