Commit Graph
1298 Commits
Author SHA1 Message Date
ldm0 14c262ab2b fix(fetch): accept close-delimited HTTPS responses
Enable the curl TLS compatibility path for complete HTTP responses whose peer closes without TLS close_notify. Pin the corresponding curl bindings revision and add local TLS fixtures for close-delimited bodies, complete framed responses and truncated body rejection. The fixture tolerates a socket already closed by the client.

Validation: all branch checks passed. Summary [ 144.422s] 18928 tests run: 18928 passed (9 slow, 2 flaky), 16 skipped
2026-09-29 09:25:26 +08:00
ldm0 3c7557ee2d feat(xpath): expose compiled expressions with context document evaluation
Expose XPathExpression and implement Document/XPathEvaluator.createExpression with a retained native XPath AST. Compilation resolves namespaces once; repeated evaluation reads the current context document, including detached and cross-realm documents.

Share context-document evaluation with Document.evaluate and invalidate detached-document iterators after native mutations. Regression coverage checks receiver/argument ordering, namespace resolution, document mutations, repeated evaluation, garbage collection, and isolate teardown.

Validation: fmt, strict workspace clippy, full nextest. Summary [ 104.560s] 18907 tests run: 18907 passed (9 slow), 16 skipped
2026-09-29 07:31:28 +08:00
ldm0 a553acc7e4 feat(window): expose legacy navigator alias and External objects
Expose clientInformation as a replaceable alias of the associated Navigator, plus a per-Window External object with the legacy no-op methods. Retained getters use native associations after public properties are shadowed.

Regression coverage checks top-level windows, iframe realms, lightweight popups, detachment, object identity, property descriptors, native receiver brands, and replaceable properties.

Validation: fmt, strict workspace clippy, full nextest. Summary [ 105.145s] 18906 tests run: 18906 passed (9 slow), 16 skipped
2026-09-29 07:27:06 +08:00
ldm0 826c8e3957 feat(events): implement animation transition and blob payloads
Implement AnimationEvent, TransitionEvent, and BlobEvent constructors and their read-only payload attributes using native Event state and shared Web IDL receiver validation. Preserve dictionary conversion order, DOMString UTF-16 code units, finite-double validation, and the required native Blob member.

Regression coverage checks descriptors, payload values, dispatch, subclassing, cross-realm constructors/getters, invalid receivers, and conversion exceptions.

Validation: fmt, strict workspace clippy, full nextest. Summary [ 144.022s] 18905 tests run: 18905 passed (9 slow, 4 flaky), 16 skipped
2026-09-29 07:26:29 +08:00
ldm0 0c33cce924 feat(cssom): expose native starting-style grouping rules
Expose CSSStartingStyleRule as a native CSSGroupingRule and preserve its child rules through insertion, deletion, and subtree detachment. Grouping accessors and methods use the existing native receiver checks.

Regression coverage checks grouping-rule identity, retained detached descendants, invalid receivers, and constructor lookup.

Validation: fmt, strict workspace clippy, full nextest. Summary [ 103.953s] 18906 tests run: 18906 passed (9 slow), 16 skipped
2026-09-29 07:25:56 +08:00
ldm0 f06370a4b7 feat(cssom): expose native font palette value rules
Expose CSSFontPaletteValuesRule with native parsing and read-only name, fontFamily, basePalette, and overrideColors descriptors. Attached rules read Stylo state; removed rules retain their descriptors through the existing native snapshot parser.

Regression coverage checks valid/invalid insertion, serialization, rule removal, native receiver brands, cross-realm access, and intrinsic constructor lookup.

Validation: fmt, strict workspace clippy, full nextest. Summary [ 104.120s] 18906 tests run: 18906 passed (9 slow), 16 skipped
2026-09-29 07:25:05 +08:00
ldm0 646c4a0690 fix(cssom): validate font feature rule and map receivers
Enable the shared native-brand receiver checks on CSSFontFeatureValuesRule attributes and CSSFontFeatureValuesMap operations. Invalid receivers now throw the callee realm TypeError before argument conversion.

Regression coverage includes genuine cross-realm objects, forged and author/revoked Proxy receivers, conversion ordering, retained rules/maps after removal, and native objects with changed JavaScript prototypes.

