diff --git a/common/components/commandline-handler.js b/common/components/commandline-handler.js index 3fd67be0..91dc31bb 100644 --- a/common/components/commandline-handler.js +++ b/common/components/commandline-handler.js @@ -6,28 +6,27 @@ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); -const Name = Components.classes["@dactyl.googlecode.com/base/dactyl"] - .getService().wrappedJSObject.name; -const name = Name.toLowerCase(); function CommandLineHandler() { this.wrappedJSObject = this; } CommandLineHandler.prototype = { - classDescription: Name + " Command-line Handler", + classDescription: "Dactyl Command-line Handler", classID: Components.ID("{16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}"), - contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=" + name, + contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=dactyl", _xpcom_categories: [{ category: "command-line-handler", - entry: "m-" + name + entry: "m-dactyl" }], QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsICommandLineHandler]), handle: function (commandLine) { + let name = Components.classes["@dactyl.googlecode.com/base/dactyl"] + .getService().wrappedJSObject.name; // TODO: handle remote launches differently? try { this.optionValue = commandLine.handleFlagWithParam(name, false); diff --git a/common/components/protocols.js b/common/components/protocols.js index db043541..eb011d3f 100644 --- a/common/components/protocols.js +++ b/common/components/protocols.js @@ -109,6 +109,7 @@ ChromeData.prototype = { }; function Dactyl() { + Dactyl.prototype.__proto__ = Cc["@dactyl.googlecode.com/base/dactyl"].getService().wrappedJSObject; this.wrappedJSObject = this; this.HELP_TAGS = {}; @@ -131,8 +132,6 @@ Dactyl.prototype = { } }, - __proto__: Cc["@dactyl.googlecode.com/base/dactyl"].getService().wrappedJSObject, - init: function (obj) { for each (let prop in ["HELP_TAGS", "FILE_MAP", "OVERLAY_MAP"]) { this[prop] = this[prop].constructor(); diff --git a/common/content/dactyl.js b/common/content/dactyl.js index 62c44361..a8c03a8b 100644 --- a/common/content/dactyl.js +++ b/common/content/dactyl.js @@ -1098,12 +1098,18 @@ const Dactyl = Module("dactyl", { */ parseCommandLine: function (cmdline) { const options = [ - [["+u"], commands.OPTIONS_STRING], - [["++noplugin"], commands.OPTIONS_NOARG], - [["++cmd"], commands.OPTIONS_STRING, null, null, true], - [["+c"], commands.OPTIONS_STRING, null, null, true] - ]; - return commands.parseArgs(cmdline, options, "*"); + [["+u"], CommandOption.STRING], + [["++noplugin"], CommandOption.NOARG], + [["++cmd"], CommandOption.STRING, null, null, true], + [["+c"], CommandOption.STRING, null, null, true] + ].map(CommandOption.fromArray, CommandOption); + try { + return commands.parseArgs(cmdline, options, "*"); + } + catch (e) { + dactyl.reportError(e, true); + return []; + } }, variableReference: function (string) {