Commit Graph
1479 Commits
Author SHA1 Message Date
ldm0 42f1761c32 fix(cdp): initialize scrollbar overrides before navigation scripts 2026-10-04 02:31:49 +08:00
ldm0 96e11c9ac5 test(cdp): lock scrollbar visibility across CLI and emulation
Start iframe-input with --scrollbars so its nested native control checks
continue to exercise visible scrollbars. Add a default scrollbar-visibility
group covering fetch/serve defaults, boolean environment values and CLI
precedence, geometry, stable gutters, frames, PNG output and input routing.
Cover CDP toggling, navigation, target isolation, detach, resize and layout
dependencies in independent processes with explicit environments.

Validation: 43 harness unit tests passed; scrollbar-visibility (22 scenarios),
iframe-input and classic-scrollbar smoke groups all passed (3/3).
2026-10-04 02:11:42 +08:00
ldm0 d3c3ca28c8 feat(cli): make layout scrollbars opt-in 2026-10-04 00:53:30 +08:00
ldm0 9143aabb22 refactor(config): carry complete startup layout configuration 2026-10-04 00:06:53 +08:00
ldm0 8fe5f82c2d refactor(layout): move scrollbar policy into layout environment 2026-10-04 00:06:53 +08:00
ldm0 9fac9e07ec refactor(renderer): centralize layout invalidation and publication 2026-10-03 23:58:57 +08:00
ldm0 5c9bbe2528 refactor(renderer): unify document settings application 2026-10-03 23:58:57 +08:00
ldm0 5b5c6d28f8 refactor(runtime): share document settings snapshots 2026-10-03 23:58:57 +08:00
ldm0 04aecf432a feat(cdp): support Emulation.setScrollbarsHidden
Apply scrollbar hiding to the live Page before acknowledging the command, preserve the startup flag, and replay the target setting before navigation scripts. Validate the required boolean and layout mode, track per-session state, and clear overrides on detach.

Refs #1081
2026-10-03 23:58:57 +08:00
ldm0 ef163faa22 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-03 23:58:57 +08:00
ldm0 a2febfc69c fix(layout): preserve bidi contexts across forced line breaks 2026-10-03 18:32:34 +08:00
ldm0 4463dd345b fix(layout): resolve inline alignment independently of line height 2026-10-03 18:32:34 +08:00
ldm0 aea611b2b9 fix(layout): separate viewport controls from stable gutters 2026-10-03 18:32:34 +08:00
ldm0 850d8773b1 test(layout): move inline geometry coverage out of frame tests 2026-10-03 18:32:34 +08:00
ldm0 00e5235046 fix(layout): apply document quirks rules to inline line heights
Sample each document's rendering mode for the layout pass. In quirks and
limited-quirks mode, derive line heights from participating text, atomic
boxes and inline border/padding instead of unconditional block and empty
inline struts.

Resolve forced-break fallback in its owning inline after descendant
metrics. Keep consecutive closing edges on the forced-break fragment,
stopping at bidi controls and new objects. Allow used closing edges to
create a line independently of font-strut participation. Retain standards
struts for closing fragments and their structural ancestors on non-phantom
lines, independently of their used edge dimensions. Exclude struts for
zero-size closing edges carried past collapsed wrap spaces. Omit empty
closing font boxes only on quirks lines without resolved vertical metrics.
Exclude collapsed line-edge spaces from height contributions.

Use source object identities and one depth order for metric resolution
and placement, stopping repeated ancestor walks. Share resolved heights
and baselines between measurement and published geometry.

Cover document-specific iframe sizing, inline decorations, preserved and
collapsed spaces, nested breaks, bidi boundaries and fragment rectangles
across document modes.

Validate 41 closing-edge and wrapped-space fixtures across quirks,
limited-quirks and standards in Chromium 145.0.7632.116. Cover distinct inline and parent line
heights, nested ancestors, zero-size closing edges, terminal phantom lines,
and trailing content with zero vertical metrics.
Check initial and published heights, atomic offsets and fragment geometry.
2026-10-03 18:32:34 +08:00
ldm0 38410d4048 fix(layout): preserve spaces inside structural inline wrappers
Keep nonempty whitespace-only children of structural inline boxes until
paragraph normalization. Spaces between outside siblings survive nested
wrappers, while leading and trailing spaces still collapse normally.

Cover direct and nested wrappers across standards, quirks and limited-quirks
documents, including geometry before and after layout publication.
2026-10-03 18:32:34 +08:00
ldm0 9aee1af24e fix(layout): honor frame scrolling policy for viewport UI and input
Read the embedding iframe/frame scrolling attribute into the published
viewport policy. Disable viewport scrollbars, gutters and user scrolling
together, while preserving descendant containers and script scrolling.

Apply attribute updates at layout publication and keep the frame restriction
independent of CSS scrollbar-width: none. Cover scrollbar geometry, wheel
input, scroll chaining and publication boundaries.
2026-10-03 18:32:34 +08:00
ldm0 1239fe6888 test(wpt): cover Fetch status fixture response semantics
Cover WPT Fetch status fixture handling, including no-body statuses, preserved HTTP status metadata and redirect targets, through the actual fixture server.
2026-10-03 17:45:10 +08:00
ldm0 36bd5e4259 test(fetch): cover empty upload framing in every transport
Extend the existing request-header matrix to distinguish absent and explicitly empty POST, PUT, PATCH and DELETE bodies, plus a bodyless GET control, across buffered, HTML-stream and raw-stream fetches. Inspect the local server’s wire requests to verify exactly one Content-Length: 0 for empty bodies and bodyless POST/PUT, no Content-Length for other absent bodies, and no Transfer-Encoding in these cases. Existing Content-Type and observation checks stay in the same matrix.

