console_monitor.js (1026B)
1 /* eslint-env mozilla/chrome-script */ 2 3 let consoleListener; 4 5 function ConsoleListener() { 6 Services.console.registerListener(this); 7 } 8 9 ConsoleListener.prototype = { 10 callbacks: [], 11 12 observe: aMsg => { 13 if (!(aMsg instanceof Ci.nsIScriptError)) { 14 return; 15 } 16 17 let msg = { 18 cssSelectors: aMsg.cssSelectors, 19 errorMessage: aMsg.errorMessage, 20 sourceName: aMsg.sourceName, 21 lineNumber: aMsg.lineNumber, 22 columnNumber: aMsg.columnNumber, 23 category: aMsg.category, 24 windowID: aMsg.outerWindowID, 25 innerWindowID: aMsg.innerWindowID, 26 isScriptError: true, 27 isWarning: (aMsg.flags & Ci.nsIScriptError.warningFlag) === 1, 28 }; 29 30 sendAsyncMessage("monitor", msg); 31 }, 32 }; 33 34 addMessageListener("load", function (e) { 35 consoleListener = new ConsoleListener(); 36 sendAsyncMessage("ready", {}); 37 }); 38 39 addMessageListener("unload", function (e) { 40 Services.console.unregisterListener(consoleListener); 41 consoleListener = null; 42 sendAsyncMessage("unloaded", {}); 43 });