Commit Graph
89 Commits
Author SHA1 Message Date
ldm0 e53b60bd7c fix(sri): retain supported hashes with malformed padding 2026-09-27 05:46:50 +08:00
ldm0 3ea89722bc fix(dom): preserve AbortSignal dependency order during reentrant aborts 2026-09-27 03:25:21 +08:00
ldm0 24743af0e4 fix(script): report document.write exceptions through shared execution 2026-09-26 20:22:11 +08:00
ldm0 d86a023c35 fix(preload): share destination validation before load admission 2026-09-26 19:27:10 +08:00
ldm0 adffcce2a4 fix(preload): share nonblocking link lifecycle ownership 2026-09-26 19:23:09 +08:00
ldm0 011340a8a1 fix(cli): publish layout before fetch eval with --layout
Publish one layout-only snapshot after page readiness and delay for --eval and --eval-file. Keep geometry getters on the last published snapshot during script execution.
2026-09-26 17:13:28 +08:00
ldm0 50284d3a58 fix(navigation): preserve child navigations started by javascript URLs 2026-09-26 06:42:45 +08:00
ldm0 b4f875566d fix(indexeddb): validate factory receivers and preserve promise realms 2026-09-25 20:50:02 +08:00
ldm0 179241dedd refactor(layout): publish layout only through explicit visual output
Make geometry, input and observers read the latest published layout without
cold-start or invalidation-triggered layout. Only screenshot, screencast and
PDF output can build and publish a new tree.

Connect WebDriver page screenshots to the shared output pipeline, explain how
to initialize layout in errors, and migrate fixtures to explicit publication.
Remove obsolete read policies and embedded-frame completeness metadata.
2026-09-25 10:19:22 +08:00
ldm0 663a5501d7 fix(history): preserve each queued History API traversal
Coalescing consecutive History API requests discarded intermediate
same-document traversals and their events when joint traversal plans
entered the shared queue. Keep these requests in order and derive the next
index from the last queued step, while retaining Navigation API promise
reuse.

Apply top-level traversals to the page's default Window when an isolated
realm initiated the request. Add local back/forward coverage across same-
and cross-document entries, and verify every event and microtask turn in
the existing history tests and fixture.

Fixes: f8f46bf48 (fix(history): coordinate complete joint traversal plans)
2026-09-25 03:03:07 +08:00
ldm0 5ab69e4aac fix(wpt): honor DOMException assertion constructors and realms 2026-09-24 20:22:08 +08:00
ldm0 1933cec74f refactor(input): centralize editing and native element clicks 2026-09-23 23:06:17 +08:00
ldm0 1418e3aa35 refactor(history): centralize joint session history state
Per-Window length counters cannot shrink after traversal and branching, and
leave retained sibling History objects stale. Give each traversable one
ordered history and cursor with stable step, browsing context, and Document
identities. All History getters read that state; Navigation entries remain
Document views.

Route push, replace, traversal, and pruning through the shared model. Carry
browser positions or renderer snapshots into new Documents and publish
committed mutations through the Page owner-action FIFO. Remove cached length
adjustments and DOM-order traversal guesses. Preserve srcdoc identity when
only its parent's URL changes.

Keep reset callback pushes in both renderer and browser history, and prune
discarded sibling Navigation entries when forward steps are removed.

