Commit Graph
480 Commits
Author SHA1 Message Date
ldm0 1ed0e2238e fix(cdp): apply late request policy before commit projection
A newly committed native Document can execute before its commit output has
been projected into protocol state. Routing Fetch.enable through the
projected binding then updates a loaded predecessor or no Page at all,
allowing requests to bypass interception after a successful ACK.

Address restricted request-policy updates to the synchronously admitted
renderer Page and wait for native completion. Reuse this route for Fetch
cleanup and blocked URLs without granting general unbound Document access.

Hold actual native commit publications in the regression and inspect the
exact evaluation output fence. Cover new/replaced Pages with interception
enable/disable and blocked URLs, with no external I/O in negative controls.
The original controlled reproducer fails 3/3 on the rebase baseline.

Validation: fmt; workspace/all-targets/all-features Clippy; 23,026 Nextest
passed, 20 skipped; three targeted tests x20 and 30 module tests x5, all
without retries.
2026-11-13 01:42:40 +08:00
ldm0 b8190ee87d refactor(indexeddb): address SQL schema by stable IDs
Use the persisted StoreId and IndexId in SQL commands, transaction scopes and renderer handles. Reserve IDs without waiting for the SQL owner and recover their counters with committed disk metadata.

Remove name-based request targets, separate renderer identity tokens and cursor name refresh. Cover concurrent reservations, abort, idle reconnect, catalog recovery, restart, stale IDs and old-name reuse.
2026-11-13 01:39:46 +08:00
ldm0 d6046d2725 fix(bidi): own document admission in pending Runtime commands
Keep the socket actor responsive while a context-targeted Runtime command waits for its Document. Retain the original host and session binding until admission can validate and dispatch in one finite owner turn. Cover close, replacement, navigation completion, session end and disconnect in standalone and Classic-attached BiDi, including exact-once responses and revoked identities.
2026-11-13 00:42:01 +08:00
ldm0 f4f174260f test(runtime): await stylesheet responses through scheduler inputs 2026-11-13 00:42:01 +08:00
ldm0 3e3bee3d75 fix(bidi): keep unrelated contexts live during navigation 2026-11-13 00:42:01 +08:00
ldm0 a44c82a743 fix(protocol): cancel target navigation before native teardown 2026-11-13 00:42:01 +08:00
ldm0 0967c3654a refactor(protocol): scope scheduler navigation prerequisites 2026-11-13 00:42:01 +08:00
ldm0 69d80ea742 refactor(protocol): remove source-owned Native insertion graphs 2026-11-12 20:44:39 +08:00
ldm0 97bb57bed0 fix(downloads): progress independently of command replies 2026-11-12 20:44:39 +08:00
ldm0 5c7a045b1b refactor(protocol): limit response barriers to explicit Inspector messages 2026-11-12 20:44:39 +08:00
ldm0 7b73e7408e refactor(cdp): centralize initial document adoption requirements 2026-11-12 20:44:39 +08:00
ldm0 c7f75ceb7b fix(protocol): preserve native insertion order in source publications 2026-11-12 20:44:39 +08:00
ldm0 af53efc3f8 test(protocol): synchronize timer navigation observation setup 2026-11-12 20:35:12 +08:00
ldm0 e363e2d81d fix(cdp): retain protocol body projections across redirects 2026-11-12 20:10:31 +08:00
ldm0 bc153f0165 refactor(fetch): capture redirect requests at their source 2026-11-12 20:10:31 +08:00
user.email 09c3db3c5a fix(cdp): report dispatched requests across redirect hops 2026-11-12 20:10:31 +08:00
lanyue-llk f98df6ca68 fix(css): report extraFields in getComputedStyleForNode 2026-11-12 19:21:13 +08:00
ldm0 40ace558e3 fix(layout): retain atomic paint stages and inline interleaving 2026-11-12 04:42:48 +08:00
ldm0 077025be8b fix(layout): share atomic inline paint and hit-test ordering 2026-11-12 04:42:48 +08:00
ldm0 c88f14e0cf fix(layout): keep atomic inline descendants above their wrapper 2026-11-12 04:42:48 +08:00
BibekPathak 0165b5b94c fix(layout): hit-test atomic inlines in front of wrapping inline boxes 2026-11-12 04:42:48 +08:00
ldm0 b20ff14ff9 refactor(inspector): derive response IDs and make parsing explicit 2026-11-12 03:32:12 +08:00
ldm0 613d7c22ff refactor(cdp): clarify response settlement and deferred completion 2026-11-12 03:13:09 +08:00
ldm0 69d71c70c6 refactor(cdp): own published work independently of command output 2026-11-12 03:13:09 +08:00
ldm0 0cd6650015 refactor(cookies): separate site history from the current method
Keep method-independent site limits and redirect diagnostic history apart
from the current HTTP method. Compute SameSite outcomes and both diagnostic
tracks when read, with one canonical method input. Method overrides no
longer reverse-repair cached SameSite results or duplicated metadata.

