mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 05:47:34 +00:00
LibWeb: Make Window.postMessage closer to the spec
The main issues are using Structured{Serialize,Deserailize} instead of Structured{Serialize,Deserialize}WithTransfer and the temporary execution context usage for StructuredDeserialize. Allows Discord to load once again, as it uses a postMessage scheduler to render components, including the main App component. The callback checked the (previously) non-existent source attribute of the MessageEvent and returned if it was not the main window. Fixes the Twitch cookie consent banner saying "failed integrity check" for unknown reasons, but presumably related to the source and origin attributes.
This commit is contained in:
parent
464cc55b16
commit
fc42c75a0c
5 changed files with 361 additions and 13 deletions
100
Tests/LibWeb/Text/expected/HTML/Window-postMessage.txt
Normal file
100
Tests/LibWeb/Text/expected/HTML/Window-postMessage.txt
Normal file
|
@ -0,0 +1,100 @@
|
|||
originError instanceof DOMException: true
|
||||
originError.name: SyntaxError
|
||||
originError.message: Invalid URL for targetOrigin: 'aaaa'
|
||||
originError.constructor === window.DOMException: true
|
||||
originParsedBeforeSerializeError instanceof DOMException: true
|
||||
originParsedBeforeSerializeError.name: SyntaxError
|
||||
originParsedBeforeSerializeError.message: Invalid URL for targetOrigin: 'aaaa'
|
||||
originParsedBeforeSerializeError.constructor === window.DOMException: true
|
||||
serializeError instanceof DOMException: true
|
||||
serializeError.name: DataCloneError
|
||||
serializeError.message: Unsupported type
|
||||
serializeError.constructor === window.DOMException: true
|
||||
originIframeError instanceof DOMException: false
|
||||
originIframeError instanceof iframe.contentWindow.DOMException: true
|
||||
originIframeError.name: SyntaxError
|
||||
originIframeError.message: Invalid URL for targetOrigin: 'aaaa'
|
||||
originIframeError.constructor === DOMException: false
|
||||
originIframeError.constructor === iframe.contentWindow.DOMException: true
|
||||
originParsedBeforeSerializeIframeError instanceof DOMException: false
|
||||
originParsedBeforeSerializeIframeError instanceof iframe.contentWindow.DOMException: true
|
||||
originParsedBeforeSerializeIframeError.name: SyntaxError
|
||||
originParsedBeforeSerializeIframeError.message: Invalid URL for targetOrigin: 'aaaa'
|
||||
originParsedBeforeSerializeIframeError.constructor === DOMException: false
|
||||
originParsedBeforeSerializeIframeError.constructor === iframe.contentWindow.DOMException: true
|
||||
serializeIframeError instanceof DOMException: false
|
||||
serializeIframeError instanceof iframe.contentWindow.DOMException: true
|
||||
serializeIframeError.name: DataCloneError
|
||||
serializeIframeError.message: Unsupported type
|
||||
serializeIframeError.constructor === DOMException: false
|
||||
serializeIframeError.constructor === iframe.contentWindow.DOMException: true
|
||||
Message 1 data: undefined
|
||||
Message 1 origin: file://
|
||||
Message 1 lastEventId:
|
||||
Message 1 source: [object Window]
|
||||
Message 1 source === window: true
|
||||
Message 1 source === iframe.contentWindow: false
|
||||
Message 1 source === blobIframe.contentWindow: false
|
||||
Message 2 data: null
|
||||
Message 2 origin: file://
|
||||
Message 2 lastEventId:
|
||||
Message 2 source: [object Window]
|
||||
Message 2 source === window: true
|
||||
Message 2 source === iframe.contentWindow: false
|
||||
Message 2 source === blobIframe.contentWindow: false
|
||||
Message 3 data: true
|
||||
Message 3 origin: file://
|
||||
Message 3 lastEventId:
|
||||
Message 3 source: [object Window]
|
||||
Message 3 source === window: true
|
||||
Message 3 source === iframe.contentWindow: false
|
||||
Message 3 source === blobIframe.contentWindow: false
|
||||
Message 4 data: false
|
||||
Message 4 origin: file://
|
||||
Message 4 lastEventId:
|
||||
Message 4 source: [object Window]
|
||||
Message 4 source === window: true
|
||||
Message 4 source === iframe.contentWindow: false
|
||||
Message 4 source === blobIframe.contentWindow: false
|
||||
Message 5 data: 123
|
||||
Message 5 origin: file://
|
||||
Message 5 lastEventId:
|
||||
Message 5 source: [object Window]
|
||||
Message 5 source === window: true
|
||||
Message 5 source === iframe.contentWindow: false
|
||||
Message 5 source === blobIframe.contentWindow: false
|
||||
Message 6 data: 123.456
|
||||
Message 6 origin: file://
|
||||
Message 6 lastEventId:
|
||||
Message 6 source: [object Window]
|
||||
Message 6 source === window: true
|
||||
Message 6 source === iframe.contentWindow: false
|
||||
Message 6 source === blobIframe.contentWindow: false
|
||||
Message 7 data: 9007199254740991
|
||||
Message 7 origin: file://
|
||||
Message 7 lastEventId:
|
||||
Message 7 source: [object Window]
|
||||
Message 7 source === window: true
|
||||
Message 7 source === iframe.contentWindow: false
|
||||
Message 7 source === blobIframe.contentWindow: false
|
||||
Message 8 data: This is a string
|
||||
Message 8 origin: file://
|
||||
Message 8 lastEventId:
|
||||
Message 8 source: [object Window]
|
||||
Message 8 source === window: true
|
||||
Message 8 source === iframe.contentWindow: false
|
||||
Message 8 source === blobIframe.contentWindow: false
|
||||
Message 9 data: I am from another ~planet~ iframe
|
||||
Message 9 origin: file://
|
||||
Message 9 lastEventId:
|
||||
Message 9 source: [object Window]
|
||||
Message 9 source === window: false
|
||||
Message 9 source === iframe.contentWindow: true
|
||||
Message 9 source === blobIframe.contentWindow: false
|
||||
Message 10 data: All done :^)
|
||||
Message 10 origin: file://
|
||||
Message 10 lastEventId:
|
||||
Message 10 source: [object Window]
|
||||
Message 10 source === window: false
|
||||
Message 10 source === iframe.contentWindow: false
|
||||
Message 10 source === blobIframe.contentWindow: true
|
Loading…
Add table
Add a link
Reference in a new issue