Commit Graph
63 Commits
Author SHA1 Message Date
ldm0 2db52b45ba fix(svg): resolve inherited relative font weights correctly 2026-11-03 11:55:43 +08:00
wslee 46f7e37989 test(svg): cover inherited italic and condensed faces 2026-11-03 11:55:43 +08:00
ldm0 f5ad0f909f test(layout): verify optical sizing with variable glyph advances 2026-10-28 17:04:36 +08:00
ldm0 4487138ce7 fix(layout): derive hanging overflow and clip inline boxes 2026-10-25 04:14:30 +08:00
sicko7947 055be4b08f fix(layout): exclude hanging trailing spaces from scrollable overflow
A wrapped line whose trailing spaces hang past the content box made
scrollWidth exceed clientWidth, unlike Chromium. Keep the full line rect
for CSSOM line geometry and use a scrollable rect without the hanging
advance when aggregating inline scrollable overflow.
2026-10-25 04:14:30 +08:00
ldm0 3a0f6ca178 fix(fonts): match queries and honor owner selection order
Select width, style and weight capabilities before filtering FontFaceSet
queries by text and unicodeRange. Share the matching path for check/load,
including CSS calculations and descriptor ranges, so unrelated unloaded
or broken sources do not affect a query.

Publish each Document's CSS/manual FontFaceSet order independently from
stable resource slots. Preserve manual overrides, re-addition priority
and different orders for shared faces across Documents.

Cover the matching and actual DOM geometry regressions with generated
narrow/wide fonts and a shared Chromium/Moli CDP oracle.
2026-10-23 04:07:15 +08:00
ldm0 97b297830e fix(layout): retain normal grid stretching for native form controls
Map native controls to compressible replaced leaves without the image-only replaced flag. Cover checkbox, radio and range normal alignment at 50 by 50 pixels.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (20283 passed, 18 skipped). Release v3 and five browser regression rounds. Full WPT recorded separately.

Original-commit: 143e72ec4d
2026-10-21 17:55:02 +08:00
ldm0 a551aba5d7 fix(layout): retain grid track areas for positioned descendants
Original-commit: 5976146db3
2026-10-21 17:55:02 +08:00
ldm0 e78f5a33b2 feat(layout): update Taffy and Stylo forks with current Blitz adapters
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
2026-10-21 17:55:02 +08:00
ldm0 fa49b9195c fix(layout): preserve positioned auto paint groups
Backport the shared paint and coordinate hit-test correction with its
layout regression. Keep the Realtime input integration test on its
feature branch.

The regression fails on main and passes after this fix. Validated with
cargo fmt --all, full all-feature Clippy, and 20,078 passing nextest tests
(17 existing skips).

(cherry picked from commit 3b35518f76)
2026-10-18 00:54:19 +08:00
ldm0 0059a9b238 perf(layout): remove per-style anonymous provenance 2026-10-16 21:35:36 +08:00
ldm0 07368cea9a perf(layout): reuse prepared context for anonymous styles 2026-10-16 20:03:07 +08:00
ldm0 3cf565afe0 fix(layout): measure inline content using content-box constraints 2026-10-14 22:23:06 +08:00
ldm0 e10fe9c440 fix(layout): resolve intrinsic width constraints in shared sizing 2026-10-14 22:23:06 +08:00
ldm0 5be5f7c50d feat(pdf): preserve clickable links and internal destinations 2026-10-13 00:34:09 +08:00
ldm0 75357ea30f refactor(layout): move scrollbar policy into layout environment 2026-10-04 05:20:17 +08:00
ldm0 df410aeeb7 feat(layout): add --hide-scrollbars for fetch and serve
Hide native scrollbars and automatic gutters while preserving scrolling and explicit stable gutters. Require layout mode and retain the setting across navigation, frames, and protocol sessions.

Refs #1081
2026-10-04 05:20:17 +08:00
lanyue-llk 08ab072a3b fix(reliability): harden diagnostics and test infrastructure 2026-09-29 06:08:43 +08:00
ldm0 7b42fa6440 perf(layout): share source lookup within geometry batches
Build an operation-local source lookup for batches of rectangle queries and use it in the renderer Range path. Keep tiny batches on direct lookup and retain renderer-specific metric and viewport handling.