Validation: fmt, strict workspace clippy, full nextest. Summary [ 107.439s] 18906 tests run: 18906 passed (9 slow), 16 skipped
2026-09-29 07:23:34 +08:00
ldm0 3e2b9d09a4 ci: remove explicit Nextest job timeout 2026-09-29 06:08:43 +08:00
lanyue-llk 0da1cdc82d test(worker): bound slow XHR fixture shutdown 2026-09-29 06:08:43 +08:00
lanyue-llk 0bc7e0ba6d fix(ci): bound Nextest job duration 2026-09-29 06:08:43 +08:00
lanyue-llk fab8b791ae fix(ci): preserve closed PR cancellation command in YAML 2026-09-29 06:08:43 +08:00
lanyue-llk 08ab072a3b fix(reliability): harden diagnostics and test infrastructure 2026-09-29 06:08:43 +08:00
ldm0 c577f54e32 fix(html): reflect null body colors as empty strings 2026-09-29 04:53:15 +08:00
ldm0 82e4533ae1 fix(wpt): honor common redirect CORS opt-in
Require enable-cors and a nonempty Origin before exposing CORS response headers from common/redirect.py. Preserve the first status and Location values, handle extension methods, and respond without waiting for unused uploads or adding a Content-Length header.

Validation: 580 Python tests passed with 32 workers; 1296 HTTP responses matched official wptserve for status, body, and 15 response fields. New regression tests fail on the unmodified main baseline.

Source-commit: 99b528aece
2026-09-29 03:16:12 +08:00
ldm0 4424bc245f fix(fetch): reuse MIME extraction for body Blob results 2026-09-29 03:15:11 +08:00
ldm0 b406682586 refactor(fetch): centralize referrer policy parsing 2026-09-29 03:11:09 +08:00
ldm0 6e82924b02 fix(file-api): use the shared illegal FileList constructor 2026-09-29 03:09:34 +08:00
ldm0 91a4480b8a fix(protocol): retain navigation ownership during response body reads
Keep request identity and cancellation in Fetch while read tasks exclusively own response data. Match completions to the registered read instead of reinserting transfers or replying to navigations from I/O completion.

Retire superseded reads immediately, drain reads on Fetch disable, and preserve typed read errors. Cover delayed successes, failures, request reuse, cancellation, and debugger-paused supersession.
2026-09-29 02:50:43 +08:00
ldm0 b406d462a5 test(network): activate blocked URL policy in parser script fixture
Enable Network before setting blocked URLs so the parser script is intercepted instead of depending on an external DNS or request failure. Wait through the scheduler and assert the exact script request fails with ERR_BLOCKED_BY_CLIENT while subsequent parsing continues.

An earlier full-suite run exposed the timeout. Validation after the fix: 20 exact-test stress iterations and three iterations of the 20-test blocked_urls module, all passing with flaky results treated as failures; cargo fmt --all; full workspace all-target all-feature Clippy with -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped).
2026-09-29 02:36:54 +08:00
ldm0 cccf567b5b perf(css): defer font projections until collections are exposed
Carry owner refresh intent through CSS synchronization and prepare font projections only after finding an existing FontFaceSet in its creation realm. Native CSS updates continue normally and held collections update without rereading document.fonts.

A test-only counter verifies 64 unobserved stylesheet mutations prepare no font projections, first observation prepares current state once, and later mutations and removals update held collections.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped on the final change set).
2026-09-29 02:36:54 +08:00
ldm0 3289d5b4c3 fix(scheduler): let replacement navigation pass load-blocked work
Centralize navigation dependency decisions for readiness probing and snapshot draining. Replacement actions can reach the owner that cancels the pending request even when earlier observations wait for that load, while exact owner authorization remains mandatory.

Keep retirement admission policy beside publication ownership. Extend coverage for stale owners, cancellation, reused frontend ids, duplicate terminals, and late results without reviving retired notifications or remote objects. The new queue regression fails before the scheduler fix.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped on the final change set).
2026-09-29 02:36:54 +08:00
ldm0 7b42fa6440 perf(layout): share source lookup within geometry batches
Build an operation-local source lookup for batches of rectangle queries and use it in the renderer Range path. Keep tiny batches on direct lookup and retain renderer-specific metric and viewport handling.

Compare batch results for missing sources, display contents, inline continuations, and text ranges. A 516-query fixture reduces box visits from 33024 to 64 without retaining an index.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped on the final change set).
2026-09-29 02:36:54 +08:00
ldm0 bc25227a5c perf(events): reuse realm-local field getters
Cache getters on the existing Event intrinsic and select field projection callbacks once. Preserve own descriptors, optional fields, private backing, and per-realm function identity while moving generic projection policy out of Navigation.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast (18833 passed, 16 skipped on the final change set).
2026-09-29 02:36:54 +08:00
ldm0 120d03cfbf fix(fonts): construct CSS font faces through realm intrinsics 2026-09-29 02:36:54 +08:00
ldm0 255238328f fix(protocol): retire superseded intercepted navigations
Only the current navigation can suspend renderer output; older jobs retain cleanup ownership without blocking the active document.

