1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 10:47:59 +01:00

Finish moving dactyl.dump to util from last commit, and store the last 15 intercepted stack traces.

This commit is contained in:
Kris Maglione
2010-10-06 18:08:07 -04:00
parent 312244c00c
commit 8c98658e74
12 changed files with 34 additions and 36 deletions

View File

@@ -1964,7 +1964,7 @@ const ItemList = Class("ItemList", {
//if (index == 0) //if (index == 0)
// this.start = now; // this.start = now;
//if (index == Math.min(len - 1, 100)) //if (index == Math.min(len - 1, 100))
// dactyl.dump({ time: Date.now() - this.start }); // util.dump({ time: Date.now() - this.start });
}, },
onEvent: function onEvent(event) false onEvent: function onEvent(event) false

View File

@@ -59,7 +59,7 @@ const Dactyl = Module("dactyl", {
autocommands.trigger("LeavePre", {}); autocommands.trigger("LeavePre", {});
storage.saveAll(); storage.saveAll();
dactyl.triggerObserver("shutdown", null); dactyl.triggerObserver("shutdown", null);
dactyl.dump("All dactyl modules destroyed\n"); util.dump("All dactyl modules destroyed\n");
autocommands.trigger("Leave", {}); autocommands.trigger("Leave", {});
}, },
@@ -1897,7 +1897,7 @@ const Dactyl = Module("dactyl", {
dactyl.commandLineOptions.noPlugins = "++noplugin" in args; dactyl.commandLineOptions.noPlugins = "++noplugin" in args;
dactyl.commandLineOptions.postCommands = args["+c"]; dactyl.commandLineOptions.postCommands = args["+c"];
dactyl.commandLineOptions.preCommands = args["++cmd"]; dactyl.commandLineOptions.preCommands = args["++cmd"];
dactyl.dump("Processing command-line option: " + commandline); util.dump("Processing command-line option: " + commandline);
} }
dactyl.log("Command-line options: " + util.objectToString(dactyl.commandLineOptions), 3); dactyl.log("Command-line options: " + util.objectToString(dactyl.commandLineOptions), 3);

View File

