Commit Graph
1475 Commits
Author SHA1 Message Date
ldm0 9fe4534412 fix(modules): bind synthetic text sources to their owning records
Resolve JSON and CSS evaluation data by exact module identity in the compiling realm, with weak context entries owned by compiled records. Remove the main-Document source lookup that broke child imports.

Cover static and deferred dynamic child imports, realm-local caches, parse errors, identity collisions and record disposal. Mark both JSON/CSS cross-origin WPT cases passing after CLI/CDP verification.
2026-09-27 07:59:16 +08:00
ldm0 53fba3fc3c fix(scripts): enforce client-origin CORS before script execution
Bind script loads and cache entries to the document client origin, authorize redirects before following them, and preserve redirect origin taint across Window and Worker Fetch/XHR validation and response filtering.

Check dynamic script CSP before transport, cover real HTTP and lifecycle regressions, and refresh the one newly passing WPT case after fixed-binary CLI/CDP comparisons.
2026-09-27 07:59:16 +08:00
ldm0 5240998e93 fix(webapi): reconcile replayed FileList binding and regressions
Use the shared FileList interface identity in the replayed input setter.
Remove the duplicate XHR URL and credentials regression while retaining
one complete copy, and format the newly replayed WebRTC import.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets
--all-features -- -D warnings; cargo nextest run --no-fail-fast
(17971 passed, 13 skipped).
2026-09-27 07:59:15 +08:00
ldm0 39c0da0701 fix(timers): preserve the initiating script nonce for string handlers 2026-09-27 07:59:15 +08:00
ldm0 ccdccc10df fix(modules): preserve source locations through exception reporting
Carry inline document URLs and parser offsets into V8, and report retained exception locations without reading author properties. Keep import.meta tied to the preparation-time resolution base and pass the actual document URL to child parsers.

Add seven regressions and mark evaluation-error-5.html passing after fixed-binary CLI/CDP comparisons. Full fmt, workspace Clippy, and nextest checks pass.
2026-09-27 07:59:15 +08:00
ldm0 911e314e9c fix(modules): report child script exceptions in their owning Window
Route child parse, link, and evaluation failures to the exact current Window while retaining the original exception value, including deferred top-level await rejection. Keep fetch failures on script.error, restrict load events to external modules, and avoid a second load on deferred rejection.

Reuse body-only error dispatch and preserve selected-task checkpoints, parser order, and stale-owner guards. Add six end-to-end regressions and update two old syntax-error fixtures to require Window.error followed by external script load.

Validation: cargo fmt --all; full workspace all-targets all-features Clippy with warnings denied; full nextest 17659 passed, 13 skipped. Fixed-binary CLI and CDP each run the same 166 WPT cases: 139 to 140 passed, with no other case regressions and two additional crossorigin subtests passing. Move only module/errorhandling.html into the passed list. CDP smoke: 42/43 groups; Puppeteer cannot start because node is absent.
2026-09-27 07:59:15 +08:00
ldm0 425f575a67 fix(modules): preserve original exceptions through error reporting 2026-09-27 07:59:14 +08:00
ldm0 37cd9ae930 fix(modules): retain parse and static request exception identity
Carry realm-owned exception tokens through the module tree, preserve V8 compile exceptions, and cache static dependency validation failures without caching direct import resolution or network errors. Keep values GC-traced and isolated across WindowProxy reuse.

Add identity, shared-dependency, realm, GC, and pending-sibling regressions. Validated with fmt, full workspace Clippy, 17647 nextest passes, and a matched 148-case CLI/CDP WPT slice. The target now passes 11/11 subtests; smoke is 42/43 with the baseline missing-node Puppeteer failure.
2026-09-27 07:59:14 +08:00
ldm0 3386a9d44e fix(url): align hierarchical and opaque path encoding
Encode carets in hierarchical paths and encode only the final opaque-path space before query or fragment delimiters. Preserve the encoded path across suffix mutations and remove the obsolete parser trimming and V8 query-removal workaround.

Add five shared-parser and three VM regressions covering constructors, setters, URLSearchParams, DOM links, and cross-realm behavior. Synchronize 11 stale vendored WPT expected records with pinned current WPT data; inputs, the WPT driver, and the remaining expected-failure entry are unchanged.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17632 passed, 13 skipped). Vendored all-features unit tests, WPT driver, and 67 doctests pass.

On the same 50 URL/Location WPT cases, CLI and CDP both improve from 42 to 48 passing cases and from 7036 to 7085 passing subtests (+49), with no new failures. The two remaining failures are the existing webkitURL alias and srcdoc scrolling cases. Move the verified non-file anchor case to passed.

