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.
Return null for out-of-range DOMRectList.item indices after WebIDL argument
conversion. Avoid looking up inherited numeric Array.prototype values or
invoking inherited getters on the private backing array.
Cover empty and nonempty Element/Range lists, boundary and negative indices,
inherited values and getters, and argument conversion side effects with a
Chromium-calibrated regression test.
Validation:
- cargo fmt --all
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo nextest run --no-fail-fast: 19,723 passed, 16 default skipped, no retries
- cargo build --release --locked -p moli
- Release item bounds probes match Chromium in main and isolated worlds
- Full release CDP smoke: 52/52 passed with --jobs 4, including Puppeteer
Expose Array.prototype.values as DOMRectList's default iterator so
Puppeteer position clicks can spread Element.getClientRects() results.
Cover empty and nonempty Element/Range lists, iteration identity,
iterator property descriptors, and generic array-like receivers.
Return DOMRectList from Element and Range geometry queries, including empty results. Provide the prototype, item lookup, indexed property descriptors, and rejection of structured cloning. Preserve pending layout exceptions while constructing fallback results.
Source: 6d603dfc03
Expose Gamepad, GamepadButton and GamepadHapticActuator native interface shells, with shared GamepadEvent construction and a branded gamepad payload retained by identity. Polling continues to report no connected devices; actuator operations reject because there is no device backend.
Regressions cover exposure in Window and child realms, worker absence, descriptors, dictionary conversion order, native and registered-proxy brands, rejection of forged receivers, event dispatch and Promise/error realms.
Expose AudioNode as the shared native EventTarget parent of the existing audio node interfaces. Move context, port/channel properties and connect/disconnect to its branded prototype, and keep node state in private slots. Validate graph arguments before checking connection state and define native edge-array entries without invoking author setters.
Regressions cover inherited descriptors, genuine and forged receivers, cross-realm nodes, conversion order, channel options and worker absence. The existing audio graph implementations continue to provide node creation and rendering.
Exposes the missing native Window event-handler accessors, including the 41 inventory names, and completes the matching DOM global-handler property list. Adds secure-context-only device motion/orientation handlers, using the trusted realm exposure decision rather than the author-visible isSecureContext property.
Tests cover main/iframe descriptors, native callback identity, cancellation, clearing, DOM selection handlers, secure/insecure exposure, borrowed accessors, and invalid receivers. The extraction uses current main's existing handler backend. The separate body/frameset forwarding, popup realm migration, vendor event-name normalization, listener/handler ordering overhaul, and document-open reset behavior are not claimed by this PR.
Create the execution owner before fallible bootstrap and move it intact through prebootstrap and registration. Queue abandoned owners for cleanup outside V8 callbacks and release retired WindowProxy helper surfaces. Cover failed bootstrap, promotion, deferred cleanup, and Context reclamation.
Create the internal error container with an own element directly. Setting index zero on an empty array could consult an author-defined inherited property and replace the original rejection value. Cover Response.clone().text() with a read-only inherited array index.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19,655 passed, 16 skipped); cargo build --release -p moli.
Store the JS identity array in a reserved tagged Context embedder-data slot, initialized with the registry. This preserves Context ownership and detached-realm collection while avoiding private-symbol lookup on each access.
A local release comparison found about 4.8% overhead for DOM creation with the private-field table. Direct Context access brought the same workload back within baseline variation.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19,654 passed, 16 skipped); cargo build --release -p moli.
Read original rejection values from the stream's existing JS state through the native body's weak stream reference. Remove the duplicate long-lived error handle and its navigation-time conversion, without adding another state object or weak handle.
Cover collection of unread errors while the native body table remains alive, foreign-realm error identity, and primitive errors on clones created before and after failure.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19,654 passed, 16 skipped).
Store constructors, prototypes and public interface objects in a Context-owned private array. Keep only publication metadata in Rust and remove the navigation-time handle conversion. Verify identity across detachment and collection while Rust metadata remains alive.
Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (19,651 passed, 16 skipped).
Add mutually exclusive --fail and --fail-with-body flags for the final
main document, returning exit 22 for completed HTTP errors. Keep selected
output by default; --fail suppresses it and cancels raw error downloads,
while --fail-with-body retains the selected output format.
Preserve known HTTP status and final URL when readiness or output fails.
With --fail, a known HTTP error takes priority; with --fail-with-body,
processing errors retain exit 1. Judge challenge redirects by their final
page and keep Fetch/XHR and subresource HTTP handling unchanged.
Cover CLI parsing and the HTTP failure contract with regression tests for
formats, raw downloads, redirects, readiness, evaluation, output I/O,
empty Markdown, and stalled response bodies.
Add MaterializeBelowStatus so document callers can return raw response
metadata and cancel the download from its headers. Apply the same policy
to network and service-worker responses while preserving the existing
Materialize and RequirePage behavior.
Completes native SVG value and element interface exposure in one independently mergeable PR against main, refreshing the former SVG constructor PR. Animated scalar values, angles, preserve-aspect-ratio values and live point/string/number/length/transform lists provide the shared native DOM foundation for the added elements.
Adds the remaining component-transfer, flood, image, merge, merge-node and tile filter interfaces; SVGSwitchElement and SVGMPathElement; and the animation, animate, set, animate-motion and animate-transform interfaces. Native factories, inheritance, SVGTests lists, attribute reflection, receiver validation and animation event handlers use native objects and the existing DOM backend.
Tests cover main/iframe realms, live and windowless documents, native identity, value/list mutation, units, Trusted Types, animation target resolution, handlers and timing argument validation. All internal SVG dependencies are included here, with no external PR merge order.
Filter raster rendering and SMIL scheduling remain unimplemented. Timing controls reject NotSupportedError, getStartTime reports no interval, and getCurrentTime remains zero. The separate SVG path parser changes and animated-string UTF-16 storage migration are excluded. The retained length synchronization is included; a separate ignored regression records the lone-surrogate limitation in the current DOM attribute storage.
SVG event-handler properties reuse main's existing shared event backend. Tests verify replacement, clearing, canonical event types, cancellation and realm/receiver identity; complete handler/listener registration-order semantics remain part of the separate event-handler backend migration.
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.
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.
Convert DOMPointInit members in lexical order, reading and converting w before x, y and z. Derive the optional getCharNumAtPosition dictionary argument, expose its length as zero, and validate its native SVGTextContentElement receiver before conversion. Regressions cover inherited/Proxy dictionaries, getter and numeric conversion exceptions, defaults, receiver checks, and the existing DOMPoint.fromPoint, DOMMatrix.transformPoint and SVG callers in main and child realms and windowless documents. The text receiver cases cover main's existing SVGTextElement and SVGTSpanElement interfaces.