123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
- /* 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";
- /**
- * This JSM is here to keep some compatibility with existing add-ons.
- * Please now use the modules:
- * - devtools/client/framework/devtools for gDevTools
- * - devtools/client/framework/devtools-browser for gDevToolsBrowser
- */
- this.EXPORTED_SYMBOLS = [ "gDevTools", "gDevToolsBrowser" ];
- const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
- const { loader } = Cu.import("resource://devtools/shared/Loader.jsm", {});
- /**
- * Do not directly map to the commonjs modules so that callsites of
- * gDevTools.jsm do not have to do anything to access to the very last version
- * of the module. The `devtools` and `browser` getter are always going to
- * retrieve the very last version of the modules.
- */
- Object.defineProperty(this, "require", {
- get() {
- let { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
- return require;
- }
- });
- Object.defineProperty(this, "devtools", {
- get() {
- return require("devtools/client/framework/devtools").gDevTools;
- }
- });
- Object.defineProperty(this, "browser", {
- get() {
- return require("devtools/client/framework/devtools-browser").gDevToolsBrowser;
- }
- });
- /**
- * gDevTools is a singleton that controls the Firefox Developer Tools.
- *
- * It is an instance of a DevTools class that holds a set of tools. It has the
- * same lifetime as the browser.
- */
- let gDevToolsMethods = [
- // Used by the reload addon.
- // Force reloading dependencies if the loader happens to have reloaded.
- "reload",
- // Used by: - b2g desktop.js
- // - nsContextMenu
- // - /devtools code
- "showToolbox",
- // Used by Addon SDK and /devtools
- "closeToolbox",
- "getToolbox",
- // Used by Addon SDK, main.js and tests:
- "registerTool",
- "registerTheme",
- "unregisterTool",
- "unregisterTheme",
- // Used by main.js and test
- "getToolDefinitionArray",
- "getThemeDefinitionArray",
- // Used by theme-switching.js
- "getThemeDefinition",
- "emit",
- // Used by /devtools
- "on",
- "off",
- "once",
- // Used by tests
- "getToolDefinitionMap",
- "getThemeDefinitionMap",
- "getDefaultTools",
- "getAdditionalTools",
- "getToolDefinition",
- ];
- this.gDevTools = {
- // Used by tests
- get _toolboxes() {
- return devtools._toolboxes;
- },
- get _tools() {
- return devtools._tools;
- },
- *[Symbol.iterator ]() {
- for (let toolbox of this._toolboxes) {
- yield toolbox;
- }
- }
- };
- gDevToolsMethods.forEach(name => {
- this.gDevTools[name] = (...args) => {
- return devtools[name].apply(devtools, args);
- };
- });
- /**
- * gDevToolsBrowser exposes functions to connect the gDevTools instance with a
- * Firefox instance.
- */
- let gDevToolsBrowserMethods = [
- // used by browser-sets.inc, command
- "toggleToolboxCommand",
- // Used by browser.js itself, by setting a oncommand string...
- "selectToolCommand",
- // Used by browser-sets.inc, command
- "openAboutDebugging",
- // Used by browser-sets.inc, command
- "openConnectScreen",
- // Used by browser-sets.inc, command
- "openContentProcessToolbox",
- // Used by browser.js
- "registerBrowserWindow",
- // Used by reload addon
- "hasToolboxOpened",
- // Used by browser.js
- "forgetBrowserWindow"
- ];
- this.gDevToolsBrowser = {
- // Used by a test (should be removed)
- get _trackedBrowserWindows() {
- return browser._trackedBrowserWindows;
- }
- };
- gDevToolsBrowserMethods.forEach(name => {
- this.gDevToolsBrowser[name] = (...args) => {
- return browser[name].apply(browser, args);
- };
- });
|