@@ -88,7 +88,7 @@ const Events = Module("events", {
}, },
destroy: function () { destroy: function () {
dactyl.dump("Removing all event listeners"); util.dump("Removing all event listeners");
for (let args in values(this.sessionListeners)) for (let args in values(this.sessionListeners))
args[0].removeEventListener.apply(args[0], args.slice(1)); args[0].removeEventListener.apply(args[0], args.slice(1));
}, },
@@ -571,7 +571,7 @@ const Events = Module("events", {
* @returns {boolean} * @returns {boolean}
*/ */
waitForPageLoad: function () { waitForPageLoad: function () {
//dactyl.dump("start waiting in loaded state: " + buffer.loaded); //util.dump("start waiting in loaded state: " + buffer.loaded);
util.threadYield(true); // clear queue util.threadYield(true); // clear queue
if (buffer.loaded == 1) if (buffer.loaded == 1)
@@ -584,7 +584,7 @@ const Events = Module("events", {
while (now = Date.now(), now < end) { while (now = Date.now(), now < end) {
util.threadYield(); util.threadYield();
//if ((now - start) % 1000 < 10) //if ((now - start) % 1000 < 10)
// dactyl.dump("waited: " + (now - start) + " ms"); // util.dump("waited: " + (now - start) + " ms");
if (!events.feedingKeys) if (!events.feedingKeys)
return false; return false;
@@ -602,7 +602,7 @@ const Events = Module("events", {
let ret = (buffer.loaded == 1); let ret = (buffer.loaded == 1);
if (!ret) if (!ret)
dactyl.echoerr("Page did not load completely in " + maxWaitTime + " seconds. Macro stopped."); dactyl.echoerr("Page did not load completely in " + maxWaitTime + " seconds. Macro stopped.");
//dactyl.dump("done waiting: " + ret); //util.dump("done waiting: " + ret);
// sometimes the input widget had focus when replaying a macro // sometimes the input widget had focus when replaying a macro
// maybe this call should be moved somewhere else? // maybe this call should be moved somewhere else?

View File

@@ -62,6 +62,8 @@ const JavaScript = Module("javascript", {
return []; return [];
let completions = [k for (k in this.iter(obj, toplevel))]; let completions = [k for (k in this.iter(obj, toplevel))];
if (obj == modules) // Hack.
completions = completions.concat([k for (k in this.iter(jsmodules, toplevel))]);
return completions; return completions;
}, },

View File

@@ -82,7 +82,6 @@ window.addEventListener("load", function onLoad() {
}); });
}); });
function dump(str) window.dump(String.replace(str, /\n?$/, "\n").replace(/^/m, services.get("dactyl:").name + ": "));
const start = Date.now(); const start = Date.now();
const deferredInit = { load: [] }; const deferredInit = { load: [] };
const seen = set(); const seen = set();
@@ -136,7 +135,7 @@ window.addEventListener("load", function onLoad() {
fn(); fn();
} }
catch (e) { catch (e) {
dump("Loading " + (module && module.className) + ": " + e + "\n" + (e.stack || "")); util.dump("Loading " + (module && module.className) + ": " + e + "\n" + (e.stack || ""));
} }
return modules[module.className]; return modules[module.className];
} }
@@ -145,7 +144,7 @@ window.addEventListener("load", function onLoad() {
deferredInit["load"].forEach(call); deferredInit["load"].forEach(call);
modules.times = update({}, defineModule.times); modules.times = update({}, defineModule.times);
dump("Loaded in " + (Date.now() - start) + "ms"); util.dump("Loaded in " + (Date.now() - start) + "ms");
}, false); }, false);
window.addEventListener("unload", function onUnload() { window.addEventListener("unload", function onUnload() {

View File

@@ -157,7 +157,6 @@ const QuickMarks = Module("quickmarks", {
commands.add(["qmarks"], commands.add(["qmarks"],
"Show all QuickMarks", "Show all QuickMarks",
function (args) { function (args) {
dactyl.dump(args);
args = args[0] || ""; args = args[0] || "";
// ignore invalid qmark characters unless there are no valid qmark chars // ignore invalid qmark characters unless there are no valid qmark chars

View File

@@ -137,7 +137,10 @@ function require(obj, name, from) {
} }
catch (e) { catch (e) {
dump("loading " + String.quote("resource://dactyl/" + name + ".jsm") + "\n"); dump("loading " + String.quote("resource://dactyl/" + name + ".jsm") + "\n");
dump(" " + e.fileName + ":" + e.lineNumber + ": " + e +"\n"); if (loaded.util)
util.reportError(e);
else
dump(" " + e.fileName + ":" + e.lineNumber + ": " + e +"\n");
} }
} }
@@ -151,7 +154,7 @@ defineModule("base", {
"isObject", "isString", "isSubclass", "iter", "iterAll", "keys", "isObject", "isString", "isSubclass", "iter", "iterAll", "keys",
"memoize", "properties", "requiresMainThread", "set", "update", "values" "memoize", "properties", "requiresMainThread", "set", "update", "values"
], ],
use: ["services"] use: ["services", "util"]
}); });
function Runnable(self, func, args) { function Runnable(self, func, args) {
@@ -697,12 +700,7 @@ Class.Property.prototype.init = function () {};
Class.extend = function extend(subclass, superclass, overrides) { Class.extend = function extend(subclass, superclass, overrides) {
subclass.superclass = superclass; subclass.superclass = superclass;
try { subclass.prototype = Object.create(superclass.prototype);
subclass.prototype = Object.create(superclass.prototype);
}
catch(e) {
dump(e + "\n" + String.replace(e.stack, /^/gm, " ") + "\n\n");
}
update(subclass.prototype, overrides); update(subclass.prototype, overrides);
subclass.prototype.constructor = subclass; subclass.prototype.constructor = subclass;
subclass.prototype._class_ = subclass; subclass.prototype._class_ = subclass;

View File

@@ -153,7 +153,8 @@ const Sanitizer = Module("sanitizer", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakR
catch (e) { catch (e) {
errors = errors || {}; errors = errors || {};
errors[itemName] = e; errors[itemName] = e;
dump("Error sanitizing " + itemName + ": " + e + "\n" + e.stack + "\n"); util.dump("Error sanitizing " + itemName);
util.reportError(e);
} }
} }
@@ -172,7 +173,8 @@ const Sanitizer = Module("sanitizer", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakR
catch (e) { catch (e) {
errors = errors || {}; errors = errors || {};
errors[itemName] = e; errors[itemName] = e;
dump("Error sanitizing " + itemName + ": " + e + "\n" + e.stack + "\n"); util.dump("Error sanitizing " + itemName);
util.reportError(e);
} }
return errors; return errors;
} }

View File

@@ -6,7 +6,8 @@
Components.utils.import("resource://dactyl/base.jsm"); Components.utils.import("resource://dactyl/base.jsm");
defineModule("services", { defineModule("services", {
exports: ["Services", "services"] exports: ["Services", "services"],
use: ["util"]
}); });
/** /**
@@ -72,7 +73,7 @@ const Services = Module("Services", {
} }
catch (e) { catch (e) {
// dactyl.log() is not defined at this time, so just dump any error // dactyl.log() is not defined at this time, so just dump any error
dump("Service creation failed for '" + classes + "': " + e + "\n"); util.dump("Service creation failed for '" + classes + "': " + e + "\n");
return null; return null;
} }
}, },

View File

@@ -299,7 +299,7 @@ const File = Class("File", {
file.initWithPath(expandedPath); file.initWithPath(expandedPath);
} }
catch (e) { catch (e) {
dump("dactyl: " + e + "\n" + String.replace(e.stack, /^/gm, "dactyl: ") + "\n"); util.reportError(e);
return null; return null;
} }
} }

View File

@@ -57,7 +57,6 @@ const Util = Module("Util", {
if (observers[target]) if (observers[target])
observers[target].call(obj, subject, data); observers[target].call(obj, subject, data);
}); });
this.dactyl.dump(String(obj), obj instanceof Ci.nsIObserver);
register("addObserver"); register("addObserver");
}, },
@@ -230,9 +229,6 @@ const Util = Module("Util", {
* Prints a message to the console. If <b>msg</b> is an object it is * Prints a message to the console. If <b>msg</b> is an object it is
* pretty printed. * pretty printed.
* *
* NOTE: the "browser.dom.window.dump.enabled" preference needs to be
* set.
*
* @param {string|Object} msg The message to print. * @param {string|Object} msg The message to print.
*/ */
dump: function dump_() { dump: function dump_() {
@@ -676,6 +672,8 @@ const Util = Module("Util", {
} }
}, },
maxErrors: 15,
errors: Class.memoize(function () []),
reportError: function (error) { reportError: function (error) {
if (Cu.reportError) if (Cu.reportError)
Cu.reportError(error); Cu.reportError(error);
@@ -686,16 +684,16 @@ const Util = Module("Util", {
stack: <>{String.replace(error.stack || Error().stack, /^/mg, "\t")}</> stack: <>{String.replace(error.stack || Error().stack, /^/mg, "\t")}</>
}); });
let errors = storage.newArray("errors", { store: false }); this.errors.push([new Date, obj + "\n" + obj.stack]);
errors.toString = function () [String(v[0]) + "\n" + v[1] for ([k, v] in this)].join("\n\n"); this.errors = this.errors.slice(-this.maxErrors);
errors.push([new Date, obj + obj.stack]); this.errors.toString = function () [k + "\n" + v for ([k, v] in array.iterValues(this))].join("\n\n");
util.dump(String(error)); this.dump(String(error));
util.dump(obj); this.dump(obj);
util.dump(""); this.dump("");
} }
catch (e) { catch (e) {
dump(e); this.dump(e);
} }
}, },

View File

@@ -240,7 +240,6 @@ const Config = Module("config", ConfigBase, {
}); });
}, },
completion: function () { completion: function () {
dactyl.dump("Load completion\n");
var searchRunning = false; // only until Firefox fixes https://bugzilla.mozilla.org/show_bug.cgi?id=510589 var searchRunning = false; // only until Firefox fixes https://bugzilla.mozilla.org/show_bug.cgi?id=510589
completion.location = function location(context) { completion.location = function location(context) {
if (!services.get("autoCompleteSearch")) if (!services.get("autoCompleteSearch"))