gecko-dev/webapprt/CommandLineHandler.js
J. Ryan Stinnett 4ca92d7e54 Bug 1203159 - Remove DevTools support from webapprt. r=myk
To enable resource://devtools, all DevTools files are consolidated at the app
level.  This means they are no longer available for sharing between multiple XUL
apps, such as browser and webapprt.  We'll need to devise a new method to bring
this support back to webapprt if desired.
2015-10-21 12:22:57 -05:00

77 lines
2.7 KiB
JavaScript

/* 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 Cc = Components.classes;
const Ci = Components.interfaces;
const Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
function CommandLineHandler() {}
CommandLineHandler.prototype = {
classID: Components.ID("{6d69c782-40a3-469b-8bfd-3ee366105a4a}"),
QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]),
handle: function handle(cmdLine) {
let args = Cc["@mozilla.org/hash-property-bag;1"].
createInstance(Ci.nsIWritablePropertyBag);
let inTestMode = this._handleTestMode(cmdLine, args);
if (inTestMode) {
// Open the mochitest shim window, which configures the runtime for tests.
Services.ww.openWindow(null,
"chrome://webapprt/content/mochitest.xul",
"_blank",
"chrome,dialog=no",
args);
} else {
// We're opening the window here in order to show it as soon as possible.
let window = Services.ww.openWindow(null,
"chrome://webapprt/content/webapp.xul",
"_blank",
"chrome,dialog=no,resizable,scrollbars,centerscreen",
null);
// Load the module to start up the app
Cu.import("resource://webapprt/modules/Startup.jsm");
startup(window).then(null, function (aError) {
dump("Error: " + aError + "\n");
Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit);
});
}
},
_handleTestMode: function _handleTestMode(cmdLine, args) {
// -test-mode [url]
let idx = cmdLine.findFlag("test-mode", true);
if (idx < 0)
return false;
let url;
let urlIdx = idx + 1;
if (urlIdx < cmdLine.length) {
let potentialURL = cmdLine.getArgument(urlIdx);
if (potentialURL && potentialURL[0] != "-") {
try {
url = Services.io.newURI(potentialURL, null, null);
} catch (err) {
throw Components.Exception(
"-test-mode argument is not a valid URL: " + potentialURL,
Components.results.NS_ERROR_INVALID_ARG);
}
cmdLine.removeArguments(urlIdx, urlIdx);
args.setProperty("url", url.spec);
}
}
cmdLine.removeArguments(idx, idx);
return true;
},
helpInfo : "",
};
var components = [CommandLineHandler];
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components);