Skip to content

Commit 780bc46

Browse files
committed
Bug 1909298 - Test webRequest.getSecurityInfo() without permission r=rpl
Differential Revision: https://phabricator.services.mozilla.com/D217450
1 parent 8c801f5 commit 780bc46

File tree

1 file changed

+56
-1
lines changed

1 file changed

+56
-1
lines changed

toolkit/components/extensions/test/mochitest/test_ext_webrequest_getSecurityInfo.html

+56-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
permissions: [
1919
"webRequest",
2020
"webRequestBlocking",
21-
"<all_urls>"
21+
"*://example.org/*"
2222
],
2323
},
2424
async background() {
@@ -92,6 +92,61 @@
9292
await extension.unload();
9393
});
9494

95+
add_task(async function test_getSecurityInfo_without_permission() {
96+
const extension = ExtensionTestUtils.loadExtension({
97+
manifest: {
98+
manifest_version: 3,
99+
granted_host_permissions: true,
100+
permissions: [ "webRequest", "webRequestBlocking"],
101+
host_permissions: ["*://example.org/*"],
102+
},
103+
async background() {
104+
let requestCount = 0;
105+
browser.webRequest.onHeadersReceived.addListener(
106+
async ({ requestId }) => {
107+
++requestCount;
108+
try {
109+
let info = await browser.webRequest.getSecurityInfo(requestId, {});
110+
browser.test.assertEq("secure", info?.state, "Got SecurityInfo");
111+
112+
await browser.permissions.remove({ origins: ["*://example.org/*"] });
113+
114+
browser.test.assertDeepEq(
115+
undefined,
116+
await browser.webRequest.getSecurityInfo(requestId, {}),
117+
"getSecurityInfo() should not return info without permission"
118+
);
119+
} catch (e) {
120+
browser.test.fail(`Unexpected error in onHeadersReceived: ${e}`);
121+
}
122+
},
123+
{ urls: ["*://example.org/*/file_image_good.png?permcheck*"] },
124+
["blocking"]
125+
);
126+
127+
// Main purpose of this is to ensure that the webRequest listener has
128+
// registered when the request is triggered (work around bug 1300234).
129+
browser.webRequest.getSecurityInfo("").then(securityInfo => {
130+
browser.test.assertEq(
131+
undefined,
132+
securityInfo,
133+
"getSecurityInfo() with invalid requestId resolves to undefined"
134+
);
135+
const img = new Image();
136+
img.src = "https://example.org/tests/toolkit/components/extensions/test/mochitest/file_image_good.png?permcheck&_=" + Date.now();
137+
img.decode().then(() => {
138+
browser.test.assertEq(1, requestCount, "Seen request");
139+
browser.test.sendMessage("done");
140+
});
141+
});
142+
},
143+
});
144+
145+
await extension.startup();
146+
await extension.awaitMessage("done");
147+
await extension.unload();
148+
});
149+
95150
</script>
96151

97152
</body>

0 commit comments

Comments
 (0)