While a JavaScript dialog is open, the scheduler no longer waits for the
page load to finish. WebDriver Classic commands using the normal and eager
page load strategies now return, and the session stays usable.
Fixes#809
Resolve em and ex SVG lengths in disconnected documents using the initial computed font style. Keep live styled elements on their existing resolved-style path. Regressions cover detached HTML and XML documents, child realms, and inherited fonts. Extract the existing context resolver for reuse by the initial-font path; preserve live-element resolution unchanged. Factory-created lengths have no associated element, so their font basis remains initial when the factory is styled or removed.
Add native Fetch referrer selection and inheritance without changing request origin, cookie initiator or network partition. Apply the effective policy to the selected referrer when building outgoing headers, preserve explicit omission and about:client fallback, and copy policy to derived requests without copying integrity. Unit tests cover header selection, sanitization and request identity.
Validation on the original split base: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
Use a separate equivalent path for distance queries on rectangles and ellipses with one zero axis. Preserve their starting points and sweep while retaining empty rendered bounds. Core regression tests verify total length, endpoint and intermediate point queries, and distinguish fully empty geometry from a shape collapsed along one axis.
Add the native DOMString value representation that preserves unpaired UTF-16 code units and exposes a scalar projection for native consumers. Equality and hashing retain original units; parser scalar appends preserve allocation capacity. Unit coverage includes surrogate identity and append boundaries. This PR provides the native value API; migrating all DOM producers is separate work.
Add an explicit unrestricted_float converter to the shared WebIDL value and derive infrastructure. Preserve signed zero, NaN and infinities while rounding finite numbers to binary32; required arity, conversion side effects and original exceptions retain the existing contracts. Cross-realm tests compare Math.fround and check callee-realm TypeError.
A delayed addBinding adapter could repersist and reapply bindings after a
later Runtime.disable had cleared them. Commit persistent add/remove
mutations in the renderer turn and project their frozen state with the
NativeTerminal, alongside enable/disable. Adapter completion no longer
writes a stale binding snapshot back to either owner.
Unregister V8 bindings during disable as well as clearing restore metadata,
so re-enabling cannot reactivate a removed binding. Include the retained
binding output and metadata in transport memory accounting.
Cover delayed addBinding, unpolled and reversed binding completions, and
binding calls after re-enabling. Document and test the existing committed
SessionSink disable success policy after owner retirement, including
ordered delivery and no duplicate terminal on late adapter completion.
Append ready command records directly to the Page journal and publish them
at the common owner-turn settlement boundary. Replace continuation-owned
record batches with exact cursors for internal completion dependencies.
Publish loaded-page frontend Runtime.enable/disable, frozen Inspector output,
and session updates through NativeTerminal. Apply subscriptions and replay
at ordered ingress so delayed adapters cannot reverse newer enable/disable
state. Complete disable binding updates in the originating renderer turn.
Retain exact predecessors for internal/collector completion success and
projection errors, and charge replay/V8 state to the transport memory budget.
Cover unpolled and reversed completions, cancellation after publication,
owner retirement, unresolved Promise output and concurrent ready replies,
and navigation handoff with controlled regression tests.
Add native IndexedDB name values with exact UTF-16 identity, ordering and hashing. Unpaired surrogates remain distinct even when diagnostic strings look identical, and storage usage accounting retains UTF-8 sizes with WTF-8 accounting for lone surrogates. Unit coverage checks cloned identity, hash/equality consistency, code-unit ordering and usage boundaries. Migrating all database producers and persistence paths is separate work.
Convert inherited EventInit fields before ICE error event payload members. Update the video decoder getter trace to match lexical dictionary member ordering.
Derive dictionary member conversion in lexical order and add explicit #[webidl(inherit)] support that converts ancestor dictionaries before derived members. Migrate the existing native EventInit-based dictionaries together so sorting does not mix inherited and own members. Reject incompatible inheritance attributes and duplicate own member names. V8 integration tests cover aliases, nested and inherited dictionaries, Proxy/getter traces, early exceptions and coercion ordering. Native renderer regressions cover twelve event constructors in two realms, flag preservation, and ancestor getter exceptions preventing all derived reads.
Validate native object-store and index schema key paths using Unicode identifier rules, including dotted paths and sequences. Preserve syntax/duplicate/invalid-option precedence and reject invalid metadata before mutating the backend. Map native Syntax and InvalidAccess errors to their DOM names. Tests cover Unicode paths, invalid sequences and failed creations leaving metadata unchanged. Renderer argument/receiver migration is separate.
Validate fillRect receivers with shared brands before required numeric conversion. Rasterize transformed rectangles through the existing paint path, preserving the default path and compositing/alpha behavior; nonfinite or zero-area inputs and singular transforms draw nothing. Tests cover Window, child realm and Worker OffscreenCanvas, conversion order, negative sizes and transformed pixels.
Keep completed AbortSignal objects weakly referenced in native Window and Worker registries, and read Worker abort reasons from the signal's native private slot. Keep the synchronous dispatch snapshot alive through abort steps, reuse the controller's already initialized signal identity, and preserve live reasons and dependent signal behavior. GC regressions cover abandoned reference cycles and reasons still reachable from JavaScript.
Perform WebIDL string conversion before mutating live, detached, rule, and computed CSS declarations. Preserve thrown coercion values and run conversion before readonly errors; re-resolve native state after reentrant author code. Regressions cover named attributes, cssText, setProperty ordering, null and undefined, and exception identity. Resolve regression bindings from actual CSS object prototypes so legacy popup facades are exercised without requiring the separate popup-global constructor feature.
Deduplicate the ascending index entries before reversing unique cursor traversal. Previously prevunique chose the last primary key in each duplicate index-key group. Preserve ordinary reverse traversal and cover multiple duplicated index keys in native cursor tests. Update the existing JavaScript cursor and collection regressions to assert the corrected primary-key choice.
Validate XML numeric character references using the XML Char production rather than HTML recovery rules. Keep carriage returns and C1/noncharacter values which XML permits, and reject forbidden controls/surrogates. Parser regressions cover decimal and hexadecimal references and retain strict failures.
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
Includes the ablation-confirmed cleanup from 0e3ce99dcf.
Fail reflector lookup when the wrapper's creation context has no native host,
instead of resolving its local ID through the caller's bridge. Require a host
for the current context before reading the wrapper cache or creating wrappers.
Cover colliding reflector IDs from an unowned V8 context and wrapper
materialization without a host, while preserving genuine wrapper identity.
The existing opener/popup adoption regression also passes.
Compared Chromium ScriptState::ForRelevantRealm and ToScriptWrappable: native
identity remains attached to the object and missing context data does not
select the caller's identity store.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets
--all-features -- -D warnings; cargo nextest run --no-fail-fast.
Nextest: 19705 passed, 16 skipped, 32 threads, no retries.
Validation on this branch: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings.
Nextest and WPT reruns omitted at the user's request.
Includes the ablation-confirmed cleanup from c1fe3ea895.