Bug 1367425 - Use DevToolsShim in webextensions codebase;r=mixedpuppy

Use DevToolsShim to access devtools APIs from webextensions code.
For webextensions tests using DevTools, tests are accessing DevToolsShim.gDevTools
which is fine for test purposes.

MozReview-Commit-ID: 66gFV98xvpf

--HG--
extra : rebase_source : 05734afae4368c5d7e4682b5fae1b8f3e4417220
This commit is contained in:
Julian Descottes 2017-05-26 15:48:15 +02:00
parent e5fa0b8e06
commit a7015fc300
7 changed files with 36 additions and 35 deletions

View File

@ -13,8 +13,8 @@
* and the implementation of the `devtools_page`.
*/
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
"resource://devtools/client/framework/gDevTools.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "DevToolsShim",
"chrome://devtools-shim/content/DevToolsShim.jsm");
Cu.import("resource://gre/modules/ExtensionParent.jsm");
@ -142,7 +142,7 @@ class DevToolsPage extends HiddenExtensionPage {
extensions.emit("extension-browser-inserted", this.browser, {
devtoolsToolboxInfo: {
inspectedWindowTabId: getTargetTabIdForToolbox(this.toolbox),
themeName: gDevTools.getTheme(),
themeName: DevToolsShim.getTheme(),
},
});
@ -220,7 +220,7 @@ class DevToolsPageDefinition {
// If this is the first DevToolsPage, subscribe to the theme-changed event
if (this.devtoolsPageForTarget.size === 0) {
gDevTools.on("theme-changed", this.onThemeChanged);
DevToolsShim.on("theme-changed", this.onThemeChanged);
}
this.devtoolsPageForTarget.set(toolbox.target, devtoolsPage);
@ -240,7 +240,7 @@ class DevToolsPageDefinition {
// If this was the last DevToolsPage, unsubscribe from the theme-changed event
if (this.devtoolsPageForTarget.size === 0) {
gDevTools.off("theme-changed", this.onThemeChanged);
DevToolsShim.off("theme-changed", this.onThemeChanged);
}
}
}
@ -272,7 +272,7 @@ initDevTools = function() {
/* eslint-disable mozilla/balanced-listeners */
// Create a devtools page context for a new opened toolbox,
// based on the registered devtools_page definitions.
gDevTools.on("toolbox-created", (evt, toolbox) => {
DevToolsShim.on("toolbox-created", (evt, toolbox) => {
if (!toolbox.target.isLocalTab) {
// Only local tabs are currently supported (See Bug 1304378 for additional details
// related to remote targets support).
@ -294,7 +294,7 @@ initDevTools = function() {
// Destroy a devtools page context for a destroyed toolbox,
// based on the registered devtools_page definitions.
gDevTools.on("toolbox-destroy", (evt, target) => {
DevToolsShim.on("toolbox-destroy", (evt, target) => {
if (!target.isLocalTab) {
// Only local tabs are currently supported (See Bug 1304378 for additional details
// related to remote targets support).

View File

@ -2,10 +2,8 @@
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
"resource://devtools/client/framework/gDevTools.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "devtools",
"resource://devtools/shared/Loader.jsm");
const {DevToolsShim} = Cu.import("chrome://devtools-shim/content/DevToolsShim.jsm", {});
const {gDevTools} = DevToolsShim;
/**
* this test file ensures that:
@ -91,7 +89,7 @@ add_task(async function test_devtools_inspectedWindow_tabId() {
let backgroundPageCurrentTabId = await extension.awaitMessage("current-tab-id");
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
await gDevTools.showToolbox(target, "webconsole");
info("developer toolbox opened");
@ -159,7 +157,7 @@ add_task(async function test_devtools_inspectedWindow_eval() {
await extension.startup();
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
await gDevTools.showToolbox(target, "webconsole");
info("developer toolbox opened");

View File

@ -6,10 +6,8 @@
// on debug test slave, it takes about 50s to run the test.
requestLongerTimeout(4);
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
"resource://devtools/client/framework/gDevTools.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "devtools",
"resource://devtools/shared/Loader.jsm");
const {DevToolsShim} = Cu.import("chrome://devtools-shim/content/DevToolsShim.jsm", {});
const {gDevTools} = DevToolsShim;
// Small helper which provides the common steps to the following reload test cases.
async function runReloadTestCase({urlParams, background, devtoolsPage, testCase}) {
@ -39,7 +37,7 @@ async function runReloadTestCase({urlParams, background, devtoolsPage, testCase}
await extension.startup();
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
await gDevTools.showToolbox(target, "webconsole");
info("developer toolbox opened");

View File

@ -2,10 +2,8 @@
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
XPCOMUtils.defineLazyModuleGetter(this, "devtools",
"resource://devtools/shared/Loader.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
"resource://devtools/client/framework/gDevTools.jsm");
const {DevToolsShim} = Cu.import("chrome://devtools-shim/content/DevToolsShim.jsm", {});
const {gDevTools} = DevToolsShim;
add_task(async function test_devtools_network_on_navigated() {
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/");
@ -65,7 +63,7 @@ add_task(async function test_devtools_network_on_navigated() {
await extension.startup();
await extension.awaitMessage("ready");
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
await gDevTools.showToolbox(target, "webconsole");
info("Developer toolbox opened.");

View File

@ -2,10 +2,8 @@
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
"resource://devtools/client/framework/gDevTools.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "devtools",
"resource://devtools/shared/Loader.jsm");
const {DevToolsShim} = Cu.import("chrome://devtools-shim/content/DevToolsShim.jsm", {});
const {gDevTools} = DevToolsShim;
/**
* This test file ensures that:
@ -67,7 +65,7 @@ add_task(async function test_devtools_page_runtime_api_messaging() {
await extension.startup();
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
await gDevTools.showToolbox(target, "webconsole");
info("developer toolbox opened");

View File

@ -2,13 +2,12 @@
/* vim: set sts=2 sw=2 et tw=80: */
"use strict";
XPCOMUtils.defineLazyModuleGetter(this, "devtools",
"resource://devtools/shared/Loader.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "gDevTools",
"resource://devtools/client/framework/gDevTools.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "Preferences",
"resource://gre/modules/Preferences.jsm");
const {DevToolsShim} = Cu.import("chrome://devtools-shim/content/DevToolsShim.jsm", {});
const {gDevTools} = DevToolsShim;
const DEVTOOLS_THEME_PREF = "devtools.theme";
/**
@ -76,7 +75,7 @@ add_task(async function test_theme_name_no_panel() {
await extension.startup();
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
await gDevTools.showToolbox(target, "webconsole");
info("developer toolbox opened");
@ -195,7 +194,7 @@ add_task(async function test_devtools_page_panels_create() {
await extension.startup();
let target = devtools.TargetFactory.forTab(tab);
let target = gDevTools.getTargetForTab(tab);
const toolbox = await gDevTools.showToolbox(target, "webconsole");
info("developer toolbox opened");

View File

@ -214,7 +214,17 @@ let addonSdkMethods = [
"showToolbox",
];
for (let method of addonSdkMethods) {
/**
* Compatibility layer for webextensions.
*
* Those methods are called only after a DevTools webextension was loaded in DevTools,
* therefore DevTools should always be available when they are called.
*/
let webExtensionsMethods = [
"getTheme",
];
for (let method of [...addonSdkMethods, ...webExtensionsMethods]) {
this.DevToolsShim[method] = function () {
if (!this.isInstalled()) {
throw new Error(`Method ${method} unavailable if DevTools are not installed`);