/* 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]);
