browser/devtools/devtools-clhandler.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
     6 const kDebuggerPrefs = [
     7   "devtools.debugger.remote-enabled",
     8   "devtools.debugger.chrome-enabled",
     9   "devtools.chrome.enabled"
    10 ];
    11 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
    12 XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
    14 function devtoolsCommandlineHandler() {
    15 }
    16 devtoolsCommandlineHandler.prototype = {
    17   handle: function(cmdLine) {
    18     let consoleFlag = cmdLine.handleFlag("jsconsole", false);
    19     let debuggerFlag = cmdLine.handleFlag("jsdebugger", false);
    20     if (consoleFlag) {
    21       this.handleConsoleFlag(cmdLine);
    22     }
    23     if (debuggerFlag) {
    24       this.handleDebuggerFlag(cmdLine);
    25     }
    26   },
    28   handleConsoleFlag: function(cmdLine) {
    29     let window = Services.wm.getMostRecentWindow("devtools:webconsole");
    30     if (!window) {
    31       let devtools = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools;
    32       // Load the browser devtools main module as the loader's main module.
    33       Cu.import("resource:///modules/devtools/gDevTools.jsm");
    34       let hudservice = devtools.require("devtools/webconsole/hudservice");
    35       let console = Cu.import("resource://gre/modules/devtools/Console.jsm", {}).console;
    36       hudservice.toggleBrowserConsole().then(null, console.error);
    37     } else {
    38       window.focus(); // the Browser Console was already open
    39     }
    41     if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
    42       cmdLine.preventDefault = true;
    43     }
    44   },
    46   handleDebuggerFlag: function(cmdLine) {
    47     let remoteDebuggingEnabled = false;
    48     try {
    49       remoteDebuggingEnabled = kDebuggerPrefs.every((pref) => Services.prefs.getBoolPref(pref));
    50     } catch (ex) {
    51       Cu.reportError(ex);
    52       return;
    53     }
    54     if (remoteDebuggingEnabled) {
    55       Cu.import("resource:///modules/devtools/ToolboxProcess.jsm");
    56       BrowserToolboxProcess.init();
    57     } else {
    58       let errorMsg = "Could not run chrome debugger! You need the following prefs " +
    59                      "to be set to true: " + kDebuggerPrefs.join(", ");
    60       Cu.reportError(errorMsg);
    61       // Dump as well, as we're doing this from a commandline, make sure people don't miss it:
    62       dump(errorMsg + "\n");
    63     }
    65     if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
    66       cmdLine.preventDefault = true;
    67     }
    68   },
    70   helpInfo : "  -jsconsole         Open the Browser Console.\n" +
    71              "  -jsdebugger        Open the Browser Toolbox.\n",
    73   classID: Components.ID("{9e9a9283-0ce9-4e4a-8f1c-ba129a032c32}"),
    74   QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]),
    75 };
    77 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([devtoolsCommandlineHandler]);

mercurial