diff options
Diffstat (limited to '')
-rw-r--r-- | devtools/client/netmonitor/test/browser_net_block-extensions.js | 103 |
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(); +}); |