Preserve explicit CrossSite restrictions, scope rebinding, partition keys,
and historical downgrade diagnostics. Keep cache key material unchanged
while moving consumers to the computed context API.

Cover method round trips without history mutation and retain distinct
diagnostics when different histories end with the same CrossSite result.
2026-11-12 03:10:33 +08:00
ldm0 ff9d2f928b perf(protocol): keep navigation replay response matching opaque 2026-11-12 02:01:08 +08:00
ldm0 fd9e0755d5 perf(protocol): avoid materializing responses for completion matching 2026-11-12 02:01:08 +08:00
ldm0 53f6fca31c perf(cdp): keep unrelated navigation and trace events opaque 2026-11-12 02:01:08 +08:00
ldm0 e76d101f4f test(navigation): gate replacement before polling cancellation 2026-11-12 02:01:08 +08:00
ldm0 97519b7d85 perf(inspector): keep handle-free notifications opaque 2026-11-12 02:01:08 +08:00
ldm0 7d1e6072f0 fix(cdp): enforce the raw Inspector metadata boundary 2026-11-12 02:01:08 +08:00
ldm0 82f159c708 Preserve raw Inspector payloads through renderer and CDP routing 2026-11-12 02:01:08 +08:00
ldm0 c67597a1c1 Introduce shared raw Inspector JSON envelopes 2026-11-12 02:01:08 +08:00
ldm0 cd3682f0df refactor(protocol): separate popup creation from target initialization 2026-11-12 00:29:40 +08:00
ldm0 f4effc1022 fix(protocol): announce popup contexts before initial adoption 2026-11-12 00:29:40 +08:00
ldm0 feb6a7d002 chore(dialogs): log automatic handling failures with source identity 2026-11-12 00:29:40 +08:00
ldm0 bc5a256afc fix(bidi): honor prompt handlers and preserve modal execution
Apply negotiated per-type policies through Page-owned one-shot dialog completion, including Classic-attached BiDi sessions. Publish required auxiliary Page predecessors only at a modal wait, keep normal popup completion ordering, and resolve dialogs against their captured Page owner.
2026-11-12 00:29:40 +08:00
ldm0 2f6d1e3a6e fix(automation): preserve explicit empty dialog prompt text 2026-11-12 00:29:40 +08:00
ldm0 1c3281157c fix(storage): notify related Pages of localStorage changes
Native noopener and noreferrer popups share localStorage with related Pages,
but event delivery only searched the mutating Page's Window contexts. Queue
the same owner-bound StorageEvent tasks for matching recipients in related
Pages, while keeping sessionStorage isolated and excluding the source Window.

Extend both window.open and hyperlink popup regressions to await a trusted
localStorage event without changing single ownership of popup scripts.

