Enforce document and Location authority at realm boundaries, preserve Window-owned timer and Service Worker completion state across initial commits, and retire isolated-world IndexedDB handles without pinning the old realm.
Add bounded fixed and random Chromium/Moli comparisons for target lifecycle,
window activity, named-window reuse, opener references and navigation inheritance,
plus a real DevTools frontend probe. Preserve action replay, raw protocol evidence
and target/session mappings while normalizing observed equivalent focus-event
orders and retaining exception identity in comparisons.
Validation: PYTHONPATH=moli-benchmark moli-benchmark/.venv/bin/python -m unittest discover -s moli-benchmark/tests -p test_multipage_cdp_fuzz.py -v.
Create script auxiliary Pages synchronously and let their CDP targets adopt
those exact Pages. Preserve Page and WindowProxy identity through document
navigation, sharing browsing-context names, opener references, message endpoints
and close state with related windows.
Commit browser responses into the existing Page with exact document admission,
cancellation and failure disposition. Capture accepted navigation origin, base,
policy, storage and referrer, preserve auxiliary history and restore related
browsing-context groups without issuing duplicate popup requests.
Reuse the initial same-origin Window while replacing its Document, and centralize
Document owner transitions, descendant retirement and Inspector publication.
Give related Pages independent Inspector routes and shared per-Page startup
pause state, route isolate foreground work through surviving Pages, and cache
cross-origin Window functions in each accessing realm with receiver-aware access.
Cover actual popup state, navigation and parser rebinding, accepted environments,
history, cross-origin access, multiple frontends, cancellation and task retirement.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast.
Track each window's selected tab and browser focus independently of protocol
page routing. Keep window bounds, adjacent-tab close selection, discovery and
target metadata consistent with their owning windows and documents.
Queue renderer activity updates outside the CDP actor, preserve their output
fences and remember admitted activity so focus reversals survive a busy page.
Cover window selection, focus-event state and busy-context activation.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast.
Retain native DOM, Blob, AbortSignal and intrinsic interface backing while
JavaScript still holds a retired realm. Retire active execution resources and
trace wrapper and traversal-filter ownership through V8 so the last reference
releases the native host without Rust-to-V8 root cycles.
Cover retained native values, realm finalizers and traversal callback lifetimes.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast.
Use owner-backed security origins for tool registration, Permissions Policy inheritance and navigation results. Keep the child commit query independent of the adapter document map and preserve inherited blank and opaque sandbox origins.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19396 passed, 16 skipped). Then 75 targeted tests passed all 20 stress iterations without retries, followed by another full Nextest run with the same result.
Track dirty form handles, preserve shadow-including order for duplicate names, and match definitions by handle. Unrelated DOM changes no longer rebuild every schema. Association changes, removed external controls and cross-document adoption refresh the affected document candidates, including the control's former document. Conflicting candidates remain discoverable independently of registration success.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19396 passed, 16 skipped). All 75 targeted WebMCP tests passed 20 stress iterations without retries. The 21 conflict-recovery scenarios cover light DOM and open/closed shadow trees, including removal and disassociation of external controls after the imperative tool releases the name. Regressions also cover zero schema traversals for 8000 unrelated insertions beside 32 tools, one schema per field update, external controls and labels, fieldsets, and cross-document adoption in both directions.
Keep registration identity, acknowledgement and abort state on imperative callbacks. Declarative forms no longer allocate registration IDs or carry unused callback fields. Preserve identity checks for stale acknowledgements and abort algorithms.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19392 passed, 16 skipped), including callback-to-form replacement before acknowledgement.
Move serialized input out when execution starts, retain registration stacks for enable replay, and construct protocol snapshots only for subscribed sessions. Move the final event to its session instead of cloning it again.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19391 passed, 16 skipped).
Vendor 71 imperative and declarative WebMCP fixtures from Chromium revision
2d184faab9fb11e1070fb1eeafebf291f6e85923 with source metadata and license
attribution. Register their expected results in the WPT compatibility suite.
Serve root WebMCP fixture assets and resolve the additional alternate domain
used by the cross-origin cases. Cover discovery, schemas, execution, permissions,
events, cancellation, navigation, and native form lifecycle.
Validation on this commit tree: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast.
Summary [ 101.682s] 19391 tests run: 19391 passed, 16 skipped
Native input probes: temporal mismatch, fractional stepping, sub-millisecond
steps, and number controls preserve the main branch behavior.
Full CDP smoke: 52/52 passed.
Expose secure Document.modelContext APIs with document-owned registrations,
callback realm and input validation, task-based result delivery, and independent
caller cancellation and target completion. Preserve cancellation reasons and
emit lifecycle events only for live owners.
Register native declarative forms in light and shadow trees through indexed
mutation candidates. Track schema changes to valid forms even before a
registration succeeds, including controls associated through a form attribute.
Use changed containers only for ancestor and form-owner checks; inspect added
and removed subtrees for discovery. Retire registrations at actual removal and
owner transitions while preserving submit handling and captured pending responses. Apply validated
fill intents to current options and checkable values in control event order.
Compute tools delegation from committed security origins, ancestor header
allowlists, container declarations, redirects, and combined sandbox policies.
Carry invocation identity, original origin, and resolved target through form
navigation; accept same-origin JSON-LD results and reject cross-origin commits.
Connect typed renderer observations to CDP discovery, invocation, cancellation,
and Runtime result projection. Include renderer and protocol regression coverage
for document lifetime, reentrancy, permissions, dynamic controls, and cancellation.
Validation on this commit tree: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast.
Summary [ 100.619s] 19320 tests run: 19320 passed, 16 skipped
Introduce moli-webmcp for native form schema synthesis, complete input validation,
numeric conversion, and JSON-LD results. Preserve requested selection values in
fill intents so the renderer can apply them to current controls after author
input events.
Add native tool activity states, selector support, control helpers, and
a namespace-aware form index that includes open and closed shadow trees.
Pin the Stylo revision providing the activity pseudo-classes.
Validation on this commit tree: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast.
Summary [ 98.804s] 19248 tests run: 19248 passed, 16 skipped