Aggregate Fetch dataReceived byte counters after completion instead of
requiring both counters to be positive in the first event. Preserve event
ordering and reject invalid lengths or missing positive totals.
Accept either committed EOF or an explicit ERR_ABORTED cancellation after an
EventSource message handler closes its connection. Keep request correlation,
resource classification, event order, and exactly one terminal checked.
Report failed scenario details when a smoke worker exits without a top-level
traceback. Cover the observed Chromium traces and invalid alternatives with
unit regressions, and document the real Chromium/Moli calibration.
Validation: 64 Python harness tests; release build; all 52 smoke groups on
both pinned Chromium and Moli release; network and browser-semantics repeated
20 times per engine (40/40 worker runs each).
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 MIME and image bytes to determine decode eligibility instead of
requiring an HTTP 2xx status. Keep upstream request security checks and
origin cleanliness unchanged.
Cover valid raster and SVG bodies at error statuses and rejection of
empty or malformed image data through the shared parkable image path.
Resolve the validated native event target before reading speech payload
slots. Keep interface-valued utterance identity unchanged and reject
author-created, revoked, and forged proxy receivers without traps.
Retain the speech conversion matrix and native-proxy regression while
using the complete speech implementation already merged in main.
Pin the fork rebased onto upstream curl-rust 0.4.51, including the native
pre-request API and libcurl 8.23 with the upstream connect-only eviction fix.
Enable the upstream apple-sectrust feature explicitly in moli-curl.
Keep Moli proxy endpoints explicit while adapting transport comparisons to
libcurl's implicit HTTP port and hostname validation. Update form wire
request assertions to preserve the empty query already in navigation URLs.
Validated workspace formatting, warnings-as-errors Clippy, and all 20,342
nextest cases (18 skipped). The curl fork passed Linux/macOS/Windows CI.
Pin curl and curl-sys to the native callback API from curl-rust#1 and replace
the handwritten callback registration with Handler::prereq / Easy2::prereq.
Keep each collector's captured timing token and re-enable the callback after
reset; the dependency owns userdata lifetime and C panic handling.
Record request start with CURLOPT_PREREQFUNCTION using the handler already
owned by Easy2. Reinstall the callback on each attempt and read the
collector's writer token across moves, reset and progress reselection.
Enable verbose only for requested header observations or proxy CONNECT
diagnostics. Cover keepalive GET/HEAD/POST reuse, callback ownership,
HTTP/2 multiplexing and gated proxy tunnels.
Keep zero-length completion local to header processing and retain only
positive body-length targets in the HTML and raw streaming collectors.
Preserve HTML redirect eligibility before committing an empty response.
On the same x86_64 dev build, the field shrinks from 16 to 8 bytes,
HTML collectors from 2752 to 2744 bytes, and raw collectors from 2728
to 2720 bytes. The enclosing transfer handler also shrinks by 8 bytes.
Cover accepted empty responses, unknown lengths and followed empty redirects
without changing their completion/cancellation behavior.
Redirects and retries retain start/body senders in the reused easy handle.
Return those channels to the HTML job before publishing a final cache hit,
and use the retained easy when an attempt fails before reconfiguration.
Cover network-to-cache redirects with discarded interim/body observations,
and preserve the original error instead of reporting a closed start channel.
Latch the first body observation in the transfer handler and reset it whenever
the easy handle is reused. Record nonempty writes before declared completion,
while retaining progress-based detection for compressed empty payloads.
Avoid repeated timing locks without skipping cancellation checks.
Keep cancellation arbitration and timing in one Arc<ResponseProgressState>.
This removes one allocation per progress generation and one reference-count
update per clone, reducing the writer token from 16 to 8 bytes on x86_64.
Preserve transfer isolation and the existing atomic completion/cancel protocol.
Reuse the existing interim status predicate in buffered, HTML and raw
collectors so Switching Protocols starts the final response timeline.
Cover 101 alone and after 103 across all collectors, plus HTML header completion.
Record response end before publishing native success or failure, including
cancellation, header-only responses and declared identity body completion.
Keep cache availability separate from the end of the cached body reader.
Cover delayed consumers, chunked bodies, empty responses, truncated transfers,
cancellation, cache hits and encoded Content-Length comparison boundaries.
Observe delivered body bytes before publishing declared completion.
Select a fresh ResponseProgress for every HTML attempt and pass that exact
writer token to the collector, matching raw streaming. Redirects and retries
must not retain observations from a discarded hop.
Add a gated loopback 103 -> 302 with body -> 200 without body regression.
Require an actual target fragment for same-document Location navigation and keep history traversal comparisons separate. Reject saved cross-origin facade Locations when their frame identity has retired, preventing navigation of reinserted iframes.
Includes regression coverage for plain/fragmented URLs, event flags, history traversal, and current/retired facades.
Validated with cargo fmt, workspace Clippy (-D warnings), and full Nextest: 20,306 passed, 18 skipped; no retries.
Route cross-origin child Location writes through browsing-context navigation
commands to preserve push history and origin-filtered entries. Retain the
current main branch realm synchronization and receiver checks.
Cover foreign Location writes, named-target links/window.open, activation
type, and history filtering. Ported from 880e91a251.
Fixes: 67283068e3
Advertising PerformanceEventTiming without event and first-input observer
types makes supported-types-consistent-with-self.html fail. Include both
Window entry types in sorted order while preserving Worker exposure.
Cover parent and child Windows on secure and insecure origins and update
exact-list expectations.
Verify the introducing boundary: 3cf565afe0 passes the upstream case,
while its child 3dece8ce4c fails with the same assertion as the full run.
Fixes: 3dece8ce4c ("feat(performance): expose the remaining timing interface objects")
Validation: cargo fmt --all; cargo clippy --workspace --all-targets
--all-features -- -D warnings; cargo nextest run --no-fail-fast
(20,261 passed, 18 skipped).
The inherited listen backlog of five makes concurrent browser connections
wait for TCP retries before fixture handlers run. Match wptserve's backlog
of 2000 for every IPv4/IPv6 origin without changing test timeouts.
Add real socket tests that queue a complete 50-worker burst before the
accept loop starts. Both address families time out before this change and
connect successfully afterward.
With the same frozen release binary, Worker error stress changes from
86/100 passes to 150/150 after changing only the backlog. Script-order
and worker XHR timing cases each pass all 30 additional trials.
Validation: 81 Python tests across connection backlog, fixture resources,
fixture responses and runner orchestration; git diff --check.
Reserve at most four existing boxes on the first store and grow with actual cache demand. Avoid the full-tree candidate scan and cover sparse stores in both flattened and ordinary block trees.