summaryrefslogtreecommitdiff
path: root/b2g/components/BootstrapCommandLine.js
diff options
context:
space:
mode:
Diffstat (limited to 'b2g/components/BootstrapCommandLine.js')
-rw-r--r--b2g/components/BootstrapCommandLine.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/b2g/components/BootstrapCommandLine.js b/b2g/components/BootstrapCommandLine.js
new file mode 100644
index 0000000000..24d9f5461e
--- /dev/null
+++ b/b2g/components/BootstrapCommandLine.js
@@ -0,0 +1,52 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/AppsUtils.jsm");
+
+function BootstrapCommandlineHandler() {
+ this.wrappedJSObject = this;
+ this.startManifestURL = null;
+}
+
+BootstrapCommandlineHandler.prototype = {
+ bailout: function(aMsg) {
+ dump("************************************************************\n");
+ dump("* /!\\ " + aMsg + "\n");
+ dump("************************************************************\n");
+ let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+ appStartup.quit(appStartup.eForceQuit);
+ },
+
+ handle: function(aCmdLine) {
+ this.startManifestURL = null;
+
+ try {
+ // Returns null if the argument was not specified. Throws
+ // NS_ERROR_INVALID_ARG if there is no parameter specified (because
+ // it was the last argument or the next argument starts with '-').
+ // However, someone could still explicitly pass an empty argument!
+ this.startManifestURL = aCmdLine.handleFlagWithParam("start-manifest", false);
+ } catch(e) {
+ return;
+ }
+
+ if (!this.startManifestURL) {
+ return;
+ }
+
+ if (!isAbsoluteURI(this.startManifestURL)) {
+ this.bailout("The start manifest url must be absolute.");
+ return;
+ }
+ },
+
+ helpInfo: "--start-manifest=manifest_url",
+ classID: Components.ID("{fd663ec8-cf3f-4c2b-aacb-17a6915ccb44}"),
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler])
+};
+
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory([BootstrapCommandlineHandler]);