Commit Graph
59 Commits
Author SHA1 Message Date
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 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 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 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 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
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 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 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 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 f3d5f3d11c refactor(runtime): simplify awaited expression evaluation 2026-08-26 17:58:15 +08:00
ldm0 addbb8e3fa feat(fetch): evaluate page expressions 2026-08-26 17:58:15 +08:00
ldm0 4d0b78f1f8 fix(cdp): unify renderer session response authority 2026-08-25 17:15:54 +08:00
ldm0 28aaaa9e8a feat(cli): add disable-js fetch mode 2026-08-25 16:05:34 +08:00
ldm0 461f9bcac4 feat(fetch): enrich JSON dump metadata 2026-08-24 20:04:55 +08:00
ldm0 b959a04253 fix(fetch): invoke wait-script function predicates 2026-08-23 20:51:34 +08:00
ldm0 08d8461c26 fix(fetch): preserve typed readiness timeout phases 2026-08-23 04:45:50 +08:00
ldm0 54f453cdd0 fix(fetch): preserve readiness deadlines and diagnostics
Apply one absolute deadline across response headers, streaming raw bodies, page creation, and later readiness waits. Report the active timeout phase without extending the caller's budget and reject raw documents from Page APIs before an unusable body can stall.

Give CLI fetch failures a stable two-line Error/Reason presentation while retaining full anyhow chains for non-fetch failures, including raw-document page-wait errors.
2026-08-23 04:45:50 +08:00
ldm0 d823999dc0 fix(renderer): fence screencast resource races
Split screenshot and screencast capture contracts, publish one shared visual resource generation, and collect CSS image references during the real layout traversal. Add asynchronous publication and multi-session screencast regressions.
2026-08-22 19:44:54 +08:00
ldm0 7608292c78 fix(renderer): stabilize style observations and screencast polling 2026-08-22 19:44:54 +08:00
ldm0 8441f9a7d8 feat(cli): split response waits into literal and regex modes 2026-08-22 03:20:24 +08:00
ldm0 2c186e3c4a fix(devtools): preserve nested Main response order 2026-08-20 14:12:15 +08:00
ldm0 a74431d226 fix(devtools): unify synchronous Page IO responses 2026-08-20 14:12:15 +08:00
ldm0 d28c20ef87 refactor(devtools): align inspector session routing with Chromium 2026-08-19 19:58:31 +08:00
ldm0 f63a5640ab fix(devtools): make Page crash terminal IO control 2026-08-19 19:58:31 +08:00
ldm0 f90729edf3 fix(devtools): unify Page IO agent ingress 2026-08-19 19:58:31 +08:00
ldm0 595a538bcf Refactor network fetch errors as anyhow context 2026-08-18 17:38:12 +08:00
ldm0 aefa01568d fix(fetch): share deadline with best-effort readiness 2026-08-17 01:23:24 +08:00
ldm0 f23fca74ad refactor(fetch): unify readiness deadline 2026-08-17 01:23:24 +08:00
ldm0 d7df97dc4f fix(fetch): share timeout across replacement navigation 2026-08-17 01:23:24 +08:00
ldm0 8cd6dac0d4 fix(devtools): keep non-V8 IO agents owner-independent 2026-08-17 00:40:39 +08:00
ldm0 368c087534 refactor(devtools): unify the renderer Main receiver 2026-08-17 00:40:39 +08:00
ldm0 91bfa0b441 Remove legacy inspector command routing 2026-08-17 00:40:39 +08:00
ldm0 1b5ffc8f5d refactor: add nested main inspector receiver 2026-08-17 00:40:39 +08:00