|
18 | 18 | permissions: [
|
19 | 19 | "webRequest",
|
20 | 20 | "webRequestBlocking",
|
21 |
| - "<all_urls>" |
| 21 | + "*://example.org/*" |
22 | 22 | ],
|
23 | 23 | },
|
24 | 24 | async background() {
|
|
92 | 92 | await extension.unload();
|
93 | 93 | });
|
94 | 94 |
|
| 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 | + |
95 | 150 | </script>
|
96 | 151 |
|
97 | 152 | </body>
|
|
0 commit comments