Reuse the same native PageSelectors parser for validation and live CSSPageRule mutation. Preserve CSS-only whitespace/comment resets, non-ASCII identifiers, escaped whitespace and invalid-selector behavior with the source regression coverage.
Source-commit: 6ab9df5e2e
Pseudo-element identity and computed styles duplicate extraction of a functional pseudo argument. Reuse one CSS utility, retaining literal prefix/parenthesis matching, empty-name rejection and borrowing from the original input.
Renderer stylesheet snapshots and CDP stylesheet headers repeat text end-position calculation. Put it in the existing shared CSS utility crate and use it from both paths, preserving the current line, character and empty-input behavior.
FontFaceSet queries compared family names with ASCII-only case folding, while native web-font layout used Unicode lowercasing. The same face could be missed by check/load or selected differently during layout. Share a CSS family matching key between both consumers using Unicode simple folding of UTF-16 code units, matching [Blink's font-family cache hash](https://chromium.googlesource.com/chromium/src/+/a03603fe9af6230a12f1b2fb2c18a7d003a0d937/third_party/blink/renderer/platform/wtf/text/case_folding_hash.h#50). Keep original descriptor spelling and platform/local full-name lookup intact. Register each web font only under its private source family, so Fontique cannot bypass CSS matching through a second public alias. Keep Blob identity and incremental-registration assertions by resolving the CSS alias through the document registry in those tests.
Validation: cargo fmt --all; strict all-feature workspace Clippy;
cargo nextest run --no-fail-fast (20633 tests run: 20633 passed (9 slow), 19 skipped).
The shared font shorthand parser flattened quoted names and generic keywords into the same String. FontFaceSet.check/load could therefore match and load a custom face named serif when asked for the generic serif family. Keep Stylo's typed distinction between named and generic families, including decoded escapes, and query authored faces only for named families.
Validation: cargo fmt --all; strict all-feature workspace Clippy;
cargo nextest run --no-fail-fast (20630 tests run: 20630 passed (9 slow), 19 skipped).
Move computed capability parsing and matching into moli-css-parse and
retain complete ranges in native font registrations. Select all equally
matched ranges in document order before applying unicode ranges.
Use the shared representation for CSS and JS registrations and query
matching. Add real DOM geometry regressions for numeric, reversed and
calc descriptors, mutations and overlapping range priority.
Validation: cargo fmt --all; strict workspace Clippy;
cargo nextest run --no-fail-fast (20592 tests run: 20592 passed (9 slow), 18 skipped).
Move Taffy to 0.15 and Stylo to 0.22 using fixed fork revisions, with the
matching stylo_taffy adapter. Upgrade cssparser and the production HTML/XML
parsers while preserving the vendored XML behavior.
Adapt sizing inputs, baselines, grid positions, overflow and out-of-flow
ownership. Preserve font-stretch CSSOM compatibility and intrinsic sizing
through nested atomic inline probes.
Validation: root cargo fmt --all; strict workspace/all-target/all-feature
Clippy; Nextest 20280 passed, 18 skipped; Release build; five browser
regression rounds; RTL and nested intrinsic Chromium geometry controls.
Full WPT Cross is recorded separately with its Cases refresh.
Original-commit: 281a920d89
Treat comment-only and CSS-whitespace-only IntersectionObserver margin input as the empty default, and reject unitless zero and Unicode whitespace that is not CSS whitespace. The shared CSS token parser and native observer helper use the same contract. Tests cover malformed/empty comments, valid dimensions and invalid token classes.