Commit Graph
1514 Commits
Author SHA1 Message Date
ldm0 5e047950e2 fix(forms): round temporal input steps to millisecond precision 2026-10-04 05:27:43 +08:00
ldm0 91bfb9f374 test(xhr): assert exact blob response header serialization 2026-10-04 04:12:34 +08:00
ldm0 5b631561a3 feat(clone): serialize native DOMRect platform values 2026-10-04 04:07:26 +08:00
ldm0 98edb0848b fix(events): retain creation state in legacy initializers 2026-10-04 04:05:56 +08:00
ldm0 2615f70a53 refactor(dom): share Node tree relation getter resolution 2026-10-04 04:01:04 +08:00
ldm0 9660301300 test(url): keep file URL spelling separate from access policy 2026-10-04 03:52:06 +08:00
ldm0 32de272640 fix(cdp): keep current renderer notifications live during navigation 2026-10-04 03:12:50 +08:00
ldm0 2ea0ffd7b2 test(fetch): verify identity encoding for range requests
Exercise Range requests through buffered, HTML and raw transports, including malformed or empty Range values, native header configuration and redirects. Inspect wire headers to ensure identity encoding is selected for Range without leaking into subsequent ordinary requests, while response decompression remains active.
2026-10-04 03:09:36 +08:00
ldm0 bb2cc3b8c3 test(fetch): cover MIME parameters in no-cors header fills 2026-10-04 03:08:45 +08:00
ldm0 933d6bdf82 test(fonts): await the FontFaceSet fixture before assertions 2026-10-04 02:38:42 +08:00
ldm0 89b5932d43 test(streams): await compression work through the page executor 2026-10-04 02:38:18 +08:00
ldm0 3569ba3276 test(encoding): await child script message delivery 2026-10-04 02:37:51 +08:00
ldm0 059cc9d04e test(cdp): wait for fulfilled Fetch body consumption 2026-10-04 02:37:24 +08:00
ldm0 73e2906335 refactor(forms): share input defaultValue reflection helpers 2026-10-04 02:37:08 +08:00
ldm0 b8e7b6b27b refactor(webidl): share DOMString conversion through UTF-16 2026-10-04 02:36:29 +08:00
ldm0 60a001f9c2 refactor(indexeddb): deduplicate cursor entries in place 2026-10-04 02:36:07 +08:00
ldm0 ab4c396280 chore(release): update version to 1.1.13 2026-10-04 02:34:46 +08:00
ldm0 6ecf3f0c03 fix(css): parse stylesheet preload type hints as MIME values 2026-10-04 02:33:39 +08:00
ldm0 b1fcb49648 fix(indexeddb): treat boxed primitives as getAll options 2026-10-04 02:32:58 +08:00
ldm0 ae8c16eaaa fix(fetch): create buffered response clones in the receiver realm 2026-10-04 02:32:31 +08:00
ldm0 13cb11c4ac fix(modules): classify caught native TypeError constructors 2026-10-04 02:31:50 +08:00
ldm0 28ecf45c9b fix(webidl): preserve low bits in unsigned 64-bit wrapping 2026-10-04 02:30:29 +08:00
ldm0 4ce0b82a45 chore(wpt): refresh cases after retired Window query fix 2026-10-04 01:38:57 +08:00
ldm0 066501d2ac fix(window): isolate retired Window named and indexed queries 2026-10-04 01:38:57 +08:00
ldm0 5fee158929 chore(wpt): refresh cases after callback realm fix
Run the 451451cec release against WPT db95fafd1f with the full all profile,
CDP mode, and 50 workers. Record all 13,631 executed cases: 9,583 passed,
3,724 failed, 259 timed out, 10 errored, 1 crashed, and 54 stalled.

Both Promise and both Wasm entry-settings regressions now pass in the full
run and in all five focused release rounds. Keep the other original full-run
statuses, including errors and intermittent failures; diagnostic comparisons
with main and the previous release do not replace snapshot results.

