mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-05 08:35:26 +00:00
4ca92d7e54
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.
77 lines
2.7 KiB
JavaScript
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);
|