ladybird/Libraries/LibWeb
Aliaksandr Kalenik d1fbb7b51e LibWeb: Invalidate less elements affected by CSS custom properties
Before this change, whenever element's attributes changed, we would add
a flag to "pending invalidation", indicating that all descendants whose
style uses CSS custom properties needed to be recomputed. This resulted
in severe overinvalidation, because we would run invalidation regardless
of whether any custom property on affected element actually changed.

This change takes another approach, and now we decide whether
descendant's style needs to be recomputed based on whether ancestor's
style recomputation results in a change of custom properties, though
this approach adds a little overhead to style computation as now we have
to compare old vs new hashmap of custom properties.

This brings substantial improvement on discord and x.com where, before
this change, advantage of using invalidation sets was lost and we had
to recompute all descendants, because almost all of them use custom
properties.
2025-07-30 11:06:05 +02:00
..
Animations Everywhere: Use HashMap::update() where applicable 2025-07-25 16:22:06 +02:00
ARIA Everywhere: Run clang-format 2025-05-14 02:01:59 -06:00
Bindings LibWeb+LibUnicode+WebContent: Port DOM:CharacterData to UTF-16 2025-07-24 19:00:20 +02:00
Clipboard LibWeb: Implement navigator.clipboard.read 2025-05-02 17:46:16 -04:00
Compression LibCompress: Error out when encounters and incomplete stream 2025-06-14 18:26:56 -04:00
ContentSecurityPolicy LibWeb/CSP: Implement the child-src directive 2025-07-19 17:15:21 +12:00
Cookie Everywhere: Replace DateTime::to_string() with UnixDateTime::to_string() 2025-06-19 18:42:45 -06:00
CredentialManagement Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Crypto LibWeb: Don't import raw X25519 key of incorrect length 2025-07-26 10:43:16 -06:00
CSS LibWeb: Invalidate less elements affected by CSS custom properties 2025-07-30 11:06:05 +02:00
DOM LibWeb: Invalidate less elements affected by CSS custom properties 2025-07-30 11:06:05 +02:00
DOMURL LibWeb: Use infra sorting for URLSearchParam's sort() 2025-05-12 11:20:32 +02:00
Editing LibWeb: Port node text content to UTF-16 2025-07-28 18:30:50 +02:00
Encoding AK+LibJS: Extract some UTF-16 helpers for use in an outside class 2025-07-03 09:51:56 -04:00
EncryptedMediaExtensions LibWeb: Improve Enum generation in IDLGenerator 2025-03-04 16:35:04 +00:00
EntriesAPI LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
EventTiming Meta: Enforce newlines around namespaces 2025-05-14 02:01:59 -06:00
Fetch LibWeb: Make ESO "fetch group" weakly reference the fetch records 2025-07-29 20:00:17 -04:00
FileAPI AK+LibJS+LibWeb+LibRegex: Replace AK::Utf16Data with AK::Utf16String 2025-07-18 12:45:38 -04:00
Gamepad LibWeb: Stub Navigator.getGamepads() 2025-07-22 11:55:29 -04:00
Geolocation LibWeb: Implement emulated Geolocation position retrieval 2025-06-24 11:33:41 +02:00
Geometry LibWeb: Ensure cast to double for double matrix 2025-07-28 09:15:23 +02:00
HighResolutionTime LibWeb: Only expose performance.{timing,navigation} on Window 2025-07-25 11:46:58 +02:00
HTML LibWeb: Make ESO "fetch group" weakly reference the fetch records 2025-07-29 20:00:17 -04:00
IndexedDB LibWeb: Implement cleanup_indexed_database_transactions 2025-06-18 19:05:41 +12:00
Infra LibWeb: Port node text content to UTF-16 2025-07-28 18:30:50 +02:00
Internals LibWeb: Send a beforeinput event for pasting 2025-07-23 22:04:45 +02:00
IntersectionObserver LibWeb: Convert trivial attributes to FrozenArray 2025-04-25 16:43:43 +02:00
Layout LibWeb: Support CSS content property images (and lists, too!) 2025-07-28 22:46:27 +02:00
Loader LibWeb: Restore flags to prevent formatting timestamps as local time 2025-06-25 23:41:04 +02:00
MathML LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
MediaCapabilitiesAPI LibWeb: Add missing WebIDL/Types include to MediaCapabilities.h 2025-05-09 23:14:27 -06:00
MediaSourceExtensions LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
MimeSniff LibWeb/MimeSniff: Add MP3 without ID3 sniffing 2025-06-09 07:50:26 -06:00
MixedContent AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
NavigationTiming LibWeb: Only expose performance.{timing,navigation} on Window 2025-07-25 11:46:58 +02:00
Page LibWeb+UI: Add an explicit IPC to handle mouse leave events 2025-07-28 21:26:33 +02:00
Painting LibWeb: Allow ImageProvider subclasses to visit additional GC edges 2025-07-28 22:46:27 +02:00
PerformanceTimeline LibWeb: Update FIXMEs about FrozenArray with more up-to-date description 2025-04-25 16:43:43 +02:00
PermissionsPolicy LibWeb: Remove OOM handling from the AutoplayAllowlist 2025-03-30 16:18:57 +01:00
Platform LibWeb: Exit the current process when event loop quits during spin_until 2025-04-30 11:12:23 -04:00
ReferrerPolicy LibURL+LibWeb: Make URL::serialize return a String 2024-12-04 16:34:13 +00:00
RequestIdleCallback LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
ResizeObserver LibWeb: Unregister ResizeObserver from Document when it has no targets 2025-07-30 00:54:57 +02:00
ResourceTiming LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
SecureContexts Everywhere: Use URL::about_XXX factory functions 2025-02-15 17:05:55 +00:00
Selection LibWeb: Port DOM::Range stringification to UTF-16 2025-07-25 18:16:22 +02:00
ServiceWorker LibWeb: Stub CacheStorage::has() 2025-06-08 18:26:13 +02:00
SRI LibWeb: Fix SRI handling of badly-formatted strings 2025-05-06 13:02:58 -04:00
StorageAPI Everywhere: Implement persistence of localStorage using sqlite 2025-06-12 17:04:35 +02:00
Streams LibWeb: Align specification step text with current specification 2025-07-20 12:30:43 +12:00
SVG LibWeb: Allow ImageProvider subclasses to visit additional GC edges 2025-07-28 22:46:27 +02:00
TrustedTypes LibWeb: Update Document.write spec steps 2025-02-25 15:19:38 +01:00
UIEvents LibWeb: Port document.execCommand and InputEvent to UTF-16 2025-07-26 00:40:06 +02:00
URLPattern LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
UserTiming LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
WebAssembly LibWeb: Support wasm module instantiation using a global address 2025-07-25 15:35:27 +02:00
WebAudio LibWeb: Add BaseAudioContext::createScriptProcessor() 2025-07-25 11:48:04 +02:00
WebDriver LibWeb: Port HTMLElement innerText/outerText to UTF-16 2025-07-28 18:30:50 +02:00
WebGL LibWeb+LibGfx: Replace BackingStore with PaintingSurface 2025-07-04 16:12:47 +02:00
WebIDL LibIDL+LibWeb: Support UTF-16 USVString 2025-07-26 00:40:06 +02:00
WebSockets LibWeb: Fix acceptable WebSocket close code range 2025-07-27 15:36:34 +02:00
WebVTT LibWeb: Only set prototype once for object with IDL interface 2025-04-20 18:43:11 +02:00
Worker LibWeb+WebWorker: Use IPC mechanics for structured serialization 2025-07-18 10:09:02 -04:00
XHR LibWeb: Include submitter name and value when constructing FormData 2025-07-15 20:49:39 +02:00
XLink LibWeb: Remove the initialize_strings methods 2025-01-12 00:35:58 +01:00
XML LibWeb+LibUnicode+WebContent: Port DOM:CharacterData to UTF-16 2025-07-24 19:00:20 +02:00
CMakeLists.txt LibWeb: Add BaseAudioContext::createScriptProcessor() 2025-07-25 11:48:04 +02:00
Dump.cpp LibWeb: Port rendered text to UTF-16 2025-07-25 18:16:22 +02:00
Dump.h LibWeb/CSS: Add basic implementation of CSSMarginRule 2025-05-16 11:01:39 +01:00
Forward.h LibWeb: Fix scroll state refresh in cached display list for iframes 2025-07-26 11:53:21 -04:00
idl_files.cmake LibWeb: Add BaseAudioContext::createScriptProcessor() 2025-07-25 11:48:04 +02:00
InvalidateDisplayList.h
Namespace.cpp LibWeb: Remove the initialize_strings methods 2025-01-12 00:35:58 +01:00
Namespace.h LibWeb: Remove the initialize_strings methods 2025-01-12 00:35:58 +01:00
PixelUnits.cpp
PixelUnits.h LibWeb: Clamp layout content sizes to a max value instead of crashing 2025-02-05 18:28:55 +01:00
TraversalDecision.h
TraversalOrder.h
TreeNode.h LibWeb: Move non-DOM-related methods from DOM::Node to TreeNode 2025-06-07 16:51:00 +02:00