This extracts the remaining wire-framing coverage from the bodyless PUT change; the redirect implementation and its regression test already exist on main.
2026-10-03 17:43:25 +08:00
ldm0 c4c6a77865 fix(geometry): expose fromPoint as an enumerable WebIDL operation 2026-10-03 17:41:18 +08:00
ldm0 bc116c16dc fix(dom): match class-name collections using document quirks mode 2026-10-03 17:40:52 +08:00
ldm0 715c6e3420 fix(geometry): expose native rectangle interfaces in workers 2026-10-03 15:55:47 +08:00
ldm0 e8cdc8fa1c fix(fetch): inherit document policy for empty request referrers 2026-10-03 15:53:03 +08:00
ldm0 8f7598a30f test(wpt): refresh full release case status lists
Run the unfiltered all profile with release Moli 1.1.12 built from
cbb41950af, using WPT
db95fafd1fcef8428805e41eb5705d444e8c67ce and 50 CDP workers.
All 13,631 cases have exactly one recorded Moli attempt.

Moli: 9,583 pass, 3,727 fail, 259 timeout, 9 error, 1 crash,
and 52 harness-stalled. The case set matches the previous refresh;
51 cases gain pass and eight lose pass, for a net gain of 43.
Keep the raw full-run outcomes.

Validate all eight status lists against the raw results and matrix:
sorted, disjoint, exhaustive, with no setup errors, missing cases,
unknown statuses, or unexecuted recovery placeholders.
git diff --check passes.
2026-10-03 13:38:59 +08:00
ldm0 0a6a6e3fa0 fix(dom): mask AX password values per UTF-16 code unit
Count UTF-16 code units when masking password values to match Chromium.
Cover initial and live values across ASCII, BMP, supplementary characters,
combining sequences, ZWJ emoji, and empty passwords, verified against
Chromium 145 in 14 cases.
2026-10-03 13:35:10 +08:00
Maxim M 8c3cc22e87 fix(dom): expose password inputs as textbox with a masked AX value
Fixes #1082.
2026-10-03 13:35:10 +08:00
ldm0 3d4da651f7 fix(csp): enforce worker string timer policy after conversion 2026-10-03 05:00:48 +08:00
ldm0 3638aa0d0b feat(media): expose native stream, session and playback interfaces 2026-10-03 04:21:43 +08:00
ldm0 4b71c1628a feat(svg): expose native switch and mpath interface objects 2026-10-03 04:04:27 +08:00
ldm0 48bcabe141 test(cdp): lock scoped queries and mutations during pause 2026-10-03 03:30:39 +08:00
ldm0 9cbdd35da5 refactor(emulation): apply navigator and activity policy together 2026-10-03 03:30:39 +08:00
ldm0 828658d9d4 refactor(renderer): resolve scoped nodes within owner-only DOM operations 2026-10-03 03:30:39 +08:00
ldm0 330b8c6381 refactor(renderer): resolve scoped nodes within read operations 2026-10-03 03:30:39 +08:00
ldm0 04d465959f refactor(cdp): simplify renderer call envelopes and unit replies 2026-10-03 03:30:39 +08:00
ldm0 3fb36899cd refactor(cdp): project ordered output from canonical slots 2026-10-03 03:30:39 +08:00
ldm0 28e79e9ac8 test(network): isolate image ownership checks from scheduler sweeps 2026-10-03 03:30:39 +08:00
ldm0 3fd1259f5f feat(media): expose the RemotePlayback interface object 2026-10-03 03:03:31 +08:00
ldm0 e1d9b7a918 feat(payment): expose the secure PaymentResponse interface object 2026-10-03 03:03:06 +08:00
ldm0 2f0d1d4848 feat(midi): expose secure non-constructible MIDI owner interfaces 2026-10-03 03:00:38 +08:00
ldm0 0b7081a51a feat(svg): expose native animation element interface objects 2026-10-03 03:00:13 +08:00
ldm0 90ffad4035 feat(svg): expose remaining filter element interfaces 2026-10-03 02:58:43 +08:00
ldm0 4ca389adb2 fix(geometry): align DOMRect factory descriptors and dictionary order 2026-10-03 01:46:03 +08:00
ldm0 ff4bc3aa04 fix(audio): convert offline sample rates with WebIDL float 2026-10-03 01:44:44 +08:00
ldm0 c491a11885 fix(dom): clear root handlers without invoking author setters 2026-10-03 01:43:53 +08:00
ldm0 96442e437b fix(events): preserve event constructor type code units 2026-10-03 01:43:00 +08:00
ldm0 c1893e0599 fix(fetch): use captured origins for Request referrers 2026-10-02 05:41:37 +08:00
ldm0 43c72601f3 refactor(fetch): separate request ownership from API base URLs
Keep frame ownership independent of mutable document bases, share the Request and XHR API base lookup, and validate referrers against the Window origin.

Cover live base changes in initial about:blank, srcdoc, and HTTP iframes from both parent and child realms.
2026-10-02 05:41:37 +08:00
ldm0 10eaff5801 fix(clone): deserialize Window clones in the receiver realm 2026-10-02 02:24:56 +08:00
ldm0 a05bb9287c fix(fonts): validate font set queries with Stylo 2026-10-02 02:23:18 +08:00
ldm0 bda82c8123 fix(forms): wrap textarea submission values 2026-10-02 02:22:02 +08:00