CDP smoke: 42/43 groups pass. Puppeteer cannot run because node is absent, reproduced with the before binary.

Artifacts: target/wpt-url-encoding-20260908-AP6CI1. WPT revision: db95fafd1fcef8428805e41eb5705d444e8c67ce. Release SHA256: f132f0afe7f49d627ed9b5d397b1d5b71d80432180b08b1d076aa67637efdd65.
2026-09-27 07:59:14 +08:00
ldm0 51d1208d84 fix(url): keep hierarchical paths distinct from authorities
Apply scheme-specific slash handling to relative URL resolution: consume all special authority slashes, but retain non-special backslashes as path data.

Share serialization-only path prefix adjustment across parsing and path mutation, preserve logical paths when adding or removing authorities, and keep host metadata and query/fragment offsets consistent. Distinguish empty authorities from missing hosts in pathname setters and remove the redundant Web API workaround.

Add seven parser/mutation regressions and two cross-realm URL/DOM regressions. Remove only the seven upstream expected failures proven fixed; retain the original WPT data.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17,624 passed, 13 skipped); upstream all-features unit/WPT/doctests.

Focused CLI/CDP WPT agree across 50 cases: 48 additional passing subtests, no new failures. CDP smoke passes 42/43 groups; Puppeteer cannot start because node is missing, unchanged from baseline.
2026-09-27 07:59:14 +08:00
ldm0 edfddce28c fix(url): preserve file URL hosts and path segments
Vendor the existing url 2.5.8 release and align file parsing with WHATWG host inheritance, drive-letter handling, and empty path segments. Keep the dependency version and resource access policy unchanged.

Retain upstream test data and licenses, remove 39 fixed expected failures, and add parser, DOM/URL, and URL-policy regressions. Document the patch and pinned upstream revision in MOLI-PATCHES.md.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17,615 passed, 13 skipped); upstream all-features unit/WPT/doctests.

CLI and CDP WPT agree across 50 cases: 132 additional passing subtests, no new failures, and the file anchor case now passes 138/138. CDP smoke passes 42/43 groups; Puppeteer cannot start because node is missing, unchanged from baseline.
2026-09-27 07:59:14 +08:00
ldm0 b44644ce3b fix(history): preserve queued same-document traversal steps
Queue each History back/forward/go delta as its own authorized traversal task and resolve the destination when that task runs. Keep the committed traversal position separate from synchronous history mutations, and use the canonical Window history for isolated-world calls. Preserve Navigation API result-bearing traversal behavior.

Cover consecutive and opposite deltas, initially out-of-range requests, synchronous pushState, canceled and reentrant traversals, child documents, and isolated worlds. Update old coalescing assertions and wait for actual browser-owned history commits in protocol tests.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17584 passed, 13 skipped). Overlapping navigation WPT improves from 16/22 to 18/22, with both new cases passing all 8 subtests. Navigation API comparison preserves all 385 previously passing cases out of 432.

CDP smoke: 41/43 passed. The dom-input FileList upload failure reproduces on the parent binary; puppeteer could not start because Node is missing locally. Artifacts: target/wpt-history-traversal-20260908-lcpQpn/{before,confirmed,navigation-after,cdp,cdp-before}.
2026-09-27 07:59:14 +08:00
ldm0 e109a2a43b fix(navigation): defer child Location commits and honor window.stop
Prepare pending child history seeds without mutating the active Location, history state, or NavigationHistoryEntry. Preserve initiator URLs and reserved service worker clients when queuing the deferred commit.

Cancel pending child navigation tasks and invalidate in-flight response ownership without clearing another window navigation. Preserve cross-document history traversals and reject incompatible Window.stop receivers.

Add regression coverage for five navigation entry points, retained document/history identity, sibling and parent isolation, late responses, resumed navigation, and traversal. Align integration assertions with committed URLs and test meta refresh through a real network load.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (17581 passed, 13 skipped). The 22 overlapping-navigation WPT cases improve from 12 to 16 passes with no lost passes; seven focused cases pass again. Move the four reproducibly fixed cases from failed to passed.

An earlier full nextest run hit one empty-output assertion in cli_meta_refresh_shutdown_exits_without_renderer_abort; retained its log. Independent old/new binary probes did not reproduce it, and the complete rerun passed without changing or skipping that test. Artifacts: target/wpt-window-stop-20260908-XbyH6Q.

