Bug 1598557 - Move all BrowserToolbox files to a dedicated folder r=ochameau

Depends on D54119

Differential Revision: https://phabricator.services.mozilla.com/D54265

--HG--
rename : devtools/client/framework/ToolboxProcess.jsm => devtools/client/framework/browser-toolbox/Launcher.jsm
rename : devtools/client/framework/test/browser_browser_toolbox.js => devtools/client/framework/browser-toolbox/test/browser_browser_toolbox.js
rename : devtools/client/framework/test/browser_browser_toolbox_debugger.js => devtools/client/framework/browser-toolbox/test/browser_browser_toolbox_debugger.js
rename : devtools/client/framework/test/browser_browser_toolbox_fission_inspector.js => devtools/client/framework/browser-toolbox/test/browser_browser_toolbox_fission_inspector.js
rename : devtools/client/framework/test/browser_browser_toolbox_rtl.js => devtools/client/framework/browser-toolbox/test/browser_browser_toolbox_rtl.js
rename : devtools/client/framework/test/helpers.js => devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js
rename : devtools/client/framework/toolbox-process-window.css => devtools/client/framework/browser-toolbox/window.css
rename : devtools/client/framework/toolbox-process-window.html => devtools/client/framework/browser-toolbox/window.html
rename : devtools/client/framework/toolbox-process-window.js => devtools/client/framework/browser-toolbox/window.js
extra : moz-landing-system : lando
This commit is contained in:
Julian Descottes 2019-11-27 11:08:11 +00:00
parent 0e741f1658
commit 3c6458633a
30 changed files with 152 additions and 85 deletions

View File

@ -48,7 +48,7 @@
"hasConsoleMessage": false,
"findConsoleMessage": false,
"promise": false,
"BrowserToolboxProcess": false,
"BrowserToolboxLauncher": false,
"OS": false,
"selectors": false,
"waitForNextDispatch": false,

View File

@ -7,7 +7,7 @@ support-files =
head.js
helpers.js
helpers/context.js
!/devtools/client/framework/test/helpers.js
!/devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js
!/devtools/client/inspector/test/head.js
!/devtools/client/inspector/test/shared-head.js
!/devtools/client/shared/test/shared-head.js

View File

