LibWeb/Bindings: Implement [SecureContext] extended attribute

Unfortunately this is a bit of a pain to test as it is surprisingly
difficult to create a non secure context in our test harness.
This is because both file scheme URLs and localhost are considered
secure contexts.

To test this, add a very specific internals setter to change the
top level origin of the environment for the current realm.
This commit is contained in:
Shannon Booth
2026-01-18 17:27:18 +01:00
committed by Shannon Booth
parent 6bdced0014
commit bc93ba4530
Notes: github-actions[bot] 2026-02-14 19:35:46 +00:00
8 changed files with 117 additions and 3 deletions

View File

@@ -0,0 +1,35 @@
<!DOCTYPE html>
<script src="include.js"></script>
<script>
asyncTest(async (done) => {
const httpServer = httpTestServer();
const url = await httpServer.createEcho("GET", "/secure-context-idl", {
status: 200,
headers: {
"Access-Control-Allow-Origin": "*",
"Content-Type": "text/html",
},
body: `
<script>
// HTTP is not a secure context.
internals.setEnvironmentsTopLevelURL('http://ladybird.org');
parent.postMessage({
SubtleCrypto: !!crypto?.subtle,
Clipboard: typeof navigator.clipboard === "object",
CookieChangeEvent: typeof CookieChangeEvent === "function",
}, "*");
<\/script>`,
});
const frame = document.createElement('iframe');
frame.src = url;
addEventListener("message", (event) => {
println(JSON.stringify(event.data, null, 2));
done();
}, false);
document.body.appendChild(frame);
});
</script>