ladybird/Libraries/LibWeb
Andreas Kling b981e6f7bc LibWeb: Avoid many style invalidations on DOM attribute mutation
Many times, attribute mutation doesn't necessitate a full style
invalidation on the element. However, the conditions are pretty
elaborate, so this first version has a lot of false positives.

We only need to invalidate style when any of these things apply:

1. The change may affect the match state of a selector somewhere.
2. The change may affect presentational hints applied to the element.

For (1) in this first version, we have a fixed list of attribute names
that may affect selectors. We also collect all names referenced by
attribute selectors anywhere in the document.

For (2), we add a new Element::is_presentational_hint() virtual that
tells us whether a given attribute name is a presentational hint.

This drastically reduces style work on many websites. As an example,
https://cnn.com/ is once again browseable.
2024-12-24 17:17:09 +01:00
..
Animations LibWeb: Add mechanism to invalidate only inherited styles 2024-12-23 17:05:09 +01:00
ARIA LibWeb: Replace ARIA “synonym” roles with their preferred synonyms 2024-12-20 05:45:59 -08:00
Bindings LibWeb: PlatformObject::DefineOwnProperty fix 'has own property' check 2024-12-20 15:10:24 +01:00
Clipboard LibWeb: Implement the ClipboardItem API 2024-12-20 15:29:18 +00:00
Compression LibWeb/Streams: Move "set up transform stream" to TransformStream 2024-12-11 15:11:21 +01:00
Cookie
Crypto LibWeb: Correctly normalize HashAlgorithmIdentifier 2024-12-18 12:45:06 -08:00
CSS LibWeb: Avoid many style invalidations on DOM attribute mutation 2024-12-24 17:17:09 +01:00
DOM LibWeb: Avoid many style invalidations on DOM attribute mutation 2024-12-24 17:17:09 +01:00
DOMParsing
DOMURL LibURL+LibWeb: Make URL::serialize return a String 2024-12-04 16:34:13 +00:00
Editing LibWeb: Do not require visible nodes in the wrap editing algorithm 2024-12-21 19:15:58 +01:00
Encoding
EntriesAPI
EventTiming
Fetch LibWeb: Add method for "is CORS-same-origin" 2024-12-22 12:30:09 +01:00
FileAPI LibWeb/Streams: Move ReadableStream functions out of AbstractOperations 2024-12-11 15:11:21 +01:00
Geometry LibWeb: Rename CSS::StyleProperties => CSS::ComputedProperties 2024-12-22 10:12:49 +01:00
HighResolutionTime LibWeb: Use relevant principal settings for HighResolutionTime 2024-11-30 11:55:11 +01:00
HTML LibWeb: Avoid many style invalidations on DOM attribute mutation 2024-12-24 17:17:09 +01:00
IndexedDB LibWeb: Mark open request as processed if the spec forgot 2024-12-14 23:02:59 +01:00
Infra LibWeb: Avoid re-encoding response headers 2024-12-17 13:44:10 +01:00
Internals headless-browser: Let tests set their own timeout duration 2024-12-19 17:27:33 +00:00
IntersectionObserver
Layout LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
Loader Everywhere: Include HashMap only where it's actually used 2024-12-09 12:31:16 +01:00
MathML LibWeb: Align mfrac Padding with Updated MathML Core Spec 2024-12-09 20:06:48 +00:00
MediaCapabilitiesAPI
MediaSourceExtensions LibWeb: Partially implement MediaSource.isTypeSupported() 2024-11-26 23:51:02 +01:00
MimeSniff
MixedContent LibURL+LibWeb: Make URL::serialize return a String 2024-12-04 16:34:13 +00:00
NavigationTiming
Page LibWeb: Use paintables when calculating mouse event offset 2024-12-20 15:50:41 +01:00
Painting LibGfx+LibWeb: Draw glyph runs with subpixel accuracy 2024-12-21 23:09:52 +01:00
PerformanceTimeline
PermissionsPolicy
Platform LibGfx+LibWeb: Do some color management on images with an ICC profile 2024-12-05 17:16:41 +01:00
ReferrerPolicy LibURL+LibWeb: Make URL::serialize return a String 2024-12-04 16:34:13 +00:00
RequestIdleCallback
ResizeObserver LibWeb: Report exceptions that occur during resize observer callback 2024-12-19 15:25:08 +00:00
SecureContexts LibURL: Migrate Origin scheme from ByteString to String 2024-11-30 12:07:39 +01:00
Selection LibWeb: Add concept of boundary point to DOM::AbstractRange 2024-12-21 19:15:58 +01:00
ServiceWorker LibURL+LibWeb: Make URL::serialize return a String 2024-12-04 16:34:13 +00:00
SRI
StorageAPI
Streams LibWeb: Move ad hoc CallbackType helper method to CallbackType header 2024-12-11 15:11:21 +01:00
SVG LibWeb: Avoid many style invalidations on DOM attribute mutation 2024-12-24 17:17:09 +01:00
UIEvents
UserTiming
WebAssembly LibWeb: Add WebAssembly.Global and exports support for global instances 2024-12-24 15:20:28 +01:00
WebAudio LibWeb/WebAudio: Remove copy-pasted comments in DynamicsCompressorNode 2024-12-18 10:19:46 +01:00
WebDriver LibWeb: Align execute_async_script variable name with the latest spec 2024-12-12 05:16:18 -08:00
WebGL LibGfx+LibWeb: Specify bottom left origin for WebGL's PaintingSurface 2024-12-20 20:47:45 +01:00
WebIDL LibWeb: Update WebIDL::invoke_callback() to follow the latest spec 2024-12-19 15:25:08 +00:00
WebSockets LibURL+LibWeb: Make URL::serialize return a String 2024-12-04 16:34:13 +00:00
WebVTT
Worker Everywhere: Include HashMap only where it's actually used 2024-12-09 12:31:16 +01:00
XHR LibWeb: Mark local variables captured in GC functions as ignored 2024-12-10 07:13:00 +01:00
XLink
XML LibWeb: Rename abbreviated variable name 2024-12-09 09:13:24 +00:00
CMakeLists.txt LibWeb: Add WebAssembly.Global and exports support for global instances 2024-12-24 15:20:28 +01:00
Dump.cpp LibWeb: Make CSS::ComputedProperties GC-allocated 2024-12-22 10:12:49 +01:00
Dump.h LibWeb: Split StyleComputer work into two phases with separate outputs 2024-12-22 10:12:49 +01:00
Forward.h LibWeb: Add WebAssembly.Global and exports support for global instances 2024-12-24 15:20:28 +01:00
idl_files.cmake LibWeb: Add WebAssembly.Global and exports support for global instances 2024-12-24 15:20:28 +01:00
InvalidateDisplayList.h
Namespace.cpp
Namespace.h
PixelUnits.cpp
PixelUnits.h
TraversalDecision.h
TraversalOrder.h
TreeNode.h LibWeb: Remove unused (Tree)Node::index_of_child() 2024-12-18 23:46:22 +00:00