@ -12,13 +12,13 @@ PromiseTestUtils.whitelistRejectionsGlobally(/NS_ERROR_FAILURE/);
requestLongerTimeout(5);
const { BrowserToolboxProcess } = ChromeUtils.import("resource://devtools/client/framework/ToolboxProcess.jsm");
const { BrowserToolboxLauncher } = ChromeUtils.import("resource://devtools/client/framework/browser-toolbox/Launcher.jsm");
let gProcess = undefined;
function initChromeDebugger() {
info("Initializing a chrome debugger process.");
return new Promise(resolve => {
BrowserToolboxProcess.init(onClose, _process => {
BrowserToolboxLauncher.init(onClose, _process => {
info("Browser toolbox process started successfully.");
resolve(_process);
});

View File

@ -10,7 +10,7 @@
requestLongerTimeout(4);
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
"chrome://mochitests/content/browser/devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js",
this
);

View File

@ -10,7 +10,7 @@
requestLongerTimeout(4);
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
"chrome://mochitests/content/browser/devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js",
this
);

View File

@ -4,8 +4,8 @@
"use strict";
const DBG_XUL =
"chrome://devtools/content/framework/toolbox-process-window.html";
const BROWSER_TOOLBOX_WINDOW_URL =
"chrome://devtools/content/framework/browser-toolbox/window.html";
const CHROME_DEBUGGER_PROFILE_NAME = "chrome_debugger_profile";
const { require, DevToolsLoader } = ChromeUtils.import(
@ -38,7 +38,7 @@ XPCOMUtils.defineLazyGetter(this, "EventEmitter", function() {
const Services = require("Services");
this.EXPORTED_SYMBOLS = ["BrowserToolboxProcess"];
this.EXPORTED_SYMBOLS = ["BrowserToolboxLauncher"];
var processes = new Set();
@ -53,7 +53,7 @@ var processes = new Set();
* Set to force overwriting the toolbox profile's preferences with the
* current set of preferences.
*/
this.BrowserToolboxProcess = function BrowserToolboxProcess(
this.BrowserToolboxLauncher = function BrowserToolboxLauncher(
onClose,
onRun,
overwritePreferences,
@ -66,7 +66,7 @@ this.BrowserToolboxProcess = function BrowserToolboxProcess(
// Forward any events to the shared emitter.
this.emit = function(...args) {
emitter.emit(...args);
BrowserToolboxProcess.emit(...args);
BrowserToolboxLauncher.emit(...args);
};
if (onClose) {
@ -87,13 +87,13 @@ this.BrowserToolboxProcess = function BrowserToolboxProcess(
processes.add(this);
};
EventEmitter.decorate(BrowserToolboxProcess);
EventEmitter.decorate(BrowserToolboxLauncher);
/**
* Initializes and starts a chrome toolbox process.
* @return object
*/
BrowserToolboxProcess.init = function(
BrowserToolboxLauncher.init = function(
onClose,
onRun,
overwritePreferences,
@ -106,7 +106,7 @@ BrowserToolboxProcess.init = function(
console.error("Could not start Browser Toolbox, you need to enable it.");
return null;
}
return new BrowserToolboxProcess(
return new BrowserToolboxLauncher(
onClose,
onRun,
overwritePreferences,
@ -118,11 +118,11 @@ BrowserToolboxProcess.init = function(
* Figure out if there are any open Browser Toolboxes that'll need to be restored.
* @return bool
*/
BrowserToolboxProcess.getBrowserToolboxSessionState = function() {
BrowserToolboxLauncher.getBrowserToolboxSessionState = function() {
return processes.size !== 0;
};
BrowserToolboxProcess.prototype = {
BrowserToolboxLauncher.prototype = {
/**
* Initializes the debugger server.
*/
@ -247,7 +247,7 @@ BrowserToolboxProcess.prototype = {
"-profile",
profilePath,
"-chrome",
DBG_XUL,
BROWSER_TOOLBOX_WINDOW_URL,
];
const environment = {

View File

@ -0,0 +1,37 @@
# Browser Toolbox
## Introduction
The Browser Toolbox spawns a toolbox in a new dedicated Firefox instance to debug the currently running Firefox. This new instance runs in a distinct process.
To enable it, you must first flip two preferences in the DevTools Options panel (F1):
- Enable browser chrome and add-on debugging toolboxes
- Enable remote debugging
You can either start it via a keyboard shortcut (CmdOrCtrl+Alt+Shift+I) or via the Tools > Web Developer > Browser Toolbox menu item.
When describing the setup used by the Browser Toolbox, we will refer to those two distinct Firefox instances as:
- the target Firefox: this is the current instance, that we want to debug
- the client Firefox: this is the new instance that will only run the Browser Toolbox window
## Browser Toolbox Architecture
The startup sequence of the browser toolbox begins in the target Firefox.
`browser-toolbox/Launcher.jsm` will be first reponsible for creating a remote DebuggerServer. This new DebuggerServer runs in the parent process but is separated from any existing DevTools DebuggerServer that spawned earlier for regular DevTools usage. Thanks to this, we will be able to debug files loaded in those regular DebuggerServers used for content toolboxes, about:debugging, ...
Then we need to start the client Firefox. To do that, `browser-toolbox/Launcher.jsm` creates a profile that will be a copy of the current profile loaded in the target Firefox, so that all user preferences can be automatically ported over. As a reminder both client and target Firefox will run simultaneously, so they can't use the same profile.
This new profile is stored inside the folder of the target profile, in a `chrome_debugger_profile` folder. So the next time the Browser Toolbox opens this for profile, it will be reused.
Once the profile is ready (or if it was already there), `browser-toolbox/Launcher.jsm` spawns a new Firefox instance with a few additional parameters, most importantly `-chrome chrome://devtools/content/framework/browser-toolbox/window.html`.
This way Firefox will load `browser-toolbox/window.html` instead of the regular browser window. Most of the logic is then handled by `browser-toolbox/window.js` which will connect to the remote server opened on the target Firefox and will then load a toolbox connected to this server.
## Debugging the Browser Toolbox
Note that you can open a Browser Toolbox from the Browser Toolbox. Simply reuse the same shortcut as the one you used to open the first Browser Toolbox, but this time while the Browser Toolbox window is focused.
Another Browser Toolbox will spawn, this time debugging the first Browser Toolbox Firefox instance. If you are curious about how this is done, `browser-toolbox/window.js` simply loads `browser-toolbox/Launcher.jsm` and requests to open a new Browser Toolbox.
This will open yet another Firefox instance, running in another process. And a new `chrome_debugger_profile` folder will be created inside the existing Browser Toolbox profile (which as explained in the previous section, is already in a `chrome_debugger_profile` folder under the target Firefox profile).

View File

@ -0,0 +1,13 @@
# -*- 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/.
BROWSER_CHROME_MANIFESTS += [
'test/browser.ini',
]
DevToolsModules(
'Launcher.jsm',
)

View File

@ -0,0 +1,6 @@
"use strict";
module.exports = {
// Extend from the shared list of defined globals for mochitests.
"extends": "../../../../.eslintrc.mochitests.js"
};

View File

@ -0,0 +1,26 @@
[DEFAULT]
tags = devtools
subsuite = devtools
support-files =
head.js
helpers-browser-toolbox.js
!/devtools/client/debugger/test/mochitest/head.js
!/devtools/client/debugger/test/mochitest/helpers.js
!/devtools/client/debugger/test/mochitest/helpers/context.js
!/devtools/client/shared/test/frame-script-utils.js
!/devtools/client/shared/test/shared-head.js
!/devtools/client/shared/test/shared-redux-head.js
!/devtools/client/shared/test/telemetry-test-helpers.js
# This is far from ideal. https://bugzilla.mozilla.org/show_bug.cgi?id=1565279
# covers removing this pref flip.
prefs =
security.allow_unsafe_parent_loads=true
[browser_browser_toolbox.js]
skip-if = coverage || asan # Bug 1387827, Bug 1591064
[browser_browser_toolbox_debugger.js]
skip-if = os == 'win' || debug || (bits == 64 && !debug && (os == 'mac' || os == 'linux')) || asan # Bug 1282269, Bug 1448084, Bug 1270731, Bug 1591064
[browser_browser_toolbox_fission_inspector.js]
skip-if = coverage || asan # Bug 1387827, Bug 1591064
[browser_browser_toolbox_rtl.js]
skip-if = asan # Bug 1591064

View File

@ -1,12 +1,6 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from helpers.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
this
);
// There are shutdown issues for which multiple rejections are left uncaught.
// See bug 1018184 for resolving these issues.
const { PromiseTestUtils } = ChromeUtils.import(

View File

@ -3,12 +3,6 @@
// This test asserts that the new debugger works from the browser toolbox process
/* import-globals-from helpers.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
this
);
// There are shutdown issues for which multiple rejections are left uncaught.
// See bug 1018184 for resolving these issues.
const { PromiseTestUtils } = ChromeUtils.import(

View File

@ -1,12 +1,6 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from helpers.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
this
);
// There are shutdown issues for which multiple rejections are left uncaught.
// See bug 1018184 for resolving these issues.
const { PromiseTestUtils } = ChromeUtils.import(

View File

@ -1,12 +1,6 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from helpers.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
this
);
// There are shutdown issues for which multiple rejections are left uncaught.
// See bug 1018184 for resolving these issues.
const { PromiseTestUtils } = ChromeUtils.import(

View File

@ -0,0 +1,17 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from ../../../shared/test/shared-head.js */
/* import-globals-from ../../../shared/test/telemetry-test-helpers.js */
// shared-head.js handles imports, constants, and utility functions
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js",
this
);
/* import-globals-from helpers-browser-toolbox.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js",
this
);

View File

@ -4,8 +4,8 @@
"use strict";
const { BrowserToolboxProcess } = ChromeUtils.import(
"resource://devtools/client/framework/ToolboxProcess.jsm"
const { BrowserToolboxLauncher } = ChromeUtils.import(
"resource://devtools/client/framework/browser-toolbox/Launcher.jsm"
);
const { DebuggerClient } = require("devtools/shared/client/debugger-client");
@ -44,17 +44,17 @@ async function initBrowserToolboxTask({ enableBrowserToolboxFission } = {}) {
).PromiseTestUtils.whitelistRejectionsGlobally(/File closed/);
const process = await new Promise(onRun => {
BrowserToolboxProcess.init(null, onRun, /* overwritePreferences */ true);
BrowserToolboxLauncher.init(null, onRun, /* overwritePreferences */ true);
});
ok(true, "Browser toolbox started\n");
is(
BrowserToolboxProcess.getBrowserToolboxSessionState(),
BrowserToolboxLauncher.getBrowserToolboxSessionState(),
true,
"Has session state"
);
// The port of the DebuggerServer installed in the toolbox process is fixed.
// See toolbox-process-window.js
// See browser-toolbox-window.js
let transport;
while (true) {
try {
@ -115,7 +115,7 @@ async function initBrowserToolboxTask({ enableBrowserToolboxFission } = {}) {
is(exitCode, 0, "The remote debugger process died cleanly");
is(
BrowserToolboxProcess.getBrowserToolboxSessionState(),
BrowserToolboxLauncher.getBrowserToolboxSessionState(),
false,
"No session state after closing"
);

View File

@ -9,9 +9,9 @@
<head>
<link rel="stylesheet" href="chrome://global/skin/global.css"/>
<link rel="stylesheet" href="resource://devtools/client/themes/common.css"/>
<link rel="stylesheet" href="chrome://devtools/content/framework/toolbox-process-window.css"/>
<link rel="stylesheet" href="chrome://devtools/content/framework/browser-toolbox/window.css"/>
<script src="chrome://global/content/globalOverlay.js"></script>
<script src="toolbox-process-window.js"></script>
<script src="chrome://devtools/content/framework/browser-toolbox/window.js"></script>
<script src="chrome://global/content/viewSourceUtils.js"></script>
<script src="chrome://browser/content/utilityOverlay.js"></script>
</head>

View File

@ -23,8 +23,8 @@ const L10N = new LocalizationHelper(
);
loader.lazyImporter(
this,
"BrowserToolboxProcess",
"resource://devtools/client/framework/ToolboxProcess.jsm"
"BrowserToolboxLauncher",
"resource://devtools/client/framework/browser-toolbox/Launcher.jsm"
);
// Timeout to wait before we assume that a connect() timed out without an error.
@ -78,7 +78,7 @@ var connect = async function() {
// A port needs to be passed in from the environment, for instance:
// MOZ_BROWSER_TOOLBOX_PORT=6080 ./mach run -chrome \
// chrome://devtools/content/framework/toolbox-process-window.html
// chrome://devtools/content/framework/browser-toolbox/window.html
if (!port) {
throw new Error(
"Must pass a port in an env variable with MOZ_BROWSER_TOOLBOX_PORT"
@ -173,7 +173,7 @@ function onCloseCommand(event) {
* running in the parent process. i.e. frontend code.
*/
function onDebugBrowserToolbox() {
BrowserToolboxProcess.init();
BrowserToolboxLauncher.init();
}
async function openToolbox(target) {

View File

@ -65,8 +65,8 @@ loader.lazyRequireGetter(
);
loader.lazyImporter(
this,
"BrowserToolboxProcess",
"resource://devtools/client/framework/ToolboxProcess.jsm"
"BrowserToolboxLauncher",
"resource://devtools/client/framework/browser-toolbox/Launcher.jsm"
);
const { LocalizationHelper } = require("devtools/shared/l10n");
@ -338,7 +338,7 @@ var gDevToolsBrowser = (exports.gDevToolsBrowser = {
await gDevToolsBrowser.toggleToolboxCommand(window.gBrowser, startTime);
break;
case "browserToolbox":
BrowserToolboxProcess.init();
BrowserToolboxLauncher.init();
break;
case "browserConsole":
const {

View File

@ -32,8 +32,8 @@ loader.lazyRequireGetter(
loader.lazyRequireGetter(this, "Telemetry", "devtools/client/shared/telemetry");
loader.lazyImporter(
this,
"BrowserToolboxProcess",
"resource://devtools/client/framework/ToolboxProcess.jsm"
"BrowserToolboxLauncher",
"resource://devtools/client/framework/browser-toolbox/Launcher.jsm"
);
const {
@ -424,7 +424,7 @@ DevTools.prototype = {
*/
saveDevToolsSession: function(state) {
state.browserConsole = BrowserConsoleManager.getBrowserConsoleSessionState();
state.browserToolbox = BrowserToolboxProcess.getBrowserToolboxSessionState();
state.browserToolbox = BrowserToolboxLauncher.getBrowserToolboxSessionState();
},
/**
@ -432,7 +432,7 @@ DevTools.prototype = {
*/
restoreDevToolsSession: function({ browserConsole, browserToolbox }) {
if (browserToolbox) {
BrowserToolboxProcess.init();
BrowserToolboxLauncher.init();
}
if (browserConsole && !BrowserConsoleManager.getBrowserConsole()) {

View File

@ -16,8 +16,9 @@ BROWSER_CHROME_MANIFESTS += [
XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
DIRS += [
'components',
'actions',
'browser-toolbox',
'components',
'reducers',
]
@ -39,7 +40,6 @@ DevToolsModules(
'toolbox-options.js',
'toolbox-tabs-order-manager.js',
'toolbox.js',
'ToolboxProcess.jsm',
)
with Files('**'):

View File

@ -33,7 +33,6 @@ support-files =
doc_empty-tab-01.html
doc_reload.html
head.js
helpers.js
helper_disable_cache.js
doc_theme.css
doc_viewsource.html
@ -57,14 +56,6 @@ prefs =
[browser_about-devtools-toolbox_load.js]
[browser_about-devtools-toolbox_reload.js]
[browser_browser_toolbox.js]
skip-if = coverage || asan # Bug 1387827, Bug 1591064
[browser_browser_toolbox_debugger.js]
skip-if = os == 'win' || debug || (bits == 64 && !debug && (os == 'mac' || os == 'linux')) || asan # Bug 1282269, Bug 1448084, Bug 1270731, Bug 1591064
[browser_browser_toolbox_fission_inspector.js]
skip-if = coverage || asan # Bug 1387827, Bug 1591064
[browser_browser_toolbox_rtl.js]
skip-if = asan # Bug 1591064
[browser_devtools_api_destroy.js]
[browser_dynamic_tool_enabling.js]
[browser_front_parentFront.js]

View File

@ -33,9 +33,9 @@ devtools.jar:
content/framework/toolbox.xhtml (framework/toolbox.xhtml)
content/framework/toolbox-init.js (framework/toolbox-init.js)
content/framework/options-panel.css (framework/options-panel.css)
content/framework/toolbox-process-window.html (framework/toolbox-process-window.html)
content/framework/toolbox-process-window.css (framework/toolbox-process-window.css)
content/framework/toolbox-process-window.js (framework/toolbox-process-window.js)
content/framework/browser-toolbox/window.html (framework/browser-toolbox/window.html)
content/framework/browser-toolbox/window.css (framework/browser-toolbox/window.css)
content/framework/browser-toolbox/window.js (framework/browser-toolbox/window.js)
content/inspector/index.xhtml (inspector/index.xhtml)
content/shared/widgets/graphs-frame.xhtml (shared/widgets/graphs-frame.xhtml)
content/shared/widgets/cubic-bezier.css (shared/widgets/cubic-bezier.css)

View File

@ -53,8 +53,8 @@ loader.lazyRequireGetter(
loader.lazyImporter(
this,
"BrowserToolboxProcess",
"resource://devtools/client/framework/ToolboxProcess.jsm"
"BrowserToolboxLauncher",
"resource://devtools/client/framework/browser-toolbox/Launcher.jsm"
);
loader.lazyImporter(
this,
@ -95,7 +95,7 @@ exports.menuitems = [
id: "menu_browserToolbox",
l10nKey: "browserToolboxMenu",
oncommand() {
BrowserToolboxProcess.init();
BrowserToolboxLauncher.init();
},
keyId: "browserToolbox",
},

View File

@ -164,7 +164,7 @@ support-files =
!/devtools/client/shared/test/shared-head.js
!/devtools/client/debugger/test/mochitest/helpers.js
!/devtools/client/debugger/test/mochitest/helpers/context.js
!/devtools/client/framework/test/helpers.js
!/devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js
!/devtools/client/shared/test/telemetry-test-helpers.js
!/devtools/client/shared/test/test-actor.js
!/devtools/client/shared/test/test-actor-registry.js

View File

@ -1,7 +1,6 @@
/* 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/. */
/* eslint-disable no-undef */
// Test that when the omniscient browser toolbox is used, console messages from
// newly opened content processes appear.
@ -18,8 +17,10 @@ const EXAMPLE_URI =
"http://example.com/browser/devtools/client/webconsole/" +
"test/browser/test-console.html";
/* global gToolbox */
/* import-globals-from ../../../framework/browser-toolbox/test/helpers-browser-toolbox.js */
Services.scriptloader.loadSubScript(
"chrome://mochitests/content/browser/devtools/client/framework/test/helpers.js",
"chrome://mochitests/content/browser/devtools/client/framework/browser-toolbox/test/helpers-browser-toolbox.js",
this
);

View File

@ -173,7 +173,7 @@ this.loader = new DevToolsLoader({
* B2G. It is not the default case for desktop Firefox because we offer the
* Browser Toolbox for chrome debugging there, which uses its own, separate
* loader instance.
* @see devtools/client/framework/ToolboxProcess.jsm
* @see devtools/client/framework/browser-toolbox/Launcher.jsm
*/
invisibleToDebugger: Services.appinfo.name !== "Firefox",
});

View File

@ -938,10 +938,10 @@ DevToolsStartup.prototype = {
Services.obs.addObserver(observe, "devtools-thread-resumed");
}
const { BrowserToolboxProcess } = ChromeUtils.import(
"resource://devtools/client/framework/ToolboxProcess.jsm"
const { BrowserToolboxLauncher } = ChromeUtils.import(
"resource://devtools/client/framework/browser-toolbox/Launcher.jsm"
);
BrowserToolboxProcess.init(null, null, null, binaryPath);
BrowserToolboxLauncher.init(null, null, null, binaryPath);
if (pauseOnStartup) {
// Spin the event loop until the debugger connects.

View File

@ -114,6 +114,7 @@
"kinto-storage-adapter.js": ["FirefoxAdapter"],
"kvstore.jsm": ["KeyValueService"],
"L10nRegistry.jsm": ["L10nRegistry", "FileSource", "IndexedFileSource"],
"Launcher.jsm": ["BrowserToolboxLauncher"],
"loader-plugin-raw.jsm": ["requireRawId"],
"loader.js": ["WorkerDebuggerLoader", "worker"],
"Loader.jsm": ["DevToolsLoader", "require", "loader"],
@ -221,7 +222,6 @@
"TippyTopProvider.jsm": ["TippyTopProvider", "getDomain"],
"Tokenize.jsm": ["tokenize", "toksToTfIdfVector"],
"tokenserverclient.js": ["TokenServerClient", "TokenServerClientError", "TokenServerClientNetworkError", "TokenServerClientServerError"],
"ToolboxProcess.jsm": ["BrowserToolboxProcess"],
"tps.jsm": ["ACTIONS", "Addons", "Addresses", "Bookmarks", "CreditCards", "Formdata", "History", "Passwords", "Prefs", "Tabs", "TPS", "Windows"],
"Translation.jsm": ["Translation", "TranslationTelemetry"],
"Traversal.jsm": ["TraversalRules", "TraversalHelper"],