Commit Graph
40 Commits
Author SHA1 Message Date
ldm0 723fd6b4d0 fix(history): retain forward entries on cross-document replacement 2026-09-26 19:18:26 +08:00
ldm0 8b57e489e6 fix(history): finish world isolation and native entry cleanup
Wrap nested platform members and synthetic events in each listener world,
sharing dispatch state and weak wrapper identities.

Keep internal history operations on native entries, restore complete native
snapshots before wrapping, and remove JSON and per-wrapper state remnants.
2026-09-26 01:38:23 +08:00
ldm0 74e924c864 refactor(history): extract native Window history storage 2026-09-26 01:38:23 +08:00
ldm0 4b24590ce6 fix(layout): isolate PDF print layout from interactive snapshots 2026-09-25 10:19:22 +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 7e40b17284 refactor(history): extract pure session history state machine 2026-09-24 02:39:25 +08:00
ldm0 f8f46bf488 fix(history): coordinate complete joint traversal plans 2026-09-24 02:39:25 +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 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
lanyue-llk bcf420f622 revert: undo split PR 640 merges (#734-#740) 2026-09-22 20:02:07 +08:00
mini llk 1be735d5c5 fix(network): preserve request metadata and response evidence (#737) 2026-09-22 19:45:58 +08:00
ldm0 18a9f45be2 feat(resource): integrate shared disk-backed response storage
Share one disk pool and parkable-image manager across each browser resource runtime. Adopt completed image receive buffers without a full body clone, share encoded backing with network records and decoders, and drive parking by deadlines. Integrate pooled streaming bodies, release staging capacity after spooling, and use tagged image completions throughout resource loading.
2026-09-21 16:47:19 +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
ldm0 312b0ffc6b feat(emulation): support worker user agent overrides 2026-09-15 16:54:51 +08:00
ldm0 17e961433e feat(emulation): apply native view scaling and capture viewport 2026-09-15 14:46:31 +08:00
ldm0 284667a01a feat(emulation): apply native screen geometry and resolution 2026-09-15 14:46:31 +08:00
ldm0 f6b2e4a0ef feat(emulation): support native automation overrides 2026-09-15 14:46:31 +08:00
ldm0 6c0e1a64dc feat(emulation): override native Data Saver queries 2026-09-15 14:46:31 +08:00
ldm0 0013b7925c feat(emulation): override native hardware concurrency 2026-09-15 14:46:31 +08:00
ldm0 4a0a8304a7 feat(emulation): support reduced transparency preferences 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 8630dea13b perf(fetch): avoid copying response bytes for module consumers
Use byte-only decomposition for Response and NavigationResponse instead of
discarding the text returned by into_parts(). Module, dedicated worker, and
service worker consumers now transfer the existing exact byte allocation.

Verify storage transfer for UTF-8 and non-UTF-8 payloads.

Source: e32030e484
2026-09-14 06:45:16 +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 a70a96f9d1 fix(cdp): synchronize Navigator emulation through native state 2026-09-09 05:02:43 +08:00
ldm0 b67156a651 perf(fetch): reuse valid UTF-8 response storage 2026-09-05 22:57:54 +08:00
ldm0 0c05739324 perf(network): retire cumulative raw output history 2026-09-05 00:16:38 +08:00
ldm0 3951e6c374 perf(network): share retained lifecycle records 2026-09-05 00:16:38 +08:00
ldm0 49ea8a3e1c refactor(cdp): centralize session disposal 2026-09-04 04:39:43 +08:00
ldm0 1908b8b4ea perf(response): defer redundant body text copies 2026-09-04 02:08:02 +08:00
ldm0 fff356767f refactor(target): own stable pages in target hosts 2026-09-01 00:12:24 +08:00
ldm0 8441f9a7d8 feat(cli): split response waits into literal and regex modes 2026-08-22 03:20:24 +08:00
ldm0 ca4f01f6a2 refactor(fetch): drop unused wait criteria equality 2026-08-22 03:20:24 +08:00
ldm0 cba58e3aba refactor(fetch): name response body regex explicitly 2026-08-22 03:20:24 +08:00
BibekPathak cf78d14909 fix(cli): error on invalid --wait-response-body regex 2026-08-21 19:38:13 +08:00
ldm0 e5383caebf refactor(navigation): allocate opaque history identities 2026-08-21 18:22:47 +08:00
ldm0 8164cfd94d refactor(navigation): allocate opaque document history ids 2026-08-21 11:23:44 +08:00
ldm0 d28c20ef87 refactor(devtools): align inspector session routing with Chromium 2026-08-19 19:58:31 +08:00
ldm0 310b886f51 refactor: split inspector IO dispatch from page owner 2026-08-17 00:40:39 +08:00
ldm0 f2a2095751 fix(navigation): stabilize sequential CDP lifecycle 2026-08-13 07:07:00 +08:00
ldm0 27b5135cb6 Public preview 2026-08-11 00:10:12 +08:00