diff options
Diffstat (limited to 'devtools/client/webide/components')
-rw-r--r-- | devtools/client/webide/components/moz.build | 10 | ||||
-rw-r--r-- | devtools/client/webide/components/webideCli.js | 58 | ||||
-rw-r--r-- | devtools/client/webide/components/webideComponents.manifest | 4 |
3 files changed, 72 insertions, 0 deletions
diff --git a/devtools/client/webide/components/moz.build b/devtools/client/webide/components/moz.build new file mode 100644 index 000000000..d4047c295 --- /dev/null +++ b/devtools/client/webide/components/moz.build @@ -0,0 +1,10 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +EXTRA_COMPONENTS += [ + 'webideCli.js', + 'webideComponents.manifest', +] diff --git a/devtools/client/webide/components/webideCli.js b/devtools/client/webide/components/webideCli.js new file mode 100644 index 000000000..0f75da2c4 --- /dev/null +++ b/devtools/client/webide/components/webideCli.js @@ -0,0 +1,58 @@ +/* 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/. */ + +"use strict"; + +const Ci = Components.interfaces; +const Cu = Components.utils; + +const { XPCOMUtils } = Cu.import("resource://gre/modules/XPCOMUtils.jsm", {}); + +XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); + +/** + * Handles --webide command line option. + */ + +function webideCli() { } + +webideCli.prototype = { + handle: function (cmdLine) { + if (!cmdLine.handleFlag("webide", false)) { + return; + } + + // If --webide is used remotely, we don't want to open + // a new tab. + // + // If --webide is used for a new Firefox instance, we + // want to open webide only. + cmdLine.preventDefault = true; + + let win = Services.wm.getMostRecentWindow("devtools:webide"); + if (win) { + win.focus(); + } else { + win = Services.ww.openWindow(null, + "chrome://webide/content/", + "webide", + "chrome,centerscreen,resizable,dialog=no", + null); + } + + if (cmdLine.state == Ci.nsICommandLine.STATE_INITIAL_LAUNCH) { + // If this is a new Firefox instance, and because we will only start + // webide, we need to notify "sessionstore-windows-restored" to trigger + // addons registration (for simulators and adb helper). + Services.obs.notifyObservers(null, "sessionstore-windows-restored", ""); + } + }, + + helpInfo: "", + + classID: Components.ID("{79b7b44e-de5e-4e4c-b7a2-044003c615d9}"), + QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]), +}; + +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([webideCli]); diff --git a/devtools/client/webide/components/webideComponents.manifest b/devtools/client/webide/components/webideComponents.manifest new file mode 100644 index 000000000..03af9758c --- /dev/null +++ b/devtools/client/webide/components/webideComponents.manifest @@ -0,0 +1,4 @@ +# webide components +component {79b7b44e-de5e-4e4c-b7a2-044003c615d9} webideCli.js +contract @mozilla.org/browser/webide-clh;1 {79b7b44e-de5e-4e4c-b7a2-044003c615d9} +category command-line-handler a-webide @mozilla.org/browser/webide-clh;1 |