Wed, 31 Dec 2014 06:09:35 +0100
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]);