ladybird/Libraries/LibWeb
Sam Atkins 5a1eb9e220 LibWeb/CSS: Keep invalid parts of <forgiving-selector-list>s around
Attempt 2! Reverts 2a5dbedad4

This time, set up a different combinator when producing a relative
invalid selector rather than a standalone one. This fixes the crash.

Original description below for simplicity because it still applies.

---

Selectors like `:is(.valid, &!?!?!invalid)` need to keep the invalid
part around, even though it will never match, for a couple of reasons:

- Serialization needs to include them
- For nesting, we care if a `&` appeared anywhere in the selector, even
  in an invalid part.

So this patch introduces an `Invalid` simple selector type, which simply
holds its original ComponentValues. We search through these looking for
`&`, and we dump them out directly when asked to serialize.
2024-11-14 13:20:01 +01:00
..
Animations LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
ARIA
Bindings LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
Clipboard LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Cookie
Crypto LibWeb: Implement Web Crypto HMAC algorithm 2024-11-14 11:52:18 +01:00
CSS LibWeb/CSS: Keep invalid parts of <forgiving-selector-list>s around 2024-11-14 13:20:01 +01:00
DOM LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
DOMParsing LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
DOMURL LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Encoding LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
EntriesAPI LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
EventTiming
Fetch LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
FileAPI LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Geometry LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
HighResolutionTime LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
HTML LibWeb: Check for overflow when creating ImageData 2024-11-13 19:23:25 -05:00
IndexedDB LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Infra
Internals LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
IntersectionObserver LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Layout LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
Loader LibWeb: Unregister network requests *after* invoking callbacks 2024-11-11 21:40:56 +01:00
MathML
MediaCapabilitiesAPI LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
MediaSourceExtensions LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
MimeSniff
MixedContent
NavigationTiming
Page LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
Painting LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
PerformanceTimeline LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
PermissionsPolicy
Platform LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
ReferrerPolicy
RequestIdleCallback LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
ResizeObserver LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
SecureContexts
Selection LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
ServiceWorker LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
SRI
StorageAPI LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Streams LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
SVG LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
UIEvents LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
UserTiming LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
WebAssembly LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
WebAudio LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
WebDriver LibJS+LibWeb: Rename Heap::allocate_without_realm to Heap::allocate 2024-11-13 16:51:44 -05:00
WebGL LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
WebIDL LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
WebSockets LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
WebVTT LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
Worker
XHR LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T> 2024-11-13 16:51:44 -05:00
XLink
XML
CMakeLists.txt LibWeb: Add WebGLShaderPrecisionFormat 2024-11-13 11:41:54 +01:00
Dump.cpp LibWeb/CSS: Keep invalid parts of <forgiving-selector-list>s around 2024-11-14 13:20:01 +01:00
Dump.h
Forward.h
idl_files.cmake LibWeb: Add WebGLShaderPrecisionFormat 2024-11-13 11:41:54 +01:00
InvalidateDisplayList.h
Namespace.cpp
Namespace.h
PixelUnits.cpp
PixelUnits.h
TraversalDecision.h
TraversalOrder.h
TreeNode.h