mirror of
https://github.com/roytam1/UXP.git
synced 2026-05-26 14:54:25 +00:00
75 lines
2.7 KiB
JavaScript
75 lines
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
"use strict";
|
|
|
|
// Avoid test timeouts that can occur while waiting for the "addon-console-works" message.
|
|
requestLongerTimeout(2);
|
|
|
|
const ADDON_ID = "test-devtools-webextension@mozilla.org";
|
|
const ADDON_NAME = "test-devtools-webextension";
|
|
const ADDON_MANIFEST_PATH = "addons/test-devtools-webextension/manifest.json";
|
|
|
|
const {
|
|
BrowserToolboxProcess
|
|
} = Cu.import("resource://devtools/client/framework/ToolboxProcess.jsm", {});
|
|
|
|
/**
|
|
* This test file ensures that the webextension addon developer toolbox:
|
|
* - when the debug button is clicked on a webextension, the opened toolbox
|
|
* has a working webconsole with the background page as default target;
|
|
*/
|
|
add_task(function* testWebExtensionsToolboxWebConsole() {
|
|
let {
|
|
tab, document, debugBtn,
|
|
} = yield setupTestAboutDebuggingWebExtension(ADDON_NAME, ADDON_MANIFEST_PATH);
|
|
|
|
// Wait for a notification sent by a script evaluated the test addon via
|
|
// the web console.
|
|
let onCustomMessage = new Promise(done => {
|
|
Services.obs.addObserver(function listener(message, topic) {
|
|
let apiMessage = message.wrappedJSObject;
|
|
if (!apiMessage.originAttributes ||
|
|
apiMessage.originAttributes.addonId != ADDON_ID) {
|
|
return;
|
|
}
|
|
Services.obs.removeObserver(listener, "console-api-log-event");
|
|
done(apiMessage.arguments);
|
|
}, "console-api-log-event", false);
|
|
});
|
|
|
|
// Be careful, this JS function is going to be executed in the addon toolbox,
|
|
// which lives in another process. So do not try to use any scope variable!
|
|
let env = Cc["@mozilla.org/process/environment;1"]
|
|
.getService(Ci.nsIEnvironment);
|
|
let testScript = function () {
|
|
/* eslint-disable no-undef */
|
|
toolbox.selectTool("webconsole")
|
|
.then(console => {
|
|
let { jsterm } = console.hud;
|
|
return jsterm.execute("myWebExtensionAddonFunction()");
|
|
})
|
|
.then(() => toolbox.destroy());
|
|
/* eslint-enable no-undef */
|
|
};
|
|
env.set("MOZ_TOOLBOX_TEST_SCRIPT", "new " + testScript);
|
|
registerCleanupFunction(() => {
|
|
env.set("MOZ_TOOLBOX_TEST_SCRIPT", "");
|
|
});
|
|
|
|
let onToolboxClose = BrowserToolboxProcess.once("close");
|
|
|
|
debugBtn.click();
|
|
|
|
let args = yield onCustomMessage;
|
|
ok(true, "Received console message from the background page function as expected");
|
|
is(args[0], "Background page function called", "Got the expected console message");
|
|
is(args[1] && args[1].name, ADDON_NAME,
|
|
"Got the expected manifest from WebExtension API");
|
|
|
|
yield onToolboxClose;
|
|
ok(true, "Addon toolbox closed");
|
|
|
|
yield uninstallAddon({document, id: ADDON_ID, name: ADDON_NAME});
|
|
yield closeAboutDebugging(tab);
|
|
});
|