ladybird/Libraries/LibWeb
Andreas Kling fa579754bf LibWeb: Use invalidation plans for pseudo-class changes
Replace PseudoClassInvalidator's subtree scan with targeted
invalidation for elements whose pseudo-class state changes. This scopes
state changes to affected selectors instead of rechecking a whole
common-ancestor subtree.

Use the ancestor chain that matches each pseudo-class. Hover walks the
shadow-including chain. :focus-within walks the flat-tree chain, so
slotted content invalidates its assigned slot and relevant shadow-tree
descendants. Focus, FocusVisible, and Target invalidate just the state
node.

Route each affected element through Element::invalidate_style with the
pseudo-class property. This uses the same invalidation-plan machinery as
Disabled, Checked, and other pseudo-class state changes.

Interaction state pseudo classes are not tracked in :has() metadata, so
schedule :has() ancestor invalidation explicitly when the state flips.
The callers no longer need cross-scope branching. The chain walk handles
shadow boundaries, and property invalidation already visits every
observer style scope.
2026-05-23 23:37:36 +02:00
..
Animations LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
ARIA
Bindings LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Clipboard LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Compositor Compositor+WebContent+LibWebView: Implement service-side compositor IPC 2026-05-22 19:50:42 +01:00
Compression LibWeb+LibIDL: Remove support for #import directives during parsing 2026-04-24 20:08:29 +02:00
ContentSecurityPolicy LibGC: Default-construct RootVector from the global heap 2026-05-20 20:37:55 +02:00
CookieStore LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
CredentialManagement LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
Crypto LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
CSS LibWeb: Use invalidation plans for pseudo-class changes 2026-05-23 23:37:36 +02:00
DOM LibWeb: Use invalidation plans for pseudo-class changes 2026-05-23 23:37:36 +02:00
DOMURL LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Editing LibGC: Default-construct ConservativeVector from the global heap 2026-05-20 20:37:55 +02:00
Encoding LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
EncryptedMediaExtensions LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
EntriesAPI LibWeb/Bindings: Emit one bindings header and cpp per IDL 2026-04-21 07:36:13 +02:00
EventTiming LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
Fetch LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
FileAPI LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Fullscreen LibWeb+LibIDL: Remove support for #import directives during parsing 2026-04-24 20:08:29 +02:00
Gamepad LibGC: Default-construct RootVector from the global heap 2026-05-20 20:37:55 +02:00
Geolocation LibWeb: Support Geolocation permission 2026-05-11 21:01:01 +02:00
Geometry LibWeb: Make TransformationSV::to_matrix infallible 2026-05-21 17:07:58 +01:00
GPC
HighResolutionTime LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
HTML LibWeb: Rename m_rendering_thread_display_list_* to m_compositor_* 2026-05-23 18:13:29 +01:00
IndexedDB LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Infra
Internals LibWeb: Avoid cold rule cache builds for :has() checks 2026-05-23 22:03:46 +02:00
IntersectionObserver LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Layout LibWeb: Stop idle animated CSS image timers 2026-05-23 11:36:53 +02:00
Loader LibWeb: Add cosmetic rules to ContentBlocker 2026-05-21 21:16:56 +02:00
MathML LibWeb: Rename HTMLOrSVGElement to HTMLOrSVGOrMathMLElement 2026-05-06 17:42:36 +01:00
MediaCapabilitiesAPI LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
MediaCapture LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
MediaSourceExtensions LibMedia+LibWeb: Speculatively find keyframes near fast seek targets 2026-05-13 02:05:35 -05:00
MimeSniff
MixedContent LibWeb: Reduce recompilation impact of DOM/Document.h 2026-02-11 20:02:28 +01:00
NavigationTiming LibWeb: Fix PerformanceTiming getters producing wrong wall clock values 2026-05-19 19:22:11 +02:00
NotificationsAPI LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
Page LibWeb: Keep shadow rule caches for user styles 2026-05-23 22:03:46 +02:00
Painting LibWeb: Account for transforms when culling effects 2026-05-22 21:25:21 +02:00
PerformanceTimeline LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
PermissionsAPI LibWeb: Support Geolocation permission 2026-05-11 21:01:01 +02:00
PermissionsPolicy LibWeb/PermissionsPolicy: Allow autoplay of file:// media from file:// 2026-03-01 01:04:10 +01:00
Platform LibWeb: Keep active platform timers alive during GC 2026-05-10 10:58:11 +02:00
ReferrerPolicy
RequestIdleCallback LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
ResizeObserver LibGC: Default-construct RootVector from the global heap 2026-05-20 20:37:55 +02:00
ResourceTiming LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
Rust LibWeb: Implement chardetng-based encoding detection for HTML parsing 2026-05-23 11:57:33 +02:00
SecureContexts LibWebView: Add bookmark import/export to about:bookmarks 2026-04-22 08:02:15 -04:00
Selection LibWeb: Avoid a crash in Selection.containsNode() with a detached range 2026-05-22 16:39:25 +02:00
Serial LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
ServiceWorker LibWeb: Implement ServiceWorkerContainer getRegistrations 2026-05-23 19:11:01 +02:00
Speech LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
SRI
StorageAPI LibWeb: Implement legacy-clone of session storage shed on window.open 2026-05-18 16:38:15 +02:00
Streams LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
SVG LibWeb: Make TransformationSV::to_matrix infallible 2026-05-21 17:07:58 +01:00
TrustedTypes LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
UIEvents LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
URLPattern LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
UserTiming LibWeb/Bindings: Generate struct definitions from IDL dictionaries 2026-05-09 10:49:49 +02:00
ViewTransition LibWeb: Make DOM::PseudoElement abstract 2026-05-21 14:26:22 +01:00
WebAssembly LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
WebAudio LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
WebDriver LibWeb: Fix socksProxy validation error messages 2026-05-23 08:54:43 -04:00
WebGL LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
WebIDL LibJS+LibWeb: Use the unified Visitor for Variant-holding members 2026-05-15 08:51:17 +02:00
WebSockets LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
WebVTT LibWeb+LibIDL: Remove support for #import directives during parsing 2026-04-24 20:08:29 +02:00
WebXR LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
Worker LibWeb: Keep worker startup reachable until script load completes 2026-04-27 18:02:49 +02:00
XHR LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
XLink
XML LibGC: Default-construct RootVector from the global heap 2026-05-20 20:37:55 +02:00
XPath LibWeb+LibIDL: Remove support for #import directives during parsing 2026-04-24 20:08:29 +02:00
CMakeLists.txt LibWeb: Implement chardetng-based encoding detection for HTML parsing 2026-05-23 11:57:33 +02:00
Dump.cpp LibWeb: Rename use_pseudo_element 2026-05-21 14:26:22 +01:00
Dump.h LibWeb: Rename show_cascaded_properties flag in dump_tree() 2026-05-05 16:02:23 +02:00
Forward.h LibWeb: Unify WebIDL C++ type generation 2026-05-23 18:26:12 +02:00
GraphemeEdgeTracker.cpp LibWeb: Use the ASCII line segmenter for eligible text 2026-05-05 18:59:07 +02: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/CSS: Implement the @scope rule 2026-05-22 10:00:42 +01:00
InvalidateDisplayList.h
Namespace.cpp
Namespace.h
PixelUnits.cpp LibIPC: Support DistinctNumeric serialization 2026-05-21 11:45:06 +01:00
PixelUnits.h LibIPC: Support DistinctNumeric serialization 2026-05-21 11:45:06 +01:00
RefCountedTreeNode.h LibWeb: Add RefCountedTreeNode 2026-05-07 15:03:44 +02:00
TraversalDecision.h
TraversalOrder.h
TreeNode.h LibWeb: Make Paintable tree ref-counted 2026-05-07 15:03:44 +02:00