Retire target-owned request, auth and response interceptions on supersession, cancel streaming transports and reject stale body-read completion. Cover paused debuggers, overlapping navigations, target isolation and once-only terminal replies.
2026-09-28 20:11:15 +08:00
ldm0 94ac141e7c refactor(protocol): simplify renderer navigation state 2026-09-28 20:11:15 +08:00
ldm0 efe54b5fa7 fix(navigation): preserve typed cancellation causes 2026-09-28 20:11:15 +08:00
ldm0 f0a82869f0 refactor(protocol): claim navigation work before reserving pages 2026-09-28 20:11:15 +08:00
ldm0 c4d0cac89a refactor(renderer): own document replacement debugger lifecycle
Move old-document debugger termination into renderer preparation scopes instead of tracking protocol navigation IDs in DevTools. Reject superseded response jobs using exact navigation tokens and cancellation authority, and retire their renderer-channel suspension independently.

Cover response interception and supersession while paused, repeated pauses, and prepare commit/cancellation/drop cleanup. Verified cargo fmt --all, workspace all-targets all-features clippy with warnings denied, 18444 nextest tests, and 20 stress iterations of 127 focused tests.
2026-09-28 20:11:15 +08:00
ldm0 79ea1406fa fix(devtools): unblock navigation while the debugger is paused
Track provisional loads by navigation ID on the existing renderer target and explicitly finish debugger policy on commit or cancellation. Return the pause-loop exit reason and terminate paused old-document execution through V8 Inspector.

Defer intercepted-response document creation until continuation, removing the eager prepared-document paths. Preserve committed documents for aborted navigations and cover repeated pauses, multiple sessions, interception and supersession.

Validated cargo fmt --all, strict workspace clippy, and cargo nextest run --no-fail-fast: 18,429 passed, 13 skipped. New regressions also passed 20 stress iterations and three confirmed debugger-paused ippure navigation probes.
2026-09-28 20:11:15 +08:00
ldm0 cb56b3b334 Split navigation tests by API area 2026-09-28 18:40:05 +08:00
ldm0 d299588b68 Split WPT cross tests by responsibility 2026-09-28 18:40:05 +08:00
ldm0 381c1c6a50 Split style invalidator tests by concern 2026-09-28 18:40:05 +08:00
ldm0 c9b5f8b12e Extract service worker global APIs 2026-09-28 18:40:05 +08:00
ldm0 bec8ccf87d Split runtime fetch tests by scenario 2026-09-28 18:40:05 +08:00
ldm0 aca478df40 Split style value conversions by role 2026-09-28 18:40:05 +08:00
ldm0 71c1016e11 Organize native element bindings by feature 2026-09-28 18:40:05 +08:00
ldm0 b050a31e96 Split background staging tests by concern 2026-09-28 18:40:05 +08:00
ldm0 6708044876 Split subtree cache tests by concern 2026-09-28 18:40:05 +08:00
ldm0 4dd6d641d4 fix(workers): isolate source imports from evaluation graph traversal 2026-09-28 18:19:22 +08:00
ldm0 981f9b15dd fix(dom): share host-including ancestry checks 2026-09-28 17:43:20 +08:00
ldm0 3fce3908e6 fix(range): share direct and relative boundary updates 2026-09-28 17:39:45 +08:00
ldm0 156cc3ffab fix(mime): share document response MIME extraction 2026-09-28 17:34:07 +08:00
ldm0 bb6df04049 fix(streams): use intrinsic cancellation promise chaining 2026-09-28 17:33:38 +08:00
ldm0 d0c4d60203 refactor(dom): dispatch native NamedNodeMap mutations once 2026-09-28 17:32:35 +08:00
ldm0 80660fb6dc fix(images): reselect picture sources after tree removal 2026-09-28 12:55:42 +08:00
ldm0 d43eb5721d fix(geometry): align DOMMatrix operation descriptors with WebIDL 2026-09-28 12:47:58 +08:00
ldm0 2ac735781b fix(svg): expose unit and spread-method enumeration constants 2026-09-28 12:47:19 +08:00
ldm0 80193fd414 fix(svg): clear the owner document selection with deselectAll 2026-09-28 12:46:27 +08:00
ldm0 2dc8e22741 Split DOM protocol handling by command phase 2026-09-28 12:27:20 +08:00