Commit Graph
673 Commits
Author SHA1 Message Date
ldm0 d49d43a4a4 fix(layout): preserve grid auto sizing before aspect ratio transfer
Keep normal distinct from auto at the style boundary and consume the shared Taffy grid sizing contract. Cover alignment, limits, intrinsic sizes, margins, writing modes, and actual child formatting contexts with 288 screenshot geometry checks.
2026-09-10 00:12:57 +08:00
ldm0 82e198d264 fix(layout): share absolute automatic sizing across containing blocks
Use Taffy's shared absolute sizing contract for deferred inline containing blocks, preserving formatter-owned content sizes and logical-axis constraints. Remove the duplicate physical-width sizing path.

Add 384 font-independent screenshot geometry checks across block, flex, grid and inline owners in three writing modes. Verified against Chromium; fixed sizing WPT improves 220 to 223 of 293 with no regressions, and the 565-case border guard is unchanged. Root fmt, full Clippy and all 17217 Nextest tests pass.
2026-09-09 22:43:18 +08:00
ldm0 fe70921c5f fix(layout): resolve ratio-dependent inline content minimums
Update Taffy to resolve automatic inline content minimums before fixing child sizes, preserve resolved grid sizes, and combine intrinsic and numeric limits at the shared sizing boundary.

Add 153 Chromium-calibrated geometry checks covering writing modes, block/flex/grid formatting, authored versus transferred limits, overflow, sizing-box edges, and intrinsic keyword controls.
2026-09-09 21:03:08 +08:00
ldm0 8bda55955b fix(layout): cascade HTML dimension hints before replaced sizing 2026-09-09 19:07:55 +08:00
ldm0 40f2681337 fix(paint): render solid borders from continuous contours
Fill same-color solid borders as one outer-minus-inner contour, sharing geometry with styled side slices. Preserve equivalent uniform circular strokes and remove the elliptical centerline approximation.

Cover asymmetric and degenerate widths, transparency, elliptical inner contours, mixed border controls and CSS transforms with native pixel regressions and a Chromium-checked renderer fixture. Fixed border WPT selection improves from 520 to 535 of 565 passing cases.
2026-09-09 18:01:40 +08:00
ldm0 0a9bad8491 fix(layout): measure inline content in resolved content space
Use the content constraints already resolved by the Taffy leaf adapter for both measurement and final line breaking. Remove border-box known dimensions from the paragraph measurement interface and return only content extents.

Cover 120 formatting, writing-mode, and direction combinations with box-sizing mutations, geometry and paint regressions. The four absolute vertical line-box WPT cases now pass without changing Taffy.
2026-09-09 16:06:22 +08:00
ldm0 c1753cf5ff test(protocol): activate URL blocking in parser script fixture
Serve a real loopback script so an inactive Network handler cannot pass through an unrelated external fetch failure. Enable Network before installing blocked URLs, correlate the exact Script request and loading failure, and preserve the subsequent parser-work assertions.
2026-09-09 16:06:00 +08:00
ldm0 071ba7959f Model logical inline fragments and fieldset formatting
Keep inline line breaking in line-relative coordinates and project geometry, paint, ranges, carets and floats through one writing-mode boundary. Share dominant font baselines with numeric layout and give table roots distinct identities from cells.

Separate rendered legends from anonymous fieldset content so sizing, baselines, scrolling, containing blocks and border decoration have explicit owners. Use the final child fragment size for parent positioning through Taffy 9b3d31a2.

Add six screenshot-driven regression fixtures covering all five writing modes and both directions: 6438 geometry checks and 2550 pixel samples. Validate with cargo fmt, workspace all-target/all-feature Clippy, and all 17205 Nextest tests. Fixed writing/overflow/grid/fieldset WPT lists gain 67/1/70/9 passes respectively with no case or subtest regressions; lists overlap.
2026-09-09 14:43:15 +08:00
ldm0 69e53ec34c fix(layout): derive directional scroll geometry from fragment bounds
Preserve pre-relative in-flow positions and used margins in the Taffy layout result, keeping alignment bounds separate from transformed visual overflow. Resolve reachable regions and signed scroll ranges once for scrollbar feedback and frozen CSSOM/paint projection. Retain fixed descendants of transformed containing blocks in their overflow graph.

