]> git.donarmstrong.com Git - dactyl.git/blobdiff - common/components/commandline-handler.js
Import r6948 from upstream hg supporting Firefox up to 24.*
[dactyl.git] / common / components / commandline-handler.js
index 918d7bf300b8980c2d0d50e676f7c29224467b89..481cbcde083f3cb31895827ea49a9fa83e1ffd6f 100644 (file)
@@ -11,37 +11,69 @@ function reportError(e) {
 
 var global = this;
 var NAME = "command-line-handler";
-var Cc = Components.classes;
-var Ci = Components.interfaces;
-var Cu = Components.utils;
+var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
 
+function init() {
+    Cu.import("resource://dactyl/bootstrap.jsm");
+    require("config", global);
+    require("util", global);
+}
+
 function CommandLineHandler() {
     this.wrappedJSObject = this;
-
-    Cu.import("resource://dactyl/base.jsm");
-    require(global, "util");
-    require(global, "config");
 }
 CommandLineHandler.prototype = {
 
-    classDescription: "Dactyl Command-line Handler",
+    classDescription: "Dactyl command line Handler",
 
     classID: Components.ID("{16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}"),
 
     contractID: "@mozilla.org/commandlinehandler/general-startup;1?type=dactyl",
 
-    _xpcom_categories: [{
-        category: "command-line-handler",
-        entry: "m-dactyl"
-    }],
+    _xpcom_categories: [
+        {
+            category: "command-line-handler",
+            entry: "m-dactyl"
+        },
 
-    QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsICommandLineHandler]),
+        // FIXME: Belongs elsewhere
+         {
+            category: "profile-after-change",
+            entry: "m-dactyl"
+        }
+    ],
+
+    observe: function observe(subject, topic, data) {
+        if (topic === "profile-after-change") {
+            init();
+            require(global, "main");
+        }
+    },
+
+    QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsICommandLineHandler]),
 
     handle: function (commandLine) {
+        init();
+        try {
+            var remote = commandLine.handleFlagWithParam(config.name + "-remote", false);
+        }
+        catch (e) {
+            util.dump("option '-" + config.name + "-remote' requires an argument\n");
+        }
+
+        try {
+            if (remote) {
+                commandLine.preventDefault = true;
+                require(global, "services");
+                util.dactyl.execute(remote);
+            }
+        }
+        catch (e) {
+            util.reportError(e);
+        }
 
-        // TODO: handle remote launches differently?
         try {
             this.optionValue = commandLine.handleFlagWithParam(config.name, false);
         }
@@ -59,4 +91,4 @@ else
     var NSGetModule = XPCOMUtils.generateNSGetModule([CommandLineHandler]);
 var EXPORTED_SYMBOLS = ["NSGetFactory", "global"];
 
-// vim: set fdm=marker sw=4 ts=4 et:
+// vim: set fdm=marker sw=4 sts=4 ts=8 et: