diff --git a/common/content/tabs.js b/common/content/tabs.js index 6df15a8a..52dc762b 100644 --- a/common/content/tabs.js +++ b/common/content/tabs.js @@ -852,7 +852,8 @@ var Tabs = Module("tabs", { commands.add(["tabopen", "t[open]", "tabnew"], "Open one or more URLs in a new tab", function (args) { - dactyl.open(args[0] || "about:blank", { from: "tabopen", where: dactyl.NEW_TAB, background: args.bang }); + dactyl.open(args[0] || "about:blank", + { from: "tabopen", where: dactyl.NEW_TAB, background: args.bang }); }, { bang: true, completer: function (context) completion.url(context), diff --git a/common/modules/base.jsm b/common/modules/base.jsm index 77b35d81..145c3099 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -972,10 +972,14 @@ Class.prototype = { if (self.stale || util.rehashing && !isinstance(Cu.getGlobalForObject(callback), ["BackstagePass"])) return; + self.timeouts.splice(self.timeouts.indexOf(timer), 1); util.trapErrors(callback, self); } - return services.Timer(timeout_notify, timeout || 0, services.Timer.TYPE_ONE_SHOT); + let timer = services.Timer(timeout_notify, timeout || 0, services.Timer.TYPE_ONE_SHOT); + this.timeouts.push(timer); + return timer; }, + timeouts: [], /** * Updates this instance with the properties of the given objects. diff --git a/common/modules/javascript.jsm b/common/modules/javascript.jsm index 5360a1ca..e690926a 100644 --- a/common/modules/javascript.jsm +++ b/common/modules/javascript.jsm @@ -102,7 +102,7 @@ var JavaScript = Module("javascript", { let completions = [k for (k in this.iter(obj, toplevel))]; if (obj === this.modules) // Hack. - completions = completions.concat([k for (k in this.iter(this.modules.jsmodules, toplevel))]); + completions = array.uniq(completions.concat([k for (k in this.iter(this.modules.jsmodules, toplevel))])); return completions; }, @@ -620,10 +620,10 @@ var JavaScript = Module("javascript", { * enumerable by any standard method. */ globalNames: Class.Memoize(function () let (self = this) array.uniq([ - "Array", "ArrayBuffer", "AttributeName", "Boolean", "Components", + "Array", "ArrayBuffer", "AttributeName", "Audio", "Boolean", "Components", "CSSFontFaceStyleDecl", "CSSGroupRuleRuleList", "CSSNameSpaceRule", - "CSSRGBColor", "CSSRect", "ComputedCSSStyleDeclaration", "Date", - "Error", "EvalError", "Float32Array", "Float64Array", "Function", + "CSSRGBColor", "CSSRect", "ComputedCSSStyleDeclaration", "Date", "Error", + "EvalError", "File", "Float32Array", "Float64Array", "Function", "HTMLDelElement", "HTMLInsElement", "HTMLSpanElement", "Infinity", "InnerModalContentWindow", "InnerWindow", "Int16Array", "Int32Array", "Int8Array", "InternalError", "Iterator", "JSON", "KeyboardEvent",