Files
palemoon27/devtools/client/devtools-startup.js
roytam1 2bd895cc55 import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1254752 - Remove deprecated functions from nsIIOService. r=mcmanus (1b9872da0f)
- Bug 1256030 - Update NetUtil.jsm to handle file loads. r=mcmanus r=sicking (4eac2d2d23)
- Bug 1257339 - Bring back deprecated newChannel() API on nsIIOService. r=sicking, r=mcmanus CLOSED TREE (eac97ce42a)
- Bug 1105556 - Allow loadInfo->loadingNode and loadInfo->loadingPrincipal to be null for TYPE_DOCUMENT loads. r=sicking, ckerschb (b41db96a85)
- Bug 1105556 - (a2626c4533)
- Bug 1105556 - We won't have a channelLoadingPrincipal for top level loads, so nsChannelClassifier::SameLoadingURI will return false. Adding a comment to indicate that the behavior is fine since Tracking Protection doesn't apply to top level loads. r=fmarier (8f3823a917)
- Bug 1243586 - Test Upgrade-Insecure-Requests HTTP Request Header Field. r=rbarnes (a529e70155)
- Bug 1105556 - Add a hidden preference that is checked in debug mode to determine whether the main LoadInfo() constructor should assert that the ContentPolicyType is not TYPE_DOCUMENT. (153b80c661)
- Bug 1259678 - Refactor SubjectToCSP to avoid calling ShouldLoad if CSP doesn't apply to the content type. r=ckerschb (73d79be6f9)
- Bug 1093642 - Part 1: Use parentAllowsMixedContent to decide if child tab should load mixed content. r=tanvi, r=MattN (f7ccc7a0fd)
- Bug 1250958 - fix browser_markPageAsFollowedLink.js for e10s (and fix framed link coloring to make it pass). r=jaws (04e97444ee)
- Bug 1093642 - Part 2: Decide if we allow mixed content before sending click event to remote tab. r=tanvi. (d470aaa152)
- fix net error (32a2aaba25)
- Bug 1257930 - Update NetUtil.asyncFetch() to use asyncOpen2(). r=sicking (bcbd754e4c)
- Bug 908933 - Part1 - CSP: Call ShouldLoad inside ShouldProcess for TYPE_OBJECT. r=ckerschb (eb87244649)
- Bug 1125916 - Fix code that miss proper flags and originAttributes in LoadInfo. Also fix some tests. r=sicking, r=jduell (35f5a07635)
- Bug 1263790 - Resource timing initiatorType should be "iframe" instead of "subdocument" r=bz (e38569e488)
- Bug 1257809 - "Improve telemetry for PR_Connect". r=mcmanus (225fc45f80)
- Bug 698882 - mozilla::net::PollableEvent r=dragana r=mayhemer (abf47e4653)
- Bug 1260218 - SocketTransportService socket expansion r=dragana (6045e8d1a4)
- align comment (4b4cb6ac97)
- Bug 1253711 - delete unused MediaFormatReader::ByteInterval typedef; r=jya (b66387bb4f)
- Bug 1265974 - Don't fire push events in MediaQueue::PushFront(). r=jya. (f5caa8dcd4)
- Bug 1265969 - Don't fire pop events in MediaQueue::Reset(). r=jya. (601f546522)
- Bug 1250934: Don't reopen input AudioCallbackDrivers on a second use r=padenot (a5beb7ad31)
- Bug 1246310 - Resample the AudioSegment in SourceMediaStream::AddAudioTrack. r=padenot (bd3964f725)
- Bug 1239911 - Remove unused |mAudioChannel|. r=bechen. (8ba8408728)
- Bug 1250934: remove unused method from MediaStreamGraphImpl r=padenot (5d5767a14f)
- Bug 1199069 - Remove ancient deopt from AudioStream required for MSVC2010. r=jwwang (73b4390bfa)
- Bug 1229256: P1. Only check readyState update upon buffered range completion. r=jwwang (189ea2bd9e)
- Bug 1242338 - fix numerical issue in MediaDecoder::Seek(); r=jwwang (fa45e4bc4a)
- part of Bug 1158448 Part 2 (ee6f4fb502)
- Bug 1266680 - Fix stopping MediaStreamTrack when there are clones. r=jib (ffc225f820)
- Bug 1252459 - Replaced 'identity.name' by 'name' to fix identity undefined bug, r=mt (cc105ed048)
- Bug 1213056 - change getStats to be maplike. r=bz (95cadfa385)
- Bug 1259728 - minimal fix for reentrancy in pc.close(). r=jesup (56f8f5945e)
- Bug 1257100 - Report we can play type 'audio/mp4; codecs=mp4a.40.29'. r=jya (dbc04361a6)
- align some media tests (dfd85dfa34)
- Bug 1206341 - Fix memory tool direction for rtl locales. r=ntim (2cd20f8ccc)
- Bug 1261159 - Tree map zooming is awkward. r=fitzgen (3177935dce)
- Bug 1263397 - The tree map should zoom at centering around the mouse pointer. r=fitzgen (b15861f721)
- Bug 1253784 - Add Immutable.js. r=bgrins, r=gerv, r=fitzgen (99838a287b)
- Bug 1241050 - Cleanup developer-toolbar imports. r=jwalker (44f337ea8c)
- Bug 1248600 - Remove registerBrowserWindow/forgetBrowserWindow calls from /browser/. r=jryans (ebaf99a8b1)
- Bug 1247203 - Move telemetry ping from gDevTools to gDevToolsBrowser. r=jryans (8207402d38)
- Bug 1233463 - Expose about:devtools-toolbox shortcut to load the toolbox. r=jryans (116da60f72)
- Bug 1247203 - Emit devtools-loaded from the loader. r=jryans (510bd48b5a)
- Bug 1247203 - Register tools and themes in the sorted order. r=jryans (17f62ab1e1)
- Bug 1247203 - Cleanup relations between main client module and devtools-browser. r=jryans (7cc6c4525a)
2024-07-07 23:35:08 +08:00

