Traverse only evaluation dependencies reachable from each loading job. Resolve source imports once their root is compiled, and resume joined evaluation imports through linking instead of reading an uninstantiated namespace.
Cover skipped dependency fetches, cached source reuse, concurrent phases, failure isolation, and shared root fetch failures.
Reuse each version's main and imported script sources across repeated imports, worker restarts, and profile restoration. Keep full request URLs as map keys and freeze new imports after the install event settles.
Preserve decoded sources, muted errors, redirect checks, and installed main-script policies. Recover legacy metadata only when fetched bytes and final URLs still match. Cover install timing, redirect aliases, fragments, failed evaluation, retries, and offline restarts.
Implement redirect.py, update-worker.py and import-scripts-version.py with
upstream response metadata and shared per-resource update counters. Select
only references that resolve to these supported handlers.
Validate against 41 requests to the original upstream handlers, 627 Python
tests and 7 WPT files with unchanged browser binaries.
Carry owned worker policies and the importer location into per-request
redirect checks, including cached redirect responses. Queue an event for
each violated policy while preserving the original request URL and
synchronous NetworkError behavior.
Verify server contact counts, current-policy checks on cached redirects,
multiple enforced/report-only policies, and asynchronous report fields.
Use script-src-elem with script-src/default-src fallbacks for imported
classic scripts. Queue Worker CSP violations after the current task while
preserving the importer's sanitized source location and synchronous
NetworkError behavior.
Cover late listeners, microtask ordering, directive precedence, imported
callsites, and report-only behavior in dedicated and shared workers.
Apply the worker eval CSP gate to setTimeout and setInterval string
handlers, return zero when blocked, and preserve report-only execution
and Trusted Types policy rules.
Convert handler and delay arguments before policy checks. Propagate
conversion exceptions without scheduling a timer or invoking a default
Trusted Types policy. Cover function callbacks, report samples, and
TrustedScript/default-policy behavior.
Carry header, meta, and report-only policies into blob/data dedicated,
shared, and nested workers while retaining their self origin and report
rules. Keep blob URLs linked to their creating environment until worker
startup, then clone the policies for the worker lifetime.
Preserve nested HTTP worker response policies and cover local worker
requests, reporting metadata, and object URL metadata lifetimes.
Capture script locations for synchronous Window and Worker fetch violations.
Leave locations absent for asynchronous redirects and report the original
request URL, retaining the initiating document's report authority.
Omit unknown source-file values from legacy reports and cover location-based
deduplication, redirect privacy, and report ownership.
Give WindowProperties and HTML constructor proxy handlers a null prototype
so inherited page properties cannot intercept named element lookup.
Cover inherited trap functions/getters and numeric prototype shadowing in
both main and child windows.
Keep failed ordered modules at their insertion position and allow ready async
failures to report without waiting for later graph fetches. Preserve error
readiness across scheduler checks and register graph-start failure fanout in
its original order.
Validate mixed script ordering, pending fetches, and shared failure dispatch.
All workspace fmt, Clippy, and nextest checks pass (18,429 tests; 13 skipped).
Browser comparison passes 96 probes and 21 WPT files (56 subtests).
Check each prepared script's node Document before executing or reporting a
source failure, while settling its original ordering and load-delay ownership.
Apply the check to main-document classic/module and child-document script work.
Keep terminal events for scripts adopted during execution, and allow existing
top-level-await evaluations to continue. Cover removal, adoption, moving back,
source failures, child lifecycle completion, and adoption after evaluation starts.
Model the shared script load/error Python handler with JavaScript responses,
its 200/404 status selection, and first-query-value semantics. Recognize
only references that resolve to this supported endpoint during discovery.
Cover HTTP responses and exact resource discovery for classic and module
script tests.
Execute ready async module scripts without waiting for earlier pending
modules. Keep ordered modules in sequence and leave parser-retained
terminals under parser ownership.
Cover successful and failed graphs, readiness before watching, and mixed
async/in-order delivery in the shared document scheduler.
Bound functions wrapping foreign proxies can have a creation context that differs from the underlying target realm. Expose V8 GetBoundFunction and follow both internal target chains when resolving a callable realm, including revoked-Proxy errors without executing property traps.
Cover mixed chains, prototype mutation, revoked proxies, all eight Wasm constructors, and DOMParser prototype fallback with unchanged document ownership and getter counts.
Validation: cargo fmt --all; strict workspace/all-targets/all-features Clippy; full nextest (18,417 passed, 13 skipped); CLI build; 17/17 selected WPT passed. The Wasm NewTarget realm WPT improves from 112/120 to 120/120 subtests.
Reuse the child V8 intrinsic instance prototypes behind the public WebAssembly constructors so native exceptions, async compilation results and imported modules retain constructor and instanceof identity. Keep the existing Function and NewTarget realm adapter.
Add native CompileError, LinkError and RuntimeError regressions, realm isolation and descriptor checks, and an HTTP module error identity assertion.
Validation: cargo fmt --all; strict workspace/all-targets/all-features Clippy; cargo nextest run --no-fail-fast (18,416 passed, 13 skipped); CLI build; API and WPT baseline comparisons.
Carry the parser-root module kind into fetching and compilation so child
Wasm responses retain their binary bytes. Keep resolved evaluation inputs
with the compiled records and use exact context/module lookup for Wasm
and its dependencies, including evaluation resumed after async work.
Cover real child HTTP loading, invalid bytes, context isolation, identity
hash collisions and record disposal. Full fmt, strict workspace Clippy and
18,415 nextest tests pass. Runtime scenarios improve from 28/40 to 40/40;
iframe execute-start and wasm-import-wasm-export WPT cases now pass.
Split enforcing and report-only CSP fields into independent policies at
literal commas, preserving field order and each policy's reporting data.
Trim CSP ASCII whitespace and discard policies with no parsed directives.
Cover policy intersection, duplicate directives, quoted commas, encoded
path commas, empty list members and report-only violation attribution.
Use declarative receiver checks and promise rejection adapters for container
registration and lookup methods. Convert options before invoking the Trusted
Types default policy and preserve the original conversion exceptions.
Correct getRegistration's optional-argument length and cover conversion
order, native receiver identity, and cross-realm Promise rejection.
Normalize text control selection endpoints for native deletion and movement,
including programmatic selections inside a surrogate pair. Preserve no-op
caret movements at text boundaries.
Keep selection APIs in UTF-16 code units and cover execCommand, keyboard
editing, and Shift selection for input and textarea.
Restore the _self and input button passing entries lost during replay and
classify the history back noop case as harness-stalled, matching fresh Moli
results. Keep one classification per case across all 12,936 entries.
Compared eight affected and related pages with the rebased Moli binary and
Chromium. execution-timing/102 still reports a harness timeout in both.
Serve the link-element stylesheet.py resource through the shared WPT stash.
Preserve consuming counter reads, per-ID state, cross-port sharing and HEAD
request behavior so link load-event tests observe real request counts.
Validate the fixture with 170 Python tests and the six upstream multiple-load
subtests in Moli and Chromium, then record the previously unlisted passing case.
Keep the installed owner source and JavaScript sheet while a valid link
attribute change starts a successor load. Preserve existing CSSOM edits and
prevent URL-cache hydration from replacing the current sheet prematurely.
Replacement responses detach the old sheet at installation; integrity rejection
retains it. Cover successful and failed loads, source bindings, and removal
before a queued successor response settles.
Expand {{domains[]}} to the configured primary hostname in fixture content
and sidecar headers. This fixes credentialed CORS fixtures whose allow-origin
header previously retained the literal placeholder.
Cover cross-subdomain requests and default and non-default HTTP ports.
Move the full SRI fixture to passed-cases after both engines pass all 48
subtests; the four-case integrity selection passes 68/68 in both engines.
Validate raw stylesheet response bytes and response eligibility through the
shared SRI verifier. Preserve integrity rejection in fetch terminals so failed
loads dispatch error and release their load delay without installing a sheet
or discovering imports.
Require links with integrity metadata to use the compatible fetch cache instead
of hydrating an unverified parsed source by URL. Add regressions for hashing,
CORS, service-worker filters, local data URLs, redirects, and cached loads.
Handle exact-host sources with :* in the CSP matcher instead of sending them
to URL parsing. Preserve scheme, host, path, and redirect restrictions while
rejecting invalid literal host sources.
Add coverage across resource kinds and source restrictions. Record the image
and script wildcard-port WPT files as passing, and record the two SRI files
with remaining partial-integrity failures as failing.
Validation: cargo fmt --all; workspace clippy with all targets/features and
-D warnings; full nextest (18,367 passed, 13 skipped); 69 focused CSP tests.
23 WPT cases improved from 79/94 to 86/94 subtests without new failures.
All 18 HTTP port probes match Chromium, including blocked-request counts.
Use the image element's document policy and violation recipient across realm
boundaries. Check CSP before reusing shared decoded images, and resolve meta
policy reporting groups against the owner's Reporting-Endpoints.
Cover cross-realm callers, response/meta policy isolation, report-only, bypass,
warm cache reuse, and reporting group isolation. Promote two passing WPT files.
Validation: cargo fmt --all; workspace clippy with all targets/features and
-D warnings; full nextest (18,364 passed, 13 skipped); 9 focused CSP tests.
20 WPT cases improved from 38/68 to 61/68 subtests. Two VT subtests now fail
like Chromium and remain recorded as failures; no WPT expectations changed.
Use the shared element navigation path for GET form popup submissions so the
new document retains its creator URL, policy container, and rel semantics.
Resolve child-window creators from the form's owner document, and remove the
obsolete popup path that carried only the opener flag. Apply Referrer Policy
and sanitize the source URL, honoring anchor/area policy overrides.
Exercise all seven rel combinations for form, button, and input submissions
from both top-level and HTTP-loaded iframe documents, plus cross-origin
referrer policy and fragment stripping. Record the three newly
passing form popup WPT cases.
Check the DOM, document style generations, viewport state, media environment,
and visual resources before reusing layout for synchronous geometry or input.
Keep snapshot reads available and reuse the tree while its inputs are unchanged.
Cover repeated trusted clicks on newly inserted buttons and CSSOM-only changes.
Update geometry, innerText, grid, and screencast tests for synchronous refresh,
and record nine newly passing CloseWatcher WPT cases.
Use a generated document root as the viewport input fallback, retaining the
child document and coordinate transform when an iframe has no hittable box.
Keep mouse input suppressed for roots without a box while allowing inspectors
and wheel events to target the owning Document.
Chain wheel input through embedding frames only when the child cannot consume
it, and respect overscroll containment. Cover empty, excluded and removed roots,
nested and transformed frames, viewport bounds, and wheel scroll boundaries.
Create the associated UserActivation object when its Window is initialized,
using the intrinsic interface prototype. Keep the activation state alive when
script retains a Navigator after iframe removal or Window replacement, and
release native anchors on GC or isolate teardown.
Expose the WebIDL constructor and readonly prototype accessors, preserving
native receiver checks. Refresh popup Navigators when their Window changes
so retained activation state cannot follow the replacement Window.
execCommand("copy") previously returned the user-activation flag without
firing an event or updating the clipboard. Dispatch trusted beforecopy and
copy events, honor cancellation, and copy the receiver document's selection.
Keep text-control selections per document across focus changes and reject
nested editing commands per native document. Share Window activation state
with navigator.userActivation so copying remains available after the
activating call and expires without clearing sticky activation. Read fresh
layout for DOM selection text, preserve preformatted whitespace, and use
the browser profile's clipboard line endings.
Add nine regression tests and correct the BiDi activation regression test.
Validate 38 copy-command cases, 38 existing native shortcut cases, and nine
activation-state cases against Chromium. The copy-event WPT and all 32
selection line-break subtests now pass, with no regressions in 65 WPT cases.
Dispatch trusted clipboard events for native copy, cut, and paste shortcuts,
then apply text-control edits through cancelable, typed InputEvents. Resolve
focus and selection after event listeners and preserve UTF-16 selections,
readonly and password behavior, maxlength, and single-line normalization.
Keep paste data read-only and retire clipboard DataTransfer objects after
dispatch. Use intrinsic event constructors even when page scripts replace
the globals.
Add seven regression tests for editing, cancellation, focus changes, and
clipboard data lifetime. Validate 38 native CDP scenarios against Chromium
and 63 WPT cases; textEditCommands.html now passes with no regressions in
the remaining cases.
Forward permission descriptors and states through the native automation
connection using the selected frame's origin pair and case browser context.
Verify iframe owner identity, reject stale or unavailable frames, and remove
the previous storage-access no-op.
Reset permission overrides during case cleanup and still dispose targets
when reset fails. Accept close races only after confirming the target is gone.
Validation: 613 Python tests; 63 WPT pages with no regressions (Moli 227/238,
Chromium 236/238); real permission, iframe and default-context cleanup probes.
Implement MouseEvent.getModifierState for mouse-derived events and share EventModifierInit parsing with KeyboardEvent. Read a private modifier snapshot with native receiver checks, preserve independent AltGraph and lock states, and reset the snapshot during legacy initialization.
Validation: cargo fmt --all; workspace/all-targets/all-features Clippy with warnings denied; 18,303 nextest tests pass, including 6 new regressions. The 47-page WPT comparison improves Moli from 141/158 to 147/158 with no regressions; Chromium remains 158/158.