Cover writing directions, reverse flex packing, relative and transformed fragments, collapsing and negative margins, zero-area bounds, fixed containing blocks, and removal after capture. Chromium-checked release probes match 1668 geometry and 180 pixel checks; overflow focus gains 10 cases while the previous 306-case focus is unchanged. Full workspace fmt, Clippy and 17193 Nextest tests pass.
2026-09-09 10:31:33 +08:00
ldm0 bac2eff3e1 fix(layout): consume logical grid tracks and fragment geometry 2026-09-09 09:11:14 +08:00
ldm0 c2be8d28fb test(renderer): make module owner replacement fixture deterministic 2026-09-09 09:11:10 +08:00
ldm0 5aa0de5b12 fix(layout): preserve first and last baseline alignment
Use Taffy's shared baseline contexts and final grid-fragment alignment without leaking intrinsic shims into used CSS margins. Preserve baseline preference across the Stylo adapter and positioned alignment fallbacks. Require compatible atomic inline baselines and measured fragments for parent line sizing.

Add font-independent renderer regressions for both preferences, mixed groups, margins, wrapped fragments, spanning tracks, synthesized-baseline cycles and absolute fallbacks. Extend the writing-mode matrix without replacing its first-baseline expectations.
2026-09-09 07:07:21 +08:00
ldm0 921ff60061 test(protocol): order child frame setup before fetch interception
Start iframe navigation only after Page and Runtime observation is ready, match the committed session/frame/URL through real scheduler events, then enable interception for the subresource under test. This prevents the setup helper from discarding an early frameNavigated event and keeps preparation navigation outside Fetch interception.

The unmodified exact test failed once in 10 stress iterations. The fixed test passes 30 iterations, its 36-test module passes 10 iterations, and required fmt, workspace Clippy, and all 17184 Nextest tests pass.
2026-09-09 05:06:50 +08:00
ldm0 ede8a90a58 fix(layout): preserve flex baseline semantics across logical flows
Use typed alphabetic/central baseline context from Stylo and preserve sideways writing modes at the Taffy boundary. Pin Taffy's independent baseline-sharing groups, physical first/last baseline export, and stretch fallback fix.

Add 324 Chromium-backed geometry and pixel checks, retaining static-margin and reversed-inset regressions. Required fmt, workspace Clippy and all 17184 Nextest tests pass; focused release WPT comparison improves 35 to 47 of 96 cases without pass-to-fail regressions.
2026-09-09 04:45:31 +08:00
ldm0 428c5bd2f4 fix(layout): preserve physical insets in reversed flex scrollers 2026-09-09 03:15:34 +08:00
ldm0 0b8e860d05 fix(layout): share logical flow and positioned margin-box contracts
Use Taffy's logical block formatting context instead of repairing vertical block coordinates after layout. Share absolute margin and static-edge resolution across Taffy and Moli, with cross-axis overflow safety applied in the actual containing block.

Keep flow-relative start/self-start distinct from flex-start under wrap-reverse. Cover 108 logical block and 117 flex margin-box geometries and pixels with Chromium-checked fixtures; preserve all existing margin regressions using the shared resolver.
2026-09-09 02:31:09 +08:00
ldm0 12d6791709 fix(layout): share document fonts with CSS metric resolution
Resolve ch, ic, ex and cap from selected font tables instead of synthetic family metrics. Share font selection and registrations with Parley while keeping layout scratch state separate, and invalidate styles from font resource ownership without replacing cached geometry.

Cover variable axes, vertical advances, unicode-range fallback and font publication/removal with deterministic fixtures. Update the existing Stylo and Parley pins for font metric input fixes.
2026-09-09 00:31:47 +08:00
ldm0 72616c68d6 fix(layout): commit deferred floats after resolving CSS line geometry
Stage inline floats in source order until their originating line is complete. Query fit geometry without consuming collapsible spaces, include adjacent closing edges and indentation, and avoid placing a revisited placeholder twice.