Compare batch results for missing sources, display contents, inline continuations, and text ranges. A 516-query fixture reduces box visits from 33024 to 64 without retaining an index.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped on the final change set).
2026-09-29 02:36:54 +08:00
ldm0 261b4f3052 test: fix macOS workspace test failures 2026-09-23 22:24:26 +08:00
lanyue-llk bcf420f622 revert: undo split PR 640 merges (#734-#740) 2026-09-22 20:02:07 +08:00
mini llk c5ac254058 fix(layout): refresh geometry and preserve inline fragments (#735) 2026-09-22 19:42:55 +08:00
mini llk e30ca4aea4 fix(reliability): harden diagnostics and test infrastructure (#734) 2026-09-22 19:39:41 +08:00
ldm0 0f3e3acd4d fix(layout): preserve inline clearance below floats
Move inline content that cannot fit beside floats to the first suitable slot,
and retain that clearance in CSS baseline and container-height calculations.
This places GitHub's full-width Show more activity button below its timeline.

Update Taffy to e4e8f77c for float segment extension and content-slot fallback.
Preserve whitespace collapsing around out-of-flow loading hints and cover
float placement, staggered heights, and pre/nowrap behavior in regressions.
2026-09-18 12:43:03 +08:00
ldm0 29b5a36d5f perf(layout): stream point hit candidates before ordering results 2026-09-17 14:53:54 +08:00
ldm0 636d97e21c perf(layout): keep hit results free of unused box models 2026-09-17 14:53:54 +08:00
ldm0 43dd80a890 perf(layout): answer specialized geometry queries once 2026-09-17 14:53:54 +08:00
ldm0 bdf76173fe fix(layout): clamp negative widths in intrinsic inline probes 2026-09-15 14:58:25 +08:00
ldm0 226ceb3931 fix(table): span zero row spans to section end 2026-09-15 01:54:41 +08:00
ldm0 07f8e8533a fix(layout): omit whitespace-only flex and grid items 2026-09-07 17:19:45 +08:00
ldm0 0e14d82486 perf(cssom): reuse size projections within style observations
Memoize a single-element property batch without building a full index, and derive one temporary sizing lookup per Document for multi-element observations. Route DOMSnapshot style collection through the shared observation and keep all projections scoped to the synchronous read.

Cover query counts, missing boxes, cold and mock reads, snapshot replacement, iframe isolation, and Inspector and DOMSnapshot capture paths.
2026-09-05 21:31:57 +08:00
ldm0 5ee69560fc fix(cssom): resolve logical sizes from sampled layout axes 2026-09-05 21:31:57 +08:00
ldm0 e02b58d0df fix(cssom): read used sizes from existing layout snapshots
Retain the sampled CSS sizing basis alongside frozen geometry. Resolve width and height only from an existing snapshot for the owning Document, without creating or refreshing layout; preserve style-only fallbacks otherwise.

Cover sizing boxes, zoom, replaced elements, Chromium-derived cases, and demand-driven snapshot lifecycles with renderer, layout, and CLI regressions.
2026-09-05 21:31:57 +08:00
ldm0 c1204434f7 fix(layout): implement automatic table column sizing 2026-08-31 11:59:59 +08:00
ldm0 ac439e328e perf(layout): reuse shaped inline layouts across probes 2026-08-31 02:34:16 +08:00
ldm0 6c4103eefc perf(layout): localize overflow feedback projection 2026-08-30 00:55:04 +08:00
ldm0 112cfda8cb perf(layout): cull paint outside captures 2026-08-30 00:55:04 +08:00
ldm0 13a0609ffa perf(layout): reuse numeric scrollbar feedback 2026-08-30 00:55:04 +08:00
ldm0 b6d7693152 test(layout): cover paint clip stack reuse boundaries 2026-08-29 00:34:31 +08:00
ldm0 06174c0549 perf(layout): reuse common paint clip prefixes 2026-08-28 15:18:42 +08:00
ldm0 a50bc689ed perf(renderer): reuse style work within layout observations 2026-08-28 15:18:42 +08:00
ldm0 ce0a6157e2 Model inline offset geometry from fragments 2026-08-27 19:22:08 +08:00
ldm0 7391608b7b Ignore table-part decorations in used geometry 2026-08-27 14:59:02 +08:00
ldm0 d0b3d4ef0a Expose image coordinates in untransformed root space 2026-08-27 00:52:15 +08:00
ldm0 12820a5203 Preserve structural ancestry through block-in-inline 2026-08-27 00:42:38 +08:00
ldm0 ac477b86f7 fix(layout): align viewport and scrollbar behavior 2026-08-23 03:49:48 +08:00
ldm0 4f39a0f0d9 Expand iframe and scrollbar input coverage 2026-08-22 19:44:54 +08:00
ldm0 3a8e52ba99 Implement classic scrollbars 2026-08-22 19:44:54 +08:00
ldm0 7733dcd843 Anchor scrollable overflow at the padding box 2026-08-21 03:42:28 +08:00
ldm0 e2aa24db14 Unify pre-transform paint coordinate state 2026-08-15 00:53:52 +08:00