1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:48:11 +00:00
serenity/Userland/Libraries/LibWeb
Andreas Kling 646b37d1a9 LibWeb: Cache CSS rules in buckets to reduce number of rules checked
This patch introduces the StyleComputer::RuleCache, which divides all of
our (author) CSS rules into buckets.

Currently, there are two buckets:
- Rules where a specific class must be present.
- All other rules.

This allows us to check a significantly smaller set of rules for each
element, since we can skip over any rule that requires a class attribute
not present on the element.

This takes the typical numer of rules tested per element on Discord from
~16000 to ~550. :^)

We can definitely improve the cache invalidation. It currently happens
too often due to media queries. And we also need to make sure we
invalidate when mutating style through CSSOM APIs.
2022-02-10 20:52:11 +01:00
..
Bindings LibJS: Replace uses of MarkedValueList with MarkedVector<Value> 2022-02-09 12:25:27 +00:00
Cookie Everywhere: Update copyrights with my new serenityos.org e-mail :^) 2022-01-31 18:23:22 +00:00
Crypto Everywhere: Convert ByteBuffer factory methods from Optional -> ErrorOr 2022-01-24 22:36:09 +01:00
CSS LibWeb: Cache CSS rules in buckets to reduce number of rules checked 2022-02-10 20:52:11 +01:00
DOM LibWeb: Cache CSS rules in buckets to reduce number of rules checked 2022-02-10 20:52:11 +01:00
DOMParsing LibWeb: Clean up static function in header 2021-10-06 23:52:40 +01:00
DumpLayoutTree Everywhere: Remove unused ArgsParser header 2021-11-01 21:12:58 +01:00
Encoding LibJS: Convert ArrayBuffer construction to ThrowCompletionOr 2022-02-08 09:12:42 +00:00
Geometry LibWeb: Add DOMRectReadOnly and make DOMRect inherit from it 2021-10-08 23:00:49 +02:00
HighResolutionTime LibWeb: Rewrite EventTarget to more closely match the spec 2022-02-08 17:47:44 +00:00
HTML LibWeb: Add initial implementation for WorkerGlobalScope 2022-02-09 17:21:05 +01:00
IntersectionObserver Everywhere: Update copyrights with my new serenityos.org e-mail :^) 2022-01-31 18:23:22 +00:00
Layout LibWeb: Don't fill or stroke SVG <path> with transparent color 2022-02-09 13:44:00 +01:00
Loader LibWeb: Make debug logging of resource load errors red instead of green 2022-02-04 00:16:25 +01:00
NavigationTiming LibWeb: Use RefCountForwarder for NavigationTiming::PerformanceTiming 2021-12-09 21:28:52 +01:00
Page LibWeb: Implement EventHandler::focus_previous_element() 2022-02-08 22:15:10 +00:00
Painting LibWeb: Paint box-shadows more efficiently 2022-02-09 19:36:26 +01:00
RequestIdleCallback LibWeb: Add the IdleDeadline interface from the RequestIdleCallback spec 2021-09-17 13:20:18 +02:00
ResizeObserver LibWeb: Stub out a basic ResizeObserver interface 2021-10-11 00:54:01 +02:00
Scripts Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
Selection LibWeb: Stub out a basic Selection interface 2021-10-11 00:32:19 +02:00
SVG LibWeb: Implement SVG S (SmoothCurve) commands 2022-02-06 22:13:07 +01:00
Tests LibWeb: Capture <script> element's node document on execution 2021-12-21 13:50:00 -08:00
UIEvents LibWeb: Add MouseEvent.x and MouseEvent.y 2022-02-07 13:28:59 +01:00
URL LibWeb: Accept array pairs in URLSearchParams constructor 2022-01-31 15:25:36 +01:00
WebAssembly LibJS: Replace uses of MarkedValueList with MarkedVector<Value> 2022-02-09 12:25:27 +00:00
XHR LibWeb: Rewrite EventTarget to more closely match the spec 2022-02-08 17:47:44 +00:00
CMakeLists.txt LibWeb: Add initial implementation for WorkerGlobalScope 2022-02-09 17:21:05 +01:00
DOMTreeModel.cpp Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
DOMTreeModel.h AK: Make JSON parser return ErrorOr<JsonValue> (instead of Optional) 2021-11-17 00:21:10 +01:00
Dump.cpp LibWeb: Rename Layout::Box::size() to content_size() 2022-02-06 01:07:47 +01:00
Dump.h LibWeb: Implement @supports rule :^) 2021-10-08 23:02:57 +02:00
FontCache.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
FontCache.h Everywhere: Fully qualify font names by including their slope 2022-02-01 10:06:26 +01:00
Forward.h LibWeb: Add initial implementation for WorkerGlobalScope 2022-02-09 17:21:05 +01:00
ImageDecoding.cpp LibCore+LibIPC+Everywhere: Return Stream::LocalSocket from LocalServer 2022-01-15 13:29:48 +03:30
ImageDecoding.h LibWeb: Move ImageDecoder client connection singleton to its own file 2021-11-20 10:56:31 +01:00
InProcessWebView.cpp LibWeb: Rename Layout::Box::size() to content_size() 2022-02-06 01:07:47 +01:00
InProcessWebView.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Namespace.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Namespace.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Origin.h LibWeb: Allow using Origin as a HashMap key 2022-02-08 21:53:20 +01:00
OutOfProcessWebView.cpp LibWeb: Plumb OOPWV focus state across the IPC boundary 2022-02-06 22:13:13 +01:00
OutOfProcessWebView.h LibWeb: Plumb OOPWV focus state across the IPC boundary 2022-02-06 22:13:13 +01:00
QualifiedName.h LibWeb: Use HTML-uppercased qualified name for the Element node name 2021-05-04 23:24:03 +01:00
StylePropertiesModel.cpp Everywhere: Use my shiny new serenityos.org email :^) 2021-09-03 12:22:36 +02:00
StylePropertiesModel.h AK: Make JSON parser return ErrorOr<JsonValue> (instead of Optional) 2021-11-17 00:21:10 +01:00
TreeNode.h LibWeb: Add TreeNode<T>::next_in_pre_order(T* stay_within) variant 2022-01-23 01:22:41 +01:00
WebContentClient.cpp LibCore+LibIPC+Everywhere: Return Stream::LocalSocket from LocalServer 2022-01-15 13:29:48 +03:30
WebContentClient.h LibCore+LibIPC+Everywhere: Return Stream::LocalSocket from LocalServer 2022-01-15 13:29:48 +03:30
WebViewHooks.h Browser+LibWeb+WebContent: Add variables display to Inspector 2021-12-10 06:52:17 +01:00