From 89e2259a7fb51f8562047f339636a5fc8efde0c6 Mon Sep 17 00:00:00 2001 From: Brian Grinstead Date: Thu, 30 Apr 2015 07:30:22 -0700 Subject: [PATCH] Bug 1159929 - Cache the pref value for devtools.dump.emit in event emitter;r=fitzgen --- toolkit/devtools/event-emitter.js | 116 ++++++++++++++++-------------- 1 file changed, 63 insertions(+), 53 deletions(-) diff --git a/toolkit/devtools/event-emitter.js b/toolkit/devtools/event-emitter.js index 3c40f674d23..a2bbb192a19 100644 --- a/toolkit/devtools/event-emitter.js +++ b/toolkit/devtools/event-emitter.js @@ -25,6 +25,16 @@ module.exports = EventEmitter; const { Cu, components } = require("chrome"); const Services = require("Services"); const promise = require("promise"); +let loggingEnabled = true; + +if (!isWorker) { + loggingEnabled = Services.prefs.getBoolPref("devtools.dump.emit"); + Services.prefs.addObserver("devtools.dump.emit", { + observe: () => { + loggingEnabled = Services.prefs.getBoolPref("devtools.dump.emit"); + } + }, false); +} /** * Decorate an object with event emitter functionality. @@ -147,60 +157,60 @@ EventEmitter.prototype = { }, logEvent: function(aEvent, args) { - let logging = isWorker ? true : Services.prefs.getBoolPref("devtools.dump.emit"); - - if (logging) { - let caller, func, path; - if (!isWorker) { - caller = components.stack.caller.caller; - func = caller.name; - let file = caller.filename; - if (file.includes(" -> ")) { - file = caller.filename.split(/ -> /)[1]; - } - path = file + ":" + caller.lineNumber; - } - - let argOut = "("; - if (args.length === 1) { - argOut += aEvent; - } - - let out = "EMITTING: "; - - // We need this try / catch to prevent any dead object errors. - try { - for (let i = 1; i < args.length; i++) { - if (i === 1) { - argOut = "(" + aEvent + ", "; - } else { - argOut += ", "; - } - - let arg = args[i]; - argOut += arg; - - if (arg && arg.nodeName) { - argOut += " (" + arg.nodeName; - if (arg.id) { - argOut += "#" + arg.id; - } - if (arg.className) { - argOut += "." + arg.className; - } - argOut += ")"; - } - } - } catch(e) { - // Object is dead so the toolbox is most likely shutting down, - // do nothing. - } - - argOut += ")"; - out += "emit" + argOut + " from " + func + "() -> " + path + "\n"; - - dump(out); + if (!loggingEnabled) { + return; } + + let caller, func, path; + if (!isWorker) { + caller = components.stack.caller.caller; + func = caller.name; + let file = caller.filename; + if (file.includes(" -> ")) { + file = caller.filename.split(/ -> /)[1]; + } + path = file + ":" + caller.lineNumber; + } + + let argOut = "("; + if (args.length === 1) { + argOut += aEvent; + } + + let out = "EMITTING: "; + + // We need this try / catch to prevent any dead object errors. + try { + for (let i = 1; i < args.length; i++) { + if (i === 1) { + argOut = "(" + aEvent + ", "; + } else { + argOut += ", "; + } + + let arg = args[i]; + argOut += arg; + + if (arg && arg.nodeName) { + argOut += " (" + arg.nodeName; + if (arg.id) { + argOut += "#" + arg.id; + } + if (arg.className) { + argOut += "." + arg.className; + } + argOut += ")"; + } + } + } catch(e) { + // Object is dead so the toolbox is most likely shutting down, + // do nothing. + } + + argOut += ")"; + out += "emit" + argOut + " from " + func + "() -> " + path + "\n"; + + dump(out); }, };