123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /* 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);
- });
|