summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/browser_net_block-extensions.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/netmonitor/test/browser_net_block-extensions.js')
-rw-r--r--devtools/client/netmonitor/test/browser_net_block-extensions.js103
1 files changed, 103 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/test/browser_net_block-extensions.js b/devtools/client/netmonitor/test/browser_net_block-extensions.js
new file mode 100644
index 0000000000..067f18d3c6
--- /dev/null
+++ b/devtools/client/netmonitor/test/browser_net_block-extensions.js
@@ -0,0 +1,103 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Test the requests that are blocked by extenstions show correctly.
+ */
+add_task(async function () {
+ const extensionName = "Test Blocker";
+ info(`Start loading the ${extensionName} extension...`);
+ const extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ name: extensionName,
+ permissions: ["*://example.com/", "webRequest", "webRequestBlocking"],
+ },
+ useAddonManager: "temporary",
+ background() {
+ // eslint-disable-next-line no-undef
+ browser.webRequest.onBeforeRequest.addListener(
+ () => {
+ return {
+ cancel: true,
+ };
+ },
+ {
+ urls: [
+ "https://example.com/browser/devtools/client/netmonitor/test/request_0",
+ ],
+ },
+ ["blocking"]
+ );
+ // eslint-disable-next-line no-undef
+ browser.test.sendMessage("ready");
+ },
+ });
+
+ await extension.startup();
+ await extension.awaitMessage("ready");
+
+ const { tab, monitor } = await initNetMonitor(HTTPS_SINGLE_GET_URL, {
+ requestCount: 2,
+ });
+
+ const { document } = monitor.panelWin;
+
+ info("Starting test... ");
+
+ const waitForNetworkEventsToComplete = waitForNetworkEvents(monitor, 2);
+ const waitForRequestsToRender = waitForDOM(
+ document,
+ ".requests-list-row-group"
+ );
+ const waitForReload = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+
+ await reloadBrowser();
+
+ await Promise.all([
+ waitForNetworkEventsToComplete,
+ waitForRequestsToRender,
+ waitForReload,
+ ]);
+
+ // Find the request list item that matches the blocked url
+ const request = document.querySelector(
+ "td.requests-list-url[title*=request_0]"
+ ).parentNode;
+
+ info("Assert the blocked request");
+ ok(
+ !!request.querySelector(".requests-list-status .status-code-blocked-icon"),
+ "The request blocked status icon is visible"
+ );
+
+ is(
+ request.querySelector(".requests-list-status .requests-list-status-code")
+ .title,
+ "Blocked",
+ "The request status title is 'Blocked'"
+ );
+
+ is(
+ request.querySelector(".requests-list-type").innerText,
+ "",
+ "The request shows no type"
+ );
+
+ is(
+ request.querySelector(".requests-list-transferred").innerText,
+ `Blocked By ${extensionName}`,
+ "The request shows the blocking extension name"
+ );
+
+ is(
+ request.querySelector(".requests-list-size").innerText,
+ "",
+ "The request shows no size"
+ );
+
+ await teardown(monitor);
+ info(`Unloading the ${extensionName} extension`);
+ await extension.unload();
+});