ladybird/Libraries/LibWeb
Aliaksandr Kalenik b3231ea2a0 LibWeb: Make foreignObject establish a containing block for abspos
Absolutely positioned elements inside SVG foreignObject were being
positioned relative to an ancestor containing block outside the SVG,
instead of relative to the foreignObject itself. Per a W3C resolution
and the behavior of other browsers, foreignObject should establish a
containing block for absolutely and fixed positioned elements.

With this fix, the `has_abspos_with_external_containing_block` check
in `set_needs_layout_update()` and the abspos preservation loop in
`relayout_svg_root()` become dead code — remove both and simplify the
ancestor loops. Rename related tests to reflect the new behavior.

Fixes https://github.com/LadybirdBrowser/ladybird/issues/3241
2026-02-17 15:59:59 +01:00
..
Animations LibWeb/Animations: Store AnimationPlaybackEvent times as Ref not Root 2026-02-17 07:40:03 -05:00
ARIA LibWeb: Shave 168 bytes off of ARIAMixin 2025-11-07 16:59:26 +01:00
Bindings LibWeb: Treat numeric PropertyKeys as Strings per spec in PlatformObject 2026-02-16 18:49:15 +01:00
Clipboard LibWeb+UI/AppKit: Ignore unknown clipboard MIME types 2025-10-10 15:10:03 -04:00
Compression Everywhere: Make ByteBuffer::bytes() lvalue-only 2025-12-10 07:43:22 -05:00
ContentSecurityPolicy LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
CookieStore LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
CredentialManagement LibWeb: Implement FederatedCredential ctor and corresponding AO 2026-01-08 13:10:35 +01:00
Crypto LibWeb: Use interface_name instead of serialize_type virtual 2026-02-14 20:22:40 +01:00
CSS LibWeb: Do not mark CSSFontFeatureValuesMap::map_entries as virtual 2026-02-17 15:18:46 +01:00
DOM LibWeb: Make foreignObject establish a containing block for abspos 2026-02-17 15:59:59 +01:00
DOMURL LibWeb: Give IDL exposed PlatformObjects an InterfaceName 2026-02-14 20:22:40 +01:00
Editing LibWeb: Do not scroll cursor into view on programmatic selection changes 2026-02-17 10:24:00 +01:00
Encoding
EncryptedMediaExtensions LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
EntriesAPI
EventTiming AK+LibWeb: Reduce recompilation impact of DOM/Node.h 2026-02-11 20:02:28 +01:00
Fetch LibWeb/Fetch: Store Body Blob as Ref not Root 2026-02-17 07:40:03 -05:00
FileAPI LibWeb: Use interface_name instead of serialize_type virtual 2026-02-14 20:22:40 +01:00
Gamepad LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
Geolocation
Geometry LibWeb: Use interface_name instead of serialize_type virtual 2026-02-14 20:22:40 +01:00
GPC LibWeb+LibWebView+WebContent: Replace DNT with GPC 2025-09-16 10:38:20 +02:00
HighResolutionTime LibWeb: Use enum instead of bool for CanUseCrossOriginIsolatedAPIs 2026-02-13 16:47:42 +00:00
HTML LibWeb/HTML: Store MessageEvent source as Ref not Root 2026-02-17 07:40:03 -05:00
IndexedDB LibWeb/IndexedDB: Store Key's key-array value as Ref not Root 2026-02-17 07:40:03 -05:00
Infra LibTextCodec+LibWeb: Move isomorphic coders to LibTextCodec 2025-11-27 14:57:29 +01:00
Internals LibWeb: Add dumpPaintableTree() to Internals API 2026-02-15 17:47:30 +01:00
IntersectionObserver LibWeb: Reduce recompilation impact of DOM/Element.h 2026-02-11 20:02:28 +01:00
Layout LibWeb: Make foreignObject establish a containing block for abspos 2026-02-17 15:59:59 +01:00
Loader AK: Remove unused include from NumberFormat 2026-02-17 12:38:51 +00:00
MathML LibWeb: Give IDL exposed PlatformObjects an InterfaceName 2026-02-14 20:22:40 +01:00
MediaCapabilitiesAPI LibWeb: Extract some CORS and MIME Fetch helpers to their own files 2025-11-27 14:57:29 +01:00
MediaSourceExtensions
MimeSniff LibHTTP+LibWeb+RequestServer: Move Fetch's HTTP header infra to LibHTTP 2025-11-27 14:57:29 +01:00
MixedContent LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
NavigationTiming LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
NotificationsAPI LibWeb: Add constructor for Notification and getter methods 2026-02-13 16:47:42 +00:00
Page LibWeb: Don't select text when multi-clicking user-select:none node 2026-02-16 15:57:55 +01:00
Painting LibWeb: Inflate range rect by font ascenders/descenders 2026-02-17 10:51:48 +01:00
PerformanceTimeline
PermissionsPolicy
Platform LibImageDecoderClient+LibWebView: Add animation session client API 2026-02-13 18:34:24 +01:00
ReferrerPolicy LibWeb: Store HTTP methods and headers as ByteString 2025-11-26 09:15:06 -05:00
RequestIdleCallback
ResizeObserver LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
ResourceTiming
SecureContexts AK+LibURL: Use AK::IPv4/6 in Host 2025-12-31 10:24:56 +01:00
Selection LibWeb: Do not scroll cursor into view on programmatic selection changes 2026-02-17 10:24:00 +01:00
Serial
ServiceWorker LibHTTP+LibWeb: Move Infrastructure::Request::CacheMode to LibHTTP 2026-01-22 07:05:06 -05:00
Speech LibWeb: Stub SpeechSynthesis.cancel() 2026-02-10 11:58:23 +01:00
SRI
StorageAPI LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
Streams LibWeb: Give IDL exposed PlatformObjects an InterfaceName 2026-02-14 20:22:40 +01:00
SVG LibWeb: Make StyleElementUtils into a base class, StyleElementBase 2026-02-12 16:23:12 +01:00
TrustedTypes LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
UIEvents LibWeb: Dispatch pointer boundary events when hovered node changes 2026-02-15 02:36:01 +00:00
URLPattern
UserTiming
ViewTransition LibWeb: Ensure JS execution context exists in view transition callbacks 2026-02-15 02:49:56 +01:00
WebAssembly Everywhere: Remove double // on comments 2026-02-11 13:28:01 -06:00
WebAudio LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
WebDriver LibJS: Move SharedFunctionInstanceData creation out of FunctionNode 2026-02-11 23:57:41 +01:00
WebGL LibWeb: Give IDL exposed PlatformObjects an InterfaceName 2026-02-14 20:22:40 +01:00
WebIDL LibWeb: Use interface_name instead of serialize_type virtual 2026-02-14 20:22:40 +01:00
WebSockets LibHTTP+Everywhere: Move the cookie implementation to LibHTTP 2026-02-10 12:21:20 +01:00
WebVTT
WebXR LibWeb: Implement the very basics of XRSession 2026-02-04 15:08:37 +01:00
Worker LibHTTP+Everywhere: Move the cookie implementation to LibHTTP 2026-02-10 12:21:20 +01:00
XHR LibWeb: Give IDL exposed PlatformObjects an InterfaceName 2026-02-14 20:22:40 +01:00
XLink
XML LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
XPath LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
CMakeLists.txt LibWeb: Implement CSSFontFeatureValuesRule 2026-02-17 12:25:27 +00:00
Dump.cpp LibWeb: Dump all paintables attached to a layout node in dump_tree 2026-02-15 17:47:30 +01:00
Dump.h LibWeb: Make dump_sheet() indentable 2025-12-04 16:24:04 +00:00
Forward.h LibWeb: Implement CSSFontFeatureValuesRule 2026-02-17 12:25:27 +00:00
GraphemeEdgeTracker.cpp LibWeb: Apply letter-spacing for selection rects and grapheme bounds 2026-02-17 10:51:48 +01:00
GraphemeEdgeTracker.h LibWeb: Expose GraphemeEdgeTracker's find_line_start/find_line_end 2026-02-06 14:18:10 +00:00
idl_files.cmake LibWeb: Implement CSSFontFeatureValuesRule 2026-02-17 12:25:27 +00:00
InvalidateDisplayList.h
Namespace.cpp
Namespace.h
PixelUnits.cpp
PixelUnits.h LibWeb: Implement mouse auto scrolling of scrollable containers 2026-02-11 11:04:53 +01:00
TraversalDecision.h
TraversalOrder.h
TreeNode.h Everywhere: Remove double // on comments 2026-02-11 13:28:01 -06:00