189 lines
6.6 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/. */
/* FIXME: remove this globals comment and replace with import-globals-from when
bug 1242893 is fixed */
/* globals BrowserToolboxProcess */
/**
* This XPCOM component is loaded very early.
* It handles command line arguments like -jsconsole, but also ensures starting
* core modules like 'devtools-browser.js' that hooks the browser windows
* and ensure setting up tools.
*
* Be careful to lazy load dependencies as much as possible.
**/
"use strict";
const { interfaces: Ci, utils: Cu } = Components;
const kDebuggerPrefs = [
"devtools.debugger.remote-enabled",
"devtools.chrome.enabled"
];
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
function DevToolsStartup() {}
DevToolsStartup.prototype = {
handle: function(cmdLine) {
let consoleFlag = cmdLine.handleFlag("jsconsole", false);
let debuggerFlag = cmdLine.handleFlag("jsdebugger", false);
let devtoolsFlag = cmdLine.handleFlag("devtools", false);
if (consoleFlag) {
this.handleConsoleFlag(cmdLine);
}
if (debuggerFlag) {
this.handleDebuggerFlag(cmdLine);
}
let debuggerServerFlag;
try {
debuggerServerFlag =
cmdLine.handleFlagWithParam("start-debugger-server", false);
} catch (e) {
// We get an error if the option is given but not followed by a value.
// By catching and trying again, the value is effectively optional.
debuggerServerFlag = cmdLine.handleFlag("start-debugger-server", false);
}
if (debuggerServerFlag) {
this.handleDebuggerServerFlag(cmdLine, debuggerServerFlag);
}
let onStartup = function(window) {
Services.obs.removeObserver(onStartup,
"browser-delayed-startup-finished");
// Ensure loading core module once firefox is ready
this.initDevTools();
if (devtoolsFlag) {
this.handleDevToolsFlag(window);
}
}.bind(this);
Services.obs.addObserver(onStartup, "browser-delayed-startup-finished",
false);
},
initDevTools: function() {
let { loader } = Cu.import("resource://devtools/shared/Loader.jsm", {});
// Ensure loading main devtools module that hooks up into browser UI
// and initialize all devtools machinery.
loader.main("devtools/client/main");
},
handleConsoleFlag: function(cmdLine) {
let window = Services.wm.getMostRecentWindow("devtools:webconsole");
if (!window) {
this.initDevTools();
let { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
let hudservice = require("devtools/client/webconsole/hudservice");
let { console } = Cu.import("resource://gre/modules/Console.jsm", {});
hudservice.toggleBrowserConsole().then(null, console.error);
} else {
// the Browser Console was already open
window.focus();
}
if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
cmdLine.preventDefault = true;
}
},
// Open the toolbox on the selected tab once the browser starts up.
handleDevToolsFlag: function(window) {
const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
const {gDevTools} = require("devtools/client/framework/devtools");
const {TargetFactory} = require("devtools/client/framework/target");
let target = TargetFactory.forTab(window.gBrowser.selectedTab);
gDevTools.showToolbox(target);
},
_isRemoteDebuggingEnabled() {
let remoteDebuggingEnabled = false;
try {
remoteDebuggingEnabled = kDebuggerPrefs.every(pref => {
return Services.prefs.getBoolPref(pref);
});
} catch (ex) {
Cu.reportError(ex);
return false;
}
if (!remoteDebuggingEnabled) {
let errorMsg = "Could not run chrome debugger! You need the following " +
"prefs to be set to true: " + kDebuggerPrefs.join(", ");
Cu.reportError(errorMsg);
// Dump as well, as we're doing this from a commandline, make sure people
// don't miss it:
dump(errorMsg + "\n");
}
return remoteDebuggingEnabled;
},
handleDebuggerFlag: function(cmdLine) {
if (!this._isRemoteDebuggingEnabled()) {
return;
}
Cu.import("resource://devtools/client/framework/ToolboxProcess.jsm");
BrowserToolboxProcess.init();
if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
cmdLine.preventDefault = true;
}
},
handleDebuggerServerFlag: function(cmdLine, portOrPath) {
if (!this._isRemoteDebuggingEnabled()) {
return;
}
if (portOrPath === true) {
// Default to TCP port 6000 if no value given
portOrPath = 6000;
}
let { DevToolsLoader } =
Cu.import("resource://devtools/shared/Loader.jsm", {});
try {
// Create a separate loader instance, so that we can be sure to receive
// a separate instance of the DebuggingServer from the rest of the
// devtools. This allows us to safely use the tools against even the
// actors and DebuggingServer itself, especially since we can mark
// serverLoader as invisible to the debugger (unlike the usual loader
// settings).
let serverLoader = new DevToolsLoader();
serverLoader.invisibleToDebugger = true;
serverLoader.main("devtools/server/main");
let debuggerServer = serverLoader.DebuggerServer;
debuggerServer.init();
debuggerServer.addBrowserActors();
debuggerServer.allowChromeProcess = true;
let listener = debuggerServer.createListener();
listener.portOrPath = portOrPath;
listener.open();
dump("Started debugger server on " + portOrPath + "\n");
} catch (e) {
dump("Unable to start debugger server on " + portOrPath + ": " + e);
}
if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
cmdLine.preventDefault = true;
}
},
helpInfo: " --jsconsole Open the Browser Console.\n" +
" --jsdebugger Open the Browser Toolbox.\n" +
" --devtools Open DevTools on initial load.\n" +
" --start-debugger-server [port|path] " +
"Start the debugger server on a TCP port or " +
"Unix domain socket path. Defaults to TCP port 6000.\n",
classID: Components.ID("{9e9a9283-0ce9-4e4a-8f1c-ba129a032c32}"),
QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]),
};
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(
[DevToolsStartup]);