1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/devtools/tests/unit/head_devtools.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,43 @@ 1.4 +"use strict"; 1.5 +const Cc = Components.classes; 1.6 +const Ci = Components.interfaces; 1.7 +const Cu = Components.utils; 1.8 +const Cr = Components.results; 1.9 + 1.10 +Cu.import("resource://gre/modules/devtools/Loader.jsm"); 1.11 +Cu.import("resource://gre/modules/devtools/DevToolsUtils.jsm"); 1.12 + 1.13 +// Register a console listener, so console messages don't just disappear 1.14 +// into the ether. 1.15 +let errorCount = 0; 1.16 +let listener = { 1.17 + observe: function (aMessage) { 1.18 + errorCount++; 1.19 + try { 1.20 + // If we've been given an nsIScriptError, then we can print out 1.21 + // something nicely formatted, for tools like Emacs to pick up. 1.22 + var scriptError = aMessage.QueryInterface(Ci.nsIScriptError); 1.23 + dump(aMessage.sourceName + ":" + aMessage.lineNumber + ": " + 1.24 + scriptErrorFlagsToKind(aMessage.flags) + ": " + 1.25 + aMessage.errorMessage + "\n"); 1.26 + var string = aMessage.errorMessage; 1.27 + } catch (x) { 1.28 + // Be a little paranoid with message, as the whole goal here is to lose 1.29 + // no information. 1.30 + try { 1.31 + var string = "" + aMessage.message; 1.32 + } catch (x) { 1.33 + var string = "<error converting error message to string>"; 1.34 + } 1.35 + } 1.36 + 1.37 + // Make sure we exit all nested event loops so that the test can finish. 1.38 + while (DebuggerServer.xpcInspector.eventLoopNestLevel > 0) { 1.39 + DebuggerServer.xpcInspector.exitNestedEventLoop(); 1.40 + } 1.41 + do_throw("head_dbg.js got console message: " + string + "\n"); 1.42 + } 1.43 +}; 1.44 + 1.45 +let consoleService = Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService); 1.46 +consoleService.registerListener(listener);