Expose incremental Parley line views and a caller-resolved block advance so CSS vertical alignment and phantom lines are resolved before float placement and exclusion-slot selection. Reuse the same single-line resolver for final fragment geometry.

Add 68 Chromium-checked geometry cases at two font sizes, covering float sides, bidi directions, clearance, closing edges, indentation, atomic content and raised/lowered lines. Keep Parley pinned to a published git revision.
2026-09-08 22:58:50 +08:00
ldm0 67f59ba757 fix(layout): preserve source geometry when collapsing line-edge whitespace
Resolve line-edge whitespace, intrinsic advances and justification in Parley line results while retaining shaped source clusters. Keep zero-width source fragments for Range queries without adding paint, inline-box or scrollable overflow geometry.

Cover wrapping, bidi, reflow, font sizes, positioned descendants and collapsed Range positions. Validate with full workspace Clippy, 17171 Nextest tests and release Moli/Chromium comparisons; position-absolute-in-inline-004 improves from 4000 differing pixels to zero with no other change across 43 focus WPT cases.
2026-09-08 21:40:15 +08:00
ldm0 ba6413833b fix(layout): preserve non-atomic inline boundaries and signed edges
Use Parley's typed opening, closing, and empty-text boundaries for coherent wrapping and intrinsic sizing. Keep signed inline margins separate from owned border-edge geometry. Add normalization and Chromium-checked layout regressions at two font sizes.
2026-09-08 20:12:59 +08:00
ldm0 3bcc7cd3b2 fix(layout): preserve text flow across out-of-flow placeholders
Pin Parley flow-advance, logical intrinsic sizing and line-end bidi fixes. Cover wrapping, alignment and intrinsic widths across absolute, fixed and float placeholders, with explicit screenshot refresh at two font sizes.
2026-09-08 19:01:42 +08:00
ldm0 ee7711e434 fix(layout): normalize whitespace across out-of-flow boxes
Keep floats and positioned placeholders transparent to CSS whitespace processing and zero-width-space segment-break transformation, preserving source ownership and atomic-inline boundaries.

Materialize inline box edges on the shared layout grid so normalized split-inline geometry and absolute containing blocks cannot disagree on fractional edges. Add normalizer tests and 52 Chromium-checked geometry comparisons at multiple font sizes.

Verified cargo fmt, workspace all-target/all-feature Clippy, and 17167 Nextest tests. Release focus WPT improves from 25 to 28 of 39 cases without pass or image regressions; two runs agree using a disk-backed temporary directory.
2026-09-08 18:06:37 +08:00
ldm0 4e1137458d fix(layout): preserve principal inline fragment geometry
Model block-in-inline interruptions and continuation identity explicitly. Resolve positioned containing blocks from first/last line fragments, preserve decoration edges, and keep opaque middle fragments out of paint and hit testing.

Finish positioned descendants in preorder and retain numeric sublayout geometry across scrollbar feedback. Update Taffy to forward anonymous block percentage constraints without fixing wrapper height.

Validate 39 Chromium geometry checks, paint/hit regressions, workspace fmt/Clippy and all 17159 Nextest tests. Focus WPT improves from 7/17 to 14/17, with the additional percentage-height case passing (15/18 total).
2026-09-08 17:06:06 +08:00
ldm0 2b430b09de fix(layout): resolve empty inline fragment box geometry once 2026-09-08 14:41:17 +08:00
ldm0 3e25fb22ea fix(layout): resolve paragraph and inline-object bidi directions
Provide the CSS paragraph direction to Parley, distinguish neutral objects from transparent inline boundaries, and use resolved item direction for inline static-position edges. Pin a minimal Parley 0.11.1 extension without upgrading the shaping pipeline. Add 34 Chromium-verified geometry cases and direction-restyle coverage.
2026-09-08 14:41:17 +08:00
ldm0 3a0d08616e fix(layout): anchor inline out-of-flow boxes to line boxes
Retain the hypothetical outer display in the inline object stream. Resolve static positions from CSS line-box edges rather than glyph baselines or ancestor vertical-align offsets, and carry the source IFC direction across containing-block changes. Cover 26 font-independent Chromium differential cases.
2026-09-08 14:41:17 +08:00
ldm0 8bf41b0ad5 fix(layout): preserve grid static positions across containing blocks
Let grid formatting parents contribute logical alignment edges while the actual containing block continues to own positioned sizing. Carry overflow safety into the inset-modified containing-block calculation and share physical coordinate resolution with flex and block static positions.

