Expose clientInformation as a replaceable alias of the associated Navigator, plus a per-Window External object with the legacy no-op methods. Retained getters use native associations after public properties are shadowed.
Regression coverage checks top-level windows, iframe realms, lightweight popups, detachment, object identity, property descriptors, native receiver brands, and replaceable properties.
Validation: fmt, strict workspace clippy, full nextest. Summary [ 105.145s] 18906 tests run: 18906 passed (9 slow), 16 skipped
Require enable-cors and a nonempty Origin before exposing CORS response headers from common/redirect.py. Preserve the first status and Location values, handle extension methods, and respond without waiting for unused uploads or adding a Content-Length header.
Validation: 580 Python tests passed with 32 workers; 1296 HTTP responses matched official wptserve for status, body, and 15 response fields. New regression tests fail on the unmodified main baseline.
Source-commit: 99b528aece
Keep request identity and cancellation in Fetch while read tasks exclusively own response data. Match completions to the registered read instead of reinserting transfers or replying to navigations from I/O completion.
Retire superseded reads immediately, drain reads on Fetch disable, and preserve typed read errors. Cover delayed successes, failures, request reuse, cancellation, and debugger-paused supersession.
Enable Network before setting blocked URLs so the parser script is intercepted instead of depending on an external DNS or request failure. Wait through the scheduler and assert the exact script request fails with ERR_BLOCKED_BY_CLIENT while subsequent parsing continues.
An earlier full-suite run exposed the timeout. Validation after the fix: 20 exact-test stress iterations and three iterations of the 20-test blocked_urls module, all passing with flaky results treated as failures; cargo fmt --all; full workspace all-target all-feature Clippy with -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped).
Carry owner refresh intent through CSS synchronization and prepare font projections only after finding an existing FontFaceSet in its creation realm. Native CSS updates continue normally and held collections update without rereading document.fonts.
A test-only counter verifies 64 unobserved stylesheet mutations prepare no font projections, first observation prepares current state once, and later mutations and removals update held collections.
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).
Centralize navigation dependency decisions for readiness probing and snapshot draining. Replacement actions can reach the owner that cancels the pending request even when earlier observations wait for that load, while exact owner authorization remains mandatory.
Keep retirement admission policy beside publication ownership. Extend coverage for stale owners, cancellation, reused frontend ids, duplicate terminals, and late results without reviving retired notifications or remote objects. The new queue regression fails before the scheduler fix.
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).
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).
Cache getters on the existing Event intrinsic and select field projection callbacks once. Preserve own descriptors, optional fields, private backing, and per-realm function identity while moving generic projection policy out of Navigation.
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).
Only the current navigation can suspend renderer output; older jobs retain cleanup ownership without blocking the active document.
Retire target-owned request, auth and response interceptions on supersession, cancel streaming transports and reject stale body-read completion. Cover paused debuggers, overlapping navigations, target isolation and once-only terminal replies.
Move old-document debugger termination into renderer preparation scopes instead of tracking protocol navigation IDs in DevTools. Reject superseded response jobs using exact navigation tokens and cancellation authority, and retire their renderer-channel suspension independently.
Cover response interception and supersession while paused, repeated pauses, and prepare commit/cancellation/drop cleanup. Verified cargo fmt --all, workspace all-targets all-features clippy with warnings denied, 18444 nextest tests, and 20 stress iterations of 127 focused tests.
Track provisional loads by navigation ID on the existing renderer target and explicitly finish debugger policy on commit or cancellation. Return the pause-loop exit reason and terminate paused old-document execution through V8 Inspector.
Defer intercepted-response document creation until continuation, removing the eager prepared-document paths. Preserve committed documents for aborted navigations and cover repeated pauses, multiple sessions, interception and supersession.
Validated cargo fmt --all, strict workspace clippy, and cargo nextest run --no-fail-fast: 18,429 passed, 13 skipped. New regressions also passed 20 stress iterations and three confirmed debugger-paused ippure navigation probes.