summaryrefslogtreecommitdiffstats
path: root/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_manifest_url.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_manifest_url.js')
-rw-r--r--devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_manifest_url.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_manifest_url.js b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_manifest_url.js
new file mode 100644
index 0000000000..6420a076b0
--- /dev/null
+++ b/devtools/client/aboutdebugging/test/browser/browser_aboutdebugging_addons_manifest_url.js
@@ -0,0 +1,73 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const {
+ adbAddon,
+} = require("resource://devtools/client/shared/remote-debugging/adb/adb-addon.js");
+
+const ABD_ADDON_NAME = "ADB binary provider";
+
+/* import-globals-from helper-adb.js */
+Services.scriptloader.loadSubScript(CHROME_URL_ROOT + "helper-adb.js", this);
+
+// Test that manifest URLs for addon targets show the manifest correctly in a new tab.
+// This test reuses the ADB extension to be sure to have a valid manifest URL to open.
+add_task(async function () {
+ await pushPref(
+ "devtools.remote.adb.extensionURL",
+ CHROME_URL_ROOT + "resources/test-adb-extension/adb-extension-#OS#.xpi"
+ );
+ await checkAdbNotRunning();
+
+ const { document, tab, window } = await openAboutDebugging();
+ await selectThisFirefoxPage(document, window.AboutDebugging.store);
+ const usbStatusElement = document.querySelector(".qa-sidebar-usb-status");
+
+ info("Install ADB");
+ adbAddon.install("internal");
+ await waitUntil(() => usbStatusElement.textContent.includes("USB enabled"));
+ await waitForAdbStart();
+
+ info("Wait until the debug target for ADB appears");
+ await waitUntil(() => findDebugTargetByText(ABD_ADDON_NAME, document));
+ const adbExtensionItem = findDebugTargetByText(ABD_ADDON_NAME, document);
+
+ const manifestUrlElement = adbExtensionItem.querySelector(".qa-manifest-url");
+ ok(manifestUrlElement, "A link to the manifest is displayed");
+
+ info("Click on the manifest URL and wait for the new tab to open");
+ const onTabOpened = once(gBrowser.tabContainer, "TabOpen");
+ manifestUrlElement.click();
+ const { target } = await onTabOpened;
+ await BrowserTestUtils.browserLoaded(target.linkedBrowser);
+
+ info("Retrieve the text content of the new tab");
+ const textContent = await SpecialPowers.spawn(
+ target.linkedBrowser,
+ [],
+ function () {
+ return content.wrappedJSObject.document.body.textContent;
+ }
+ );
+
+ const manifestObject = JSON.parse(textContent);
+ ok(manifestObject, "The displayed content is a valid JSON object");
+ is(
+ manifestObject.name,
+ ABD_ADDON_NAME,
+ "Manifest tab shows the expected content"
+ );
+
+ info("Close the manifest.json tab");
+ await removeTab(target);
+
+ info("Uninstall the adb extension and wait for the message to udpate");
+ adbAddon.uninstall();
+ await waitUntil(() => usbStatusElement.textContent.includes("USB disabled"));
+ await stopAdbProcess();
+
+ await waitForAboutDebuggingRequests(window.AboutDebugging.store);
+ await removeTab(tab);
+});