servo/components/layout/flow
Martin Robinson 51367c22a6
layout: Store most anonymous pseudo-elements in box slots (#37941)
Previously, anonymous boxes, such for anonymous table parts were not
associated with their non-pseudo ancestor DOM nodes. This presents a
problem when it comes time to clear layout data during incremental
layouts. This change reworks the way that pseudo-elements in general are
stored in their non-pseudo ancestor DOM nodes, allowing for any number
to be placed there.

This trades a bit of performance for space, as just adding a vector to
the node would add something like 24 bytes of storage to every node.
This change should have a neutral runtime memory usage.

Testing: This shouldn't change observable behavior and is thus covered
by
existing WPT tests. It will allow tests to pass in a subsequent PR.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2025-07-08 15:22:09 +00:00
..
inline layout: Remove clearance parameter from BoxFragment::new() (#37921) 2025-07-08 10:04:37 +00:00
construct.rs layout: Store most anonymous pseudo-elements in box slots (#37941) 2025-07-08 15:22:09 +00:00
float.rs layout: Unify logic for laying out replaced and non-replaced in a BFC (#37864) 2025-07-04 17:47:40 +00:00
mod.rs layout: Remove clearance parameter from BoxFragment::new() (#37921) 2025-07-08 10:04:37 +00:00
root.rs layout: Store most anonymous pseudo-elements in box slots (#37941) 2025-07-08 15:22:09 +00:00