Audit confirms every raw result agrees with the engine report, matrix, and
eight sorted, disjoint status lists, with no missing or unexecuted cases.
2026-10-04 01:38:57 +08:00
ldm0 29681456e9 fix(callbacks): preserve live realms during popup event dispatch
A popup-scoped identity lookup can miss a load callback created in its
parent or another live iframe. The retirement guard then rejects the
callback solely because its context has a Window token, causing the
Promise and Wasm entry-settings WPTs to time out.

Resolve the callback creation context's concrete registration when no
scoped identity was provided, then apply the existing currentness check.
Unregistered Window realms remain retired and captured identities retain
their original authority.

Add a Page-task regression that opens a popup through an iframe and checks
parent and live-child callbacks, their receivers and event targets. A
callback retained from a removed/reinserted iframe Window must not run.

Validation: cargo fmt --all; workspace/all-targets/all-features Clippy with
-D warnings; cargo nextest run --no-fail-fast with retries disabled
(19,166 passed, 16 skipped). The new regression passes 20 stress iterations;
the 60 popup and callback-retirement tests pass all three stress rounds.
2026-10-04 01:38:57 +08:00
ldm0 452d385891 test(wpt): refresh cases after rebasing global scope fixes
Run the unfiltered all profile with release Moli 1.1.12 built from
0c5f83969f after rebasing onto main
8f7598a30f, using WPT
db95fafd1fcef8428805e41eb5705d444e8c67ce and 50 CDP workers.

Complete all 13,631 cases: 9,578 pass, 3,730 fail, 261 timeout, 9 error,
one crash and 52 harness-stalled. Against main's lists, 11 cases gain pass
and 16 lose pass, for a net decrease of five. Preserve the raw full-run
outcomes.

Validate the unchanged case set and exactly one recorded result per case.
Raw live results, engine output, matrix and all eight sorted, disjoint,
exhaustive status lists agree. No setup errors, missing cases, unknown
statuses or unexecuted recovery placeholders. git diff --check passes.

Check all 16 pass losses against the same release main source and WPT.
Four Promise/Wasm entry tests reproduce a source regression: HEAD times
out in 8/8 paired trials while main passes 8/8. The callback retirement
guard added in 77d2700c6 is the cause; a diagnostic-only fallback restores
all four in 3/3 trials. Keep these failures in the raw timeout list.

Nine losses also fail on main; two original failures remain unreproduced.
rel-attribute-clearing remains suspicious (HEAD 3/28 failures, main 0/28).
Filtered validation does not alter this full-run snapshot.
2026-10-04 01:38:57 +08:00
ldm0 8fba73c587 refactor(window): encapsulate document wrapper binding
Keep the private Document wrapper slot and Window.document getter together in
the Window binding layer. Bind environment settings and the wrapper through
one guarded entry point, leaving WindowEnvironmentSettings responsible for
native document identity, origin and base URL resolution.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features
-- -D warnings; cargo nextest run --no-fail-fast.
2026-10-04 01:38:57 +08:00
ldm0 0c89c93abd fix(window): retain iframe document identity after removal
Resolve Window.document through the receiver realm's retained settings and
keep its original Document wrapper in a private V8 slot after cache retirement.
Use the same getter for the LegacyUnforgeable bootstrap descriptor.

Cover cleanup, reinsertion, borrowed getters and navigation, including retained
Request regressions for about:blank, srcdoc and HTTP frames.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features
-- -D warnings; cargo nextest run --no-fail-fast (19,146 passed, 16 skipped).
2026-10-04 01:38:57 +08:00
ldm0 3068890346 fix(request): retain iframe settings after removal
Keep each child realm's associated native Document and captured origin after
execution authority retires. Saved Request constructors continue reading live
base changes on that Document and cannot resolve against a reinserted iframe.