Validation: cargo fmt --all; workspace all-targets/all-features Clippy with
warnings denied; cargo nextest run --no-fail-fast (18,501 passed, 14 skipped);
12 targeted Chromium/Moli state and length comparisons; frontend differential
1,020/1,020 matches, all 5,259 observed frames matching, with zero retries.
2026-09-23 20:39:06 +08:00
ldm0 3f8ce8a940 fix(history): use document lifecycle for initial blank replacement 2026-09-23 16:11:02 +08:00
Donough Liu fe28a946e4 fix(indexeddb): snapshot queued queries and support range deletion (#767) 2026-09-23 04:44:31 +08:00
Donough Liu 7eb6444394 fix(history): preserve joint length for initial child documents (#763) 2026-09-23 04:43:54 +08:00
ldm0 6d08975a69 refactor(fetch): preserve response header bytes end to end
Carry raw response header values through fetch, caches, redirects,
renderer delivery, workers, and protocol records. Convert explicitly
at WebIDL and protocol text boundaries while preserving opaque bytes.

Keep legacy CacheStorage and service worker metadata readable, and
advance the HTTP cache format for raw header values.

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-23 02:02:54 +08:00
ldm0 c019abeeb1 fix(streams): disturb the source when piping starts 2026-09-22 12:17:45 +08:00
ldm0 29283fd86a fix(network): scope CDP header overrides and preserve BiDi byte values
Restore original headers on redirect while preserving current-hop overrides
for authentication retries and keeping Network event identity intact.

Preserve raw BiDi Cookie, Set-Cookie, and extra header values through page,
navigation, and worker policies. Apply CDP's last-value behavior for duplicate
request header names.

Add coverage for header bytes, redirects, authentication, and event sequences.
2026-09-21 05:37:28 +08:00
ldm0 932a7225ac refactor(network): preserve request header bytes across interception
Carry RequestHeaders through navigation, Fetch/XHR, workers, redirects and auth,
with explicit Unicode and ByteString conversions at protocol and WebIDL boundaries.
Share the raw curl header list with WebSocket transport and decode binary response
headers without UTF-8 replacement. Keep header memory charging concrete.

Cover opaque values, UTF-8 overrides, duplicates, redirect/auth continuation and
WebSocket handshakes with byte-level regression tests.
2026-09-21 03:54:12 +08:00
SpringCorel c6de50242a fix(nextest): make root_client_metrics_track_window_surface_profile work on all platforms 2026-09-16 14:59:42 +08:00
ldm0 538e35f96f refactor(emulation): simplify document creation inputs 2026-09-15 14:46:31 +08:00
ldm0 4acde632d1 refactor(emulation): deliver coherent native surface events 2026-09-15 14:46:31 +08:00
ldm0 24dcb813c0 test(lifecycle): gate post-DCL script loading explicitly
Source: fa5059a062
2026-09-15 13:12:39 +08:00
ldm0 345a66ba07 test(css): cover picture-in-picture display mode queries
Source: 784fdc207e
2026-09-14 21:43:31 +08:00
ldm0 c0a87c6960 fix(fetch): preserve committed origins for document subresources 2026-09-14 06:48:28 +08:00
ldm0 53f790c13a fix(fetch): require browser origins and unify SW request state
Keep request origin independent of URL resolution and referrer context,
including local blob fetches and inherited or sandboxed srcdoc documents.
Reject missing browser origins at the resource client boundary and retain
one Request across Service Worker redirects and network fallback.

Cover dispatch rejection, wire Origin/Cookie headers, memory-cache
partitioning and preserved Service Worker request metadata.

Validation: workspace fmt and Clippy passed; Nextest passed 17,517 tests
with 13 existing skips. Renderer test debug symbols were disabled to fit
available build memory; tests and debug assertions were unchanged.
2026-09-13 16:14:50 +08:00
ldm0 77783ece9d fix(fetch): enforce request modes and CORS before redirects 2026-09-13 16:14:50 +08:00
ldm0 4a1e6fd196 fix(fetch): unify script headers and CORS response validation
Generate Origin independently of browser destination metadata, and attach script
metadata at classic, module, and preload request builders. Share redirect URL-list
rules across request generation and response validation, and remove final-only
CORS validation from manifests, stylesheets, and request interception.

Reject failed CORS checks even without supported integrity metadata. Preserve CSP
reporting before dynamic script fetches and use committed Window origins for
srcdoc and sandboxed child script/module requests.

Add wire-level Origin, Cookie, and Fetch Metadata regressions, plus manifest,
stylesheet CSSOM, CSP, and child module/preload coverage.
2026-09-13 04:46:51 +08:00
ldm0 b63197ff8a fix(fetch): retain redirect state across service worker fallback
Keep redirect history in Request so Service Worker handoffs, network
redirects, preflights, Origin serialization, cookies, and TLS credentials
share the same state. Avoid reusing another request's response URL list
from the renderer memory cache.

Validate and filter network responses using their full history while
preserving readable Service Worker response filters across streaming and
buffered delivery. Returning to the initiating origin keeps network CORS
tainting; worker-produced responses retain their own filtering.

Add wire-header, credentials, cache, and worker response regressions, and
correct the local Fetch/XHR redirect fixtures to authorize and expose CORS
responses after a cross-origin round trip.
2026-09-13 04:46:51 +08:00
ldm0 c1412b76b9 fix(fetch): preserve redirect response provenance
Distinguish network, service worker, and browser-internal redirects so synthetic responses are not subjected to network CORS checks. Preserve every hop for redirect taint and Origin validation, including across navigation response conversions.

Add seven cross-origin service worker script scenarios and guard CORS checks for cached network redirects without ExtraInfo. The new integration regression fails before the fix and passes afterward.

Validated with cargo fmt --all, workspace Clippy across all targets and features with warnings denied, and cargo nextest run --no-fail-fast: 17459 passed, 13 skipped. Used one build job for the full test run after a parallel-build rustc process was killed.
2026-09-13 04:46:51 +08:00
ldm0 a4364bf149 fix(scripts): validate response eligibility before SRI
Preserve response filtering through script and service worker loading, validate CORS authorization across redirects, and reject opaque responses before computing supported integrity digests. Keep empty and unsupported metadata behavior unchanged.

Add parser, dynamic script, module, and service worker regressions covering 39 scenarios. Validated with cargo fmt --all, full workspace Clippy, and cargo nextest run --no-fail-fast (17457 passed, 13 skipped).
2026-09-13 04:46:51 +08:00
ldm0 3bead42808 refactor(emulation): use native process-wide ICU defaults
Remove the Date/Intl wrappers, custom date parser and per-Page replay state. Keep exclusive locale/timezone ownership in a process controller and refresh existing Page and Worker isolates through generation-bound notifications and observation boundaries, including nested Inspector pauses.

Release claims on session/target/context retirement, retain native coercion and locale matching, and cover lifecycle restoration with Rust, BiDi and process-isolated CDP regressions.
2026-09-13 01:07:35 +08:00
ldm0 14949fd862 fix(dom): include CDATA in child text content
Extract an independently mergeable topic from wpt-misc-fix at
a70a96f9d1.

Register the child text content regression module without including later script test modules.
Include the XML document fixture route used by the CDATA regression so this branch does not depend on the separate XML input-stream changes.

Source commits:
- 7f587e1251
- ae3a3f1096

Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast
2026-09-10 05:50:52 +08:00
ldm0 a70a96f9d1 fix(cdp): synchronize Navigator emulation through native state 2026-09-09 05:02:43 +08:00
ldm0 0c05739324 perf(network): retire cumulative raw output history 2026-09-05 00:16:38 +08:00
ldm0 88fe258397 fix(cdp): refresh resident target network policy 2026-09-04 04:39:43 +08:00
ldm0 19a59d0d6e refactor(cdp): keep navigation engines with target owners 2026-09-04 04:39:43 +08:00
ldm0 49ea8a3e1c refactor(cdp): centralize session disposal 2026-09-04 04:39:43 +08:00
ldm0 baeab149b9 refactor(cdp): remove ambiguous owner routing adapters 2026-09-04 04:39:43 +08:00
ldm0 64d9a9fce7 refactor(cdp): centralize target session disposal 2026-09-04 04:39:43 +08:00
ldm0 2cba5a7aeb feat(fetch): add disable-css mode 2026-09-04 03:46:02 +08:00
ldm0 4c4055d5e0 fix(fetch): reject page output from raw headers 2026-09-03 23:13:25 +08:00
ldm0 ccfdf312a8 perf(renderer): store reflector handles once 2026-09-01 04:47:41 +08:00
ldm0 e5adfb4120 fix(cdp): align multi-page policy with Chromium 2026-09-01 00:12:24 +08:00
ldm0 2a10f8efca fix(cdp): harden document and navigation lifecycles 2026-09-01 00:12:24 +08:00
ldm0 42ca2882d2 fix(cdp): aggregate target policy by session 2026-09-01 00:12:24 +08:00
ldm0 fff356767f refactor(target): own stable pages in target hosts 2026-09-01 00:12:24 +08:00
ldm0 5b9a21bc25 fix(navigation): honor input disposition for popup activation
Carry foreground/background selection through renderer and protocol so auxiliary targets are activated independently of navigation. Match trusted input policy for platform modifiers, Shift, Alt, and window.open while preventing synthetic modified clicks from creating tab-unders.
2026-08-27 18:04:19 +08:00
ldm0 76d87a5948 test(fetch): isolate network idle timeout budget 2026-08-27 17:53:51 +08:00