Cover 23 Chromium-checked geometry scenarios, including RTL, orthogonal writing modes, percentage sizing, definite insets, margins, fixed descendants, grid placement and safe overflow alignment.
2026-09-08 14:41:17 +08:00
ldm0 e3bd4eb104 fix(layout): model flex static-position edges 2026-09-08 14:41:17 +08:00
ldm0 0fb89bcd31 fix(sandbox): block disallowed JavaScript dialogs 2026-09-08 14:01:05 +08:00
ldm0 70b4b330f6 fix(canvas): implement WebGL viewport state
Preserve viewport and GL error state per HTML and Offscreen WebGL1/2 context, retain context identity on reacquisition, and expose copied typed-array queries. Add a shared Chromium-calibrated renderer/CDP regression; this does not implement GPU rasterization.
2026-09-08 13:58:48 +08:00
ldm0 acb59e7107 fix(layout): paint flex and grid items atomically 2026-09-07 22:43:22 +08:00
Donough Liu be2c6882dd test(wpt): refresh full cross-engine case lists 2026-09-07 20:45:09 +08:00
ldm0 a894b376d5 fix(window): validate scheduled callback cancellation 2026-09-07 19:51:17 +08:00
ldm0 6faf462821 fix(table): preserve fixed percentage intrinsic maxima 2026-09-07 19:40:19 +08:00
ldm0 2a5690485d fix(web-audio): expose shared factories and analyser data methods
Install node factories on BaseAudioContext and analyser reads on AnalyserNode.prototype. Validate FFT sizes and typed-array destinations, preserving entries outside the available sample range and the existing synthetic compatibility profile.

Mark AudioContext closed during cleanup and cover realtime/offline inheritance, receiver validation, buffer boundaries, and the fetch --eval flow.
2026-09-07 19:28:39 +08:00
ldm0 390d2a7f1f Update .gitignore 2026-09-07 19:28:39 +08:00
ldm0 00156496a8 fix(clipboard): implement async clipboard interfaces 2026-09-07 19:27:57 +08:00
ldm0 bf169dd74f fix(html): reflect iframe CSP attribute 2026-09-07 18:49:59 +08:00
ldm0 be6393b694 fix(layout): ignore ratios on internal table boxes 2026-09-07 18:49:41 +08:00
ldm0 d2afd104ab fix(ci): stabilize frontend reference observations 2026-09-07 18:45:51 +08:00
ldm0 b5ade93960 fix(idle): expose IdleDeadline members on prototype 2026-09-07 17:53:18 +08:00
ldm0 b381236125 fix(popovers): preserve flat-tree ancestor stacks 2026-09-07 17:20:47 +08:00
ldm0 07f8e8533a fix(layout): omit whitespace-only flex and grid items 2026-09-07 17:19:45 +08:00
ldm0 65c2a11aeb fix(location): preserve fragment for javascript URL reload 2026-09-07 17:18:56 +08:00
ldm0 1b48e8cb0c fix(dom): stop exposing removed DOMError 2026-09-07 16:24:47 +08:00
ldm0 14d615c20e fix(window): preserve dynamic child target names 2026-09-07 16:07:45 +08:00
ldm0 4887ab89cc fix(html): implement writing suggestions semantics 2026-09-07 16:06:05 +08:00
ldm0 089a899e6f fix(html): expose obsolete no-op methods 2026-09-07 14:31:28 +08:00
ldm0 f85f2fa7a1 fix(html): reflect focusgroup attributes 2026-09-07 13:26:49 +08:00
ldm0 db98c42087 fix(cdp): isolate console Error stack formatting 2026-09-07 01:48:13 +08:00