Keep removed Window globals attached, detach only for same-frame proxy reuse,
and explicitly reject retired Window callback realms. Preserve initial empty
Document bootstrap resolution and use intrinsic abort constructors internally.

Cover about:blank, srcdoc, HTTP, realm cleanup, base mutation, reinsertion,
referrers and dependent signals. Existing MessagePort retirement and nested
blob iframe constructor tests remain unchanged and pass.

Validation: cargo fmt --all; workspace Clippy with all targets/features and
-D warnings; full nextest (19,144 passed, 16 configured skips, no retries).
2026-10-04 01:38:57 +08:00
ldm0 dbdcbec7ba fix(timers): enforce stored deadlines
A one-millisecond timer could become runnable immediately after registration.
Remove the early dispatch allowance from the shared scheduler so registered
and rescheduled timers become runnable only at or after their actual
monotonic deadline. All readiness queries use the same rule.

Regression coverage checks registration-time and pre-deadline queries,
exact-deadline dispatch through filtered and unfiltered paths, and interval
rescheduling without advancing the new deadline.
2026-10-04 01:38:57 +08:00
ldm0 2fc3c71030 fix(idle): align deadlines with the DOM clock
Capture each IdleDeadline's native performance time origin and subtract
coarsened timestamps in ticks. This keeps timeRemaining on the same 100us
timeline as performance.now, including when the method is borrowed from
another realm, and avoids exposing floating-point sub-tick residuals.

The recursive idle WPT regression is reproducible at 8a353fa2a: its release
parent passes 20/20 while that commit fails 20/20. That commit changed the
DOM clock from 5us to 100us without updating the raw idle deadline clock.

Add deterministic clock-bucket and expiration checks plus a native API
resolution test that fails before this fix. Clock-only release stress passes
97/100; the remaining failures expose early idle timer admission, which is
handled separately.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets
--all-features -- -D warnings; cargo nextest run --no-fail-fast
(19139 passed, 16 skipped).
2026-10-04 01:38:57 +08:00
ldm0 e442d0eee2 refactor(worker): split global scope by responsibility 2026-10-04 01:38:57 +08:00
ldm0 82540f8d5c test(fetch): cover BOM decoding across body consumers and realms 2026-10-04 00:48:02 +08:00
ldm0 805d5f4736 test(url): cover authority replacement in relative special URLs 2026-10-04 00:47:24 +08:00
ldm0 fdabea6eb5 test(html): keep obsolete area properties out of reflection 2026-10-04 00:43:31 +08:00
ldm0 7a8362581a test(parser): continue decoded input after meta charset 2026-10-04 00:37:48 +08:00
ldm0 daf745ae67 test(websocket): run writer abort on its local owner lane 2026-10-04 00:34:13 +08:00
ldm0 c6b3b1af41 test(webidl): cover platform initializer record discrimination 2026-10-04 00:20:27 +08:00
ldm0 febf9012a2 test(fetch): drive Blob MIME checks through page tasks 2026-10-04 00:17:47 +08:00
ldm0 4c716e7fdf test(intl): compare Date locale forwarding with the native formatter 2026-10-04 00:17:22 +08:00
ldm0 ec8b1d9330 fix(wpt): let harness probes use the remaining case deadline 2026-10-04 00:09:13 +08:00
ldm0 5f38675d28 test(cache): cover interface and storage ownership in popups 2026-10-04 00:08:19 +08:00
ldm0 2094dd2c0e test(cdp): gate deferred script response on ready task callbacks 2026-10-03 23:59:59 +08:00
ldm0 2aff185c7d test(trusted-types): cover policy callback conversion rules
Cover createPolicy dictionary conversion, inherited callbacks, omitted/null options, variadic callback arguments, null callback results and original conversion exceptions. These regressions exercise the Trusted Types implementation already on main.

Keep all three Web IDL methods on an empty policy’s prototype and require TypeError when their callbacks are absent. This corrects the old fixture assumption that omitted callbacks remove methods.
2026-10-03 23:59:05 +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