ladybird/Libraries/LibWeb
Aliaksandr Kalenik 0ab61a94d7 LibWeb: Bucket hover rules using RuleCache
Analysis of selectors on modern websites shows that the `:hover`
pseudo-class is mostly used in the subject position within relatively
simple selectors like `.a:hover`. This suggests that we could greatly
benefit from segregating them by id/class/tag name, this way reducing
number of selectors tested during hover style invalidation.

With this change, hover invalidation on Discord goes down from 70ms to
3ms on my machine. I also tested GMail and GitHub where this change
shows nice 2x-3x speedup.
2025-02-22 10:12:24 +01:00
..
Animations LibWeb: Early return when invalidations=none in animation style update 2025-02-18 00:24:45 +01:00
ARIA LibWeb: Sync AriaRoles.json w/ Characteristics data in current spec 2025-02-21 09:08:56 +00:00
Bindings LibWeb: Make base URL of HTML::Script Optional 2025-02-19 08:01:35 -05:00
Clipboard AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
Compression
Cookie
CredentialManagement LibWeb: Stub for Credential Management API 2025-02-05 13:18:47 -07:00
Crypto AK+Everywhere: Remove now-unecessary use of ByteString with JSON types 2025-02-20 19:27:51 -05:00
CSS LibWeb: Bucket hover rules using RuleCache 2025-02-22 10:12:24 +01:00
DOM LibWeb: Bucket hover rules using RuleCache 2025-02-22 10:12:24 +01:00
DOMParsing AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
DOMURL LibWeb: Return OptionalNone from DOMURL::parse on failure 2025-01-22 12:33:55 +00:00
Editing LibWeb: Treat execCommand command names as case insensitive 2025-02-08 07:30:27 -05:00
Encoding LibWeb/Bindings: Support returning nullable types in dictionaries 2025-02-10 17:05:15 +00:00
EncryptedMediaExtensions LibWeb: Implement MediaCapabilities.decodingInfo() 2025-02-18 10:18:40 -07:00
EntriesAPI
EventTiming
Fetch LibWeb: Make PolicyContainer GC allocated 2025-02-21 12:43:48 +00:00
FileAPI LibWeb/FileAPI: Implement aborting a FileReader read 2025-01-30 14:25:27 -07:00
Geometry LibWeb/CSS: Integrate ParsingContext into the Parser 2025-02-06 16:47:25 +00:00
HighResolutionTime LibWeb: Use as to cast global object to WindowOrWorkerGlobalScopeMixin 2025-02-02 17:18:56 +01:00
HTML LibWeb: Apply nowrap attribute as presentational hint 2025-02-22 09:12:08 +00:00
IndexedDB
Infra
Internals LibWeb: Return OptionalNone from DOMURL::parse on failure 2025-01-22 12:33:55 +00:00
IntersectionObserver LibWeb/CSS: Integrate ParsingContext into the Parser 2025-02-06 16:47:25 +00:00
Layout LibWeb: Exclude inert elements from find in page queries 2025-02-21 12:41:57 +00:00
Loader Everywhere: Remove some use of the URL constructors 2025-02-19 08:01:35 -05:00
MathML
MediaCapabilitiesAPI LibWeb: Implement MediaCapabilities.decodingInfo() 2025-02-18 10:18:40 -07:00
MediaSourceExtensions
MimeSniff
MixedContent AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
NavigationTiming LibWeb: Return wall time from PerformanceTiming interface 2025-01-27 14:53:33 +01:00
Page LibWeb: Prevent crash with custom cursor 2025-02-17 12:24:49 +00:00
Painting LibWeb: Ensure inert elements are not selectable 2025-02-21 12:41:57 +00:00
PerformanceTimeline LibWeb: Use as to cast global object to WindowOrWorkerGlobalScopeMixin 2025-02-02 17:18:56 +01:00
PermissionsPolicy Everywhere: Remove some use of the URL constructors 2025-02-19 08:01:35 -05:00
Platform
ReferrerPolicy
RequestIdleCallback
ResizeObserver AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
SecureContexts Everywhere: Use URL::about_XXX factory functions 2025-02-15 17:05:55 +00:00
Selection LibWeb: Only clear command states and values if range actually changed 2025-01-24 23:53:26 +01:00
ServiceWorker LibWeb/ServiceWorker: Use has_value for checking for invalid URL 2025-02-19 08:01:35 -05:00
SRI
StorageAPI LibWeb/Storage: Add a storage key getter that takes a URL::Origin 2025-01-21 19:22:07 +00:00
Streams LibWeb: Align ReadableByteStreamControllerEnqueue 2025-02-10 13:25:51 +00:00
SVG LibWeb: Make PolicyContainer GC allocated 2025-02-21 12:43:48 +00:00
UIEvents
URLPattern LibWeb/URLPattern: Implement the URLPattern IDL getters 2025-02-17 19:10:39 -05:00
UserTiming LibWeb: Report performance based timestamps relative to ESO time origin 2025-01-27 14:53:33 +01:00
WebAssembly
WebAudio LibWeb: Initialize AnalyserNode previous block at construction time 2025-02-13 20:31:37 +00:00
WebDriver AK+Everywhere: Convert JSON value serialization to String 2025-02-20 19:27:51 -05:00
WebGL LibWeb/WebGL: Implement WEBGL_compressed_texture_s3tc extension 2025-02-09 01:00:51 +01:00
WebIDL LibWeb: Use as to cast global object to WindowOrWorkerGlobalScopeMixin 2025-02-02 17:18:56 +01:00
WebSockets LibWeb: Establish WebSocket connections in parallel 2025-02-18 11:26:34 -07:00
WebVTT
Worker
XHR LibWeb+WebContent: Remove unused code in BrowsingContext 2025-02-17 19:11:14 -05:00
XLink
XML AK+Everywhere: Rename verify_cast to as 2025-01-21 11:34:06 -05:00
CMakeLists.txt LibWeb: Make PolicyContainer GC allocated 2025-02-21 12:43:48 +00:00
Dump.cpp LibWeb: Store final box model metrics in paint tree, not layout tree 2025-02-17 18:28:29 +01:00
Dump.h
Forward.h LibWeb: Make PolicyContainer GC allocated 2025-02-21 12:43:48 +00:00
idl_files.cmake LibWeb/WebGL: Implement WEBGL_compressed_texture_s3tc extension 2025-02-09 01:00:51 +01:00
InvalidateDisplayList.h
Namespace.cpp
Namespace.h
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/DOM: Don't use recursion for subtree traversal in Node.h 2025-02-03 18:36:57 +01:00