Bug 1367424 - add shims for addon sdk to DevToolsShim;r=ochameau

Some APIs and methods still used by the addon sdk are not worth exposing
or migrating to mozilla-central given that this is only intended for
release 56 (after that, legacy extensions will no longer be supported).

For those APIs, we create a simple wrapper in DevToolsShim and moved the
implementation to framework/devtools

MozReview-Commit-ID: 8LiiptqO0NI

--HG--
extra : rebase_source : 357b503532fed7933a6690418b846c70350c59b9
This commit is contained in:
Julian Descottes 2017-05-29 18:21:21 +02:00
Родитель 01c2dc7a45
Коммит 4cbdadf23f
2 изменённых файлов: 68 добавлений и 0 удалений

Просмотреть файл

@ -16,6 +16,11 @@ loader.lazyRequireGetter(this, "ToolboxHostManager", "devtools/client/framework/
loader.lazyRequireGetter(this, "gDevToolsBrowser", "devtools/client/framework/devtools-browser", true); loader.lazyRequireGetter(this, "gDevToolsBrowser", "devtools/client/framework/devtools-browser", true);
loader.lazyImporter(this, "ScratchpadManager", "resource://devtools/client/scratchpad/scratchpad-manager.jsm"); loader.lazyImporter(this, "ScratchpadManager", "resource://devtools/client/scratchpad/scratchpad-manager.jsm");
// Dependencies required for addon sdk compatibility layer.
loader.lazyRequireGetter(this, "DebuggerServer", "devtools/server/main", true);
loader.lazyRequireGetter(this, "DebuggerClient", "devtools/shared/client/main", true);
loader.lazyImporter(this, "BrowserToolboxProcess", "resource://devtools/client/framework/ToolboxProcess.jsm");
const {defaultTools: DefaultTools, defaultThemes: DefaultThemes} = const {defaultTools: DefaultTools, defaultThemes: DefaultThemes} =
require("devtools/client/definitions"); require("devtools/client/definitions");
const EventEmitter = require("devtools/shared/event-emitter"); const EventEmitter = require("devtools/shared/event-emitter");
@ -533,6 +538,42 @@ DevTools.prototype = {
return TargetFactory.forTab(tab); return TargetFactory.forTab(tab);
}, },
/**
* Compatibility layer for addon-sdk. Remove when Firefox 57 hits release.
* Initialize the debugger server if needed and and create a connection.
*
* @return {DebuggerTransport} a client-side DebuggerTransport for communicating with
* the created connection.
*/
connectDebuggerServer: function () {
if (!DebuggerServer.initialized) {
DebuggerServer.init();
DebuggerServer.addBrowserActors();
}
return DebuggerServer.connectPipe();
},
/**
* Compatibility layer for addon-sdk. Remove when Firefox 57 hits release.
*
* Create a connection to the debugger server and return a debugger client for this
* new connection.
*/
createDebuggerClient: function () {
let transport = this.connectDebuggerServer();
return new DebuggerClient(transport);
},
/**
* Compatibility layer for addon-sdk. Remove when Firefox 57 hits release.
*
* Create a BrowserToolbox process linked to the provided addon id.
*/
initBrowserToolboxProcessForAddon: function (addonID) {
BrowserToolboxProcess.init({ addonID });
},
/** /**
* Either the SDK Loader has been destroyed by the add-on contribution * Either the SDK Loader has been destroyed by the add-on contribution
* workflow, or firefox is shutting down. * workflow, or firefox is shutting down.

Просмотреть файл

@ -196,3 +196,30 @@ this.DevToolsShim = {
this.themes = []; this.themes = [];
}, },
}; };
/**
* Compatibility layer for addon-sdk. Remove when Firefox 57 hits release.
*
* The methods below are used by classes and tests from addon-sdk/
* If DevTools are not installed when calling one of them, the call will throw.
*/
let addonSdkMethods = [
"closeToolbox",
"connectDebuggerServer",
"createDebuggerClient",
"getTargetForTab",
"getToolbox",
"initBrowserToolboxProcessForAddon",
"showToolbox",
];
for (let method of addonSdkMethods) {
this.DevToolsShim[method] = function () {
if (!this.isInstalled()) {
throw new Error(`Method ${method} unavailable if DevTools are not installed`);
}
return this.gDevTools[method].apply(this, arguments);
};
}