Additional paired release validation: all 385 previously passing Navigation API cases remain passing out of 432. Two existing incomplete cases exchange timeout/harness-stalled classification; all other statuses, subtest counts and failure names are unchanged. Release SHA256: 11d9e1bf1faa64b07538c5f7ed93e7d04a6761d10d4d591433480a614df8a293.
2026-09-27 07:59:14 +08:00
ldm0 75554b96e0 feat(webrtc): implement ICE and data channel event constructors 2026-09-27 07:59:14 +08:00
ldm0 b6d1a56e09 fix(clipboard): align clipboard event interfaces 2026-09-27 07:59:14 +08:00
ldm0 17737461a4 fix(xhr): resolve open URLs with credentials 2026-09-27 07:59:13 +08:00
ldm0 52025e9416 fix(service-worker): validate registration URL arguments 2026-09-27 07:59:13 +08:00
ldm0 7b59b9b274 fix(fetch): honor sandboxed opaque request origins 2026-09-27 07:56:13 +08:00
ldm0 cfcaf31a72 fix(script): mute cross-origin classic script errors 2026-09-27 07:56:13 +08:00
ldm0 111ebcb50f fix(window): reject indexed writes and definitions 2026-09-27 07:56:12 +08:00
ldm0 1427b8ca77 test(wpt): mark live window index deletion passing 2026-09-27 07:56:12 +08:00
ldm0 159e9589d4 fix(window): reject deleting live indexed children 2026-09-27 07:56:12 +08:00
ldm0 21fd7863a4 test(wpt): mark child meta refresh referrer passing 2026-09-27 07:56:12 +08:00
ldm0 1d484c88e0 fix(refresh): use child document as navigation referrer 2026-09-27 07:56:12 +08:00
ldm0 e624489f97 test(wpt): substitute request headers in fixtures 2026-09-27 07:56:12 +08:00
ldm0 e1c5cb07c8 fix(location): use executing document as navigation referrer 2026-09-27 07:56:11 +08:00
ldm0 549c4bfd60 fix(location): apply protocol setter scheme rules 2026-09-27 07:56:11 +08:00
ldm0 e1e8bf2cc9 fix(history): enforce document URL rewrite rules 2026-09-27 07:56:10 +08:00
ldm0 0f86a8c27e test(wpt): refresh cross-engine case lists 2026-09-27 07:56:10 +08:00
ldm0 8792a271f1 fix(history): count child pushes in joint session history 2026-09-27 07:56:10 +08:00
ldm0 7934690929 fix(history): preserve joint length for initial child documents 2026-09-27 07:56:09 +08:00
ldm0 5c8b7272ae test(wpt): mark initial about blank cases passing 2026-09-27 07:56:09 +08:00
ldm0 06ae2f7aa0 fix(iframe): reuse initial document for about blank variants 2026-09-27 07:56:09 +08:00
ldm0 128b95c315 test(wpt): mark trusted history events passing 2026-09-27 07:56:09 +08:00
ldm0 ae840d2516 fix(events): construct trusted history event subclasses 2026-09-27 07:56:09 +08:00
ldm0 609b4a54d3 fix(location): track ancestor origins per document 2026-09-27 07:56:09 +08:00
ldm0 761bf79cf6 test(wpt): refresh cross-engine case lists 2026-09-27 07:56:08 +08:00
ldm0 863d22b5ec test(wpt): mark child window closed case passing 2026-09-27 07:56:08 +08:00
ldm0 536ca306e1 fix(window): expose closed on child windows 2026-09-27 07:56:08 +08:00
ldm0 ff241ed38c fix(window): defer lightweight popup teardown 2026-09-27 07:56:08 +08:00
ldm0 cab84f49a0 fix(window): preserve browsing context opener semantics 2026-09-27 07:56:08 +08:00
ldm0 82b949a8ef fix(window): keep retired iframe relations discarded 2026-09-27 07:56:07 +08:00
ldm0 fae5605335 fix(document): throw stream errors in the relevant realm 2026-09-27 07:56:07 +08:00
ldm0 6fbfc1c2d7 fix(window): resolve live cross-origin child proxies 2026-09-27 07:56:07 +08:00
ldm0 1e0a805772 fix(iframe): encode src queries with document charset 2026-09-27 07:56:07 +08:00
ldm0 8c7f7fef92 test(wpt): mark iframe discard cases passing 2026-09-27 07:56:06 +08:00
ldm0 711082ddde fix(iframe): discard child window relations synchronously 2026-09-27 07:56:06 +08:00
ldm0 e34b4031a2 test(wpt): refresh cross-engine case lists 2026-09-27 07:56:06 +08:00
ldm0 afbdc481df test(wpt): mark browsing context case passing 2026-09-27 07:56:06 +08:00
ldm0 eb76176f26 fix(dom): initialize empty browsing contexts correctly 2026-09-27 07:56:06 +08:00