1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:27:35 +00:00

LibWeb: Use StructuredSerializeWithTransfer in window.postMessage()

And update tests to transfer message a message port between iframes.
This commit is contained in:
Andrew Kaster 2023-12-12 13:41:03 -07:00 committed by Andrew Kaster
parent 84ac6a454f
commit ec11743fae
3 changed files with 68 additions and 18 deletions

View file

@ -3,7 +3,7 @@
<body>
<script>
window.addEventListener('message', (event) => {
window.parent.postMessage(event.data, '*');
window.parent.postMessage(event.data, '*', event.ports);
});
</script>
<body>
@ -30,6 +30,9 @@
println(`Message ${messageCount} origin: ${messageEvent.origin}`);
println(`Message ${messageCount} lastEventId: ${messageEvent.lastEventId}`);
println(`Message ${messageCount} source: ${messageEvent.source}`);
println(`Message ${messageCount} ports: ${messageEvent.ports}`);
println(`Message ${messageCount} ports === ports: ${messageEvent.ports === messageEvent.ports}`);
println(`Message ${messageCount} Object.isFrozen(ports): ${Object.isFrozen(messageEvent.ports)}`);
println(`Message ${messageCount} source === window: ${messageEvent.source === window}`);
println(`Message ${messageCount} source === iframe.contentWindow: ${messageEvent.source === iframe.contentWindow}`);
println(`Message ${messageCount} source === blobIframe.contentWindow: ${messageEvent.source === blobIframe.contentWindow}`);
@ -55,6 +58,8 @@
window.postMessage("This is a string", "/");
window.postMessage("I shouldn't appear, I'm not same origin!", "https://serenityos.org");
iframe.contentWindow.postMessage("I am from another ~planet~ iframe", "*");
let channel = new MessageChannel();
window.postMessage({foo: [channel.port1]}, "*", [channel.port1]);
blobIframe.contentWindow.postMessage("All done :^)", iframeSrcdocBlobUrl);
try {