Regressed-by: 394e305ace
2026-11-11 23:34:00 +08:00
ldm0 1576887649 fix(protocol): retain redirect progress for buffered downloads 2026-11-11 23:23:52 +08:00
ldm0 70111d841f fix(network): preserve each redirect request's metadata 2026-11-11 23:23:52 +08:00
ldm0 65a61c5b6c fix(fetch): preserve redirected request metadata when responses fail 2026-11-11 23:23:52 +08:00
ldm0 ba99840c03 fix(protocol): commit error documents for intercepted failures
Route explicit request failures through common navigation error preparation and commit the existing browser-owned error Document. Preserve the committed Document only for cancellation, project canonical network error codes, and remove the unverified page-close timeout. Cover request/response interception, redirects, popups, subsequent navigation and genuine CDP clients against Chromium.
2026-11-11 23:23:52 +08:00
Den Brooks e5d55c6475 fix(protocol): preserve the committed document when a client fails a paused navigation
Fetch.failRequest with any error reason, such as BlockedByClient, on a paused
main-document navigation invalidated the committed document and published the
retained navigate error and Network.loadingFailed only after the retired page's
close, so a stalled teardown left the tab without a load error and unresponsive.
Chromium cancels such navigations and keeps the current document.

Preserve the committed document for every DevToolsRequestFailure, not just
Aborted. Both classification probes are load-bearing: the chain probe sees the
head error plus #[source] causes, while anyhow stores .context values beside
the chain, so typed contexts only match the direct anyhow-level downcast. Auth
cancellation stays on Invalidate pending verified Chromium parity. Bound the
retired page's close in PreparedNavigationFailureCleanup so the failure
terminal is never withheld by page teardown; renderer-call replays stay
unbounded because abandoning an admitted replay would orphan its response
lease. The navigate command keeps answering with the protocol error carrying
the Chromium error text, matching Network.setBlockedURLs behavior.

Cover request-stage and response-stage failures from a committed document,
redirect-chain failures, and the error classification itself. The
navigation-outcomes CDP smoke group gains a live contract that fails a paused
main document with BlockedByClient and observes the engine-specific navigate
refusal shape (Moli protocol error, Chromium errorText result), one
Network.loadingFailed terminal, no load event, the retained responsive
Document, and a fully working next navigation.

Review fixes: chromium-form navigate expectation in smoke, next-navigation
coverage, bounded renderer wait comment, policy probe and auth comments.
2026-11-11 23:23:52 +08:00
ldm0 43214c7408 fix(cookies): preserve top-level navigation allowances across redirects 2026-11-11 19:19:03 +08:00
ldm0 951d54ab86 fix(ace): retain input effects when page tasks fail
Require explicit task kinds and reject input from read-only tasks. Collect each input outcome in the host and settle retained effects independently of the task result. Report ordinary pending navigations and cover multiple effects, task errors, and screenshots.
2026-11-10 20:26:30 +08:00
guojinghua afd5b8fae3 feat(ace): expose typed page tasks and browser runtime hooks
Add opt-in ace-protocol support with AcePageTask and PageExtensionHost
for renderer-owner-thread inspection, native input, and screenshots.
Expose BrowserRuntimeHandle through a runtime-ready callback so embedders
can discover targets and submit tasks without CDP request/response envelopes.

Reuse supervised page workflows for output ordering, input effects, and
target/document lifetime checks. Recover lost waiters without replaying
admitted tasks, and revoke runtime access on browser shutdown.
2026-11-10 20:26:30 +08:00
ldm0 2d6a76e43c refactor(protocol): share restored context event payloads
Restored execution-context creation and destruction duplicate projection of the same payload. Use one conversion while retaining typed realm/frame ids, moved strings, access flags and event-kind selection at the callers.
2026-11-09 22:12:22 +08:00
ldm0 8c8fdc6181 refactor(protocol): share DOM scroll completion projection
Object-reference and renderer-node scrolling repeat completion/error projection. Share that mapping while preserving Page completion, exact CDP error codes/messages and the two entry points.
2026-11-09 22:07:44 +08:00
ldm0 a88e785eb0 refactor(protocol): share worker console cursor projection
Service Worker and Shared Worker targets duplicate pending Console/Runtime message slicing. Put cursor projection on the existing shared session state, retaining per-target session lookup, frontend/context gates and clamping when message storage shrinks.
2026-11-09 22:07:29 +08:00