ladybird/Libraries/LibWeb
Luke Wilde d08d6b08d3 LibWeb: Use enum for serialization and reimplement interface exposure
Our currently implementation of structured serialization has a design
flaw, where if the serialized/transferred type was not used in the
destination realm, it would not be seen as exposed and thus we would
not re-create the type on the other side.

This is very common, for example, transferring a MessagePort to a just
inserted iframe, or the just inserted iframe transferring a MessagePort
to it's parent. This is what Google reCAPTCHA does.

This flaw occurred due to relying on lazily populated HashMaps of
constructors, namespaces and interfaces. This commit changes it so that
per-type "is exposed" implementations are generated.

Since it no longer relies on interface name strings, this commit
changes serializable types to indicate their type with an enum,
in line with how transferrable types indicate their type.

This makes Google reCAPTCHA work on https://www.google.com/recaptcha/api2/demo
It currently doesn't work on non-Google origins due to a separate
same-origin policy bug.
2025-07-15 09:20:02 -04:00
..
Animations LibWeb: Resolve conflicts in compute_keyframe_values correctly 2025-06-23 15:19:07 +01:00
ARIA
Bindings LibWeb: Use enum for serialization and reimplement interface exposure 2025-07-15 09:20:02 -04:00
Clipboard
Compression
ContentSecurityPolicy LibWeb: Avoid accessing opaque origin port during CSP checks 2025-07-13 14:33:33 +02:00
Cookie Everywhere: Replace DateTime::to_string() with UnixDateTime::to_string() 2025-06-19 18:42:45 -06:00
CredentialManagement
Crypto LibWeb: Use enum for serialization and reimplement interface exposure 2025-07-15 09:20:02 -04:00
CSS LibWeb/CSS: Parse the ::slotted pseudo-element 2025-07-15 13:54:17 +01:00
DOM LibWeb: Include or declare missing definitions for PseudoElement.h 2025-07-15 13:54:17 +01:00
DOMURL
Editing LibWeb: Support relative lengths in calc color values 2025-07-04 13:18:55 +01:00
Encoding AK+LibJS: Extract some UTF-16 helpers for use in an outside class 2025-07-03 09:51:56 -04:00
EncryptedMediaExtensions
EntriesAPI
EventTiming
Fetch
FileAPI LibWeb: Use enum for serialization and reimplement interface exposure 2025-07-15 09:20:02 -04:00
Geolocation LibWeb: Implement emulated Geolocation position retrieval 2025-06-24 11:33:41 +02:00
Geometry LibWeb: Use enum for serialization and reimplement interface exposure 2025-07-15 09:20:02 -04:00
HighResolutionTime LibWeb: Add the EpochTimestamp IDL typedef 2025-06-21 10:00:29 +02:00
HTML LibWeb: Use enum for serialization and reimplement interface exposure 2025-07-15 09:20:02 -04:00
IndexedDB LibWeb: Implement cleanup_indexed_database_transactions 2025-06-18 19:05:41 +12:00
Infra
Internals LibWeb: Add internals call to dump display list 2025-07-13 19:15:05 +02:00
IntersectionObserver
Layout LibWeb: Do not create an anonymous container for table cells by default 2025-07-15 10:06:36 +02:00
Loader LibWeb: Restore flags to prevent formatting timestamps as local time 2025-06-25 23:41:04 +02:00
MathML
MediaCapabilitiesAPI
MediaSourceExtensions
MimeSniff
MixedContent
NavigationTiming
Page LibWeb/CSS: Update definition for cursor property 2025-07-09 13:21:26 +02:00
Painting LibWeb: Expand ClipFrame into clip rectangles during display list replay 2025-07-14 15:48:28 +02:00
PerformanceTimeline
PermissionsPolicy
Platform
ReferrerPolicy
RequestIdleCallback
ResizeObserver
ResourceTiming
SecureContexts
Selection LibWeb: Use correct previous word location when moving selection offset 2025-07-03 10:28:38 +01:00
ServiceWorker
SRI
StorageAPI
Streams
SVG LibWeb/SVG: Prefer href to xlink:href attribute on images 2025-07-12 13:13:47 +02:00
TrustedTypes
UIEvents
URLPattern
UserTiming
WebAssembly LibWasm: Use correct null check when getting iterator method 2025-07-13 11:28:19 +02:00
WebAudio LibWeb/WebAudio: Implement AudioNode::disconnect() 2025-07-09 17:52:06 -06:00
WebDriver LibWeb+LibGfx: Replace BackingStore with PaintingSurface 2025-07-04 16:12:47 +02:00
WebGL LibWeb+LibGfx: Replace BackingStore with PaintingSurface 2025-07-04 16:12:47 +02:00
WebIDL LibWeb: Use enum for serialization and reimplement interface exposure 2025-07-15 09:20:02 -04:00
WebSockets
WebVTT
Worker
XHR LibWeb/XHR: Don't construct a String from a String 2025-07-12 02:57:36 +01:00
XLink
XML LibWeb: Check parent node exists before checking its type 2025-07-15 18:37:50 +12:00
CMakeLists.txt LibWeb/CSP: Implement the script-src-attr directive 2025-07-12 13:06:33 +12:00
Dump.cpp LibWeb/CSS: Parse the ::slotted pseudo-element 2025-07-15 13:54:17 +01:00
Dump.h
Forward.h LibWeb: Include or declare missing definitions for PseudoElement.h 2025-07-15 13:54:17 +01:00
idl_files.cmake LibWeb/SVG: Add FEGaussianBlurElement 2025-07-09 18:07:12 +01:00
InvalidateDisplayList.h
Namespace.cpp
Namespace.h
PixelUnits.cpp
PixelUnits.h
TraversalDecision.h
TraversalOrder.h
TreeNode.h