103 lines
2.6 KiB
JavaScript
103 lines
2.6 KiB
JavaScript
/* 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();
|
|
});
|