Commit Graph
2954 Commits
Author SHA1 Message Date
ldm0 823a7e2d24 fix(v8): partition generated-code caches by referrer metadata
Pinned V8 15.2 can reuse Function and indirect-eval compilation entries
from a script with a different nonce or base URL. This rejects valid
dynamic imports once module CSP admission checks the inherited metadata.

Append a precomputed referrer-specific trailing comment after the existing
CSP and Trusted Types checks. Keep untracked cache keys separate, preserve
UTF-16 and Function source text, and retain creator metadata when generated
functions outlive their compiling script.

Cover dynamic Function variants, direct and indirect eval, cross-realm
reuse, retained functions, lexical scope and source preservation.
2026-11-06 21:13:35 +08:00
ldm0 eda3762c1b fix(css): share parser import graphs with stylesheet owners 2026-11-06 20:26:18 +08:00
ldm0 668fd80b64 test(xhr): cover bodyless upload completion and reentry 2026-11-06 13:59:02 +08:00
ldm0 374ed832f7 fix(events): select Window onerror arguments and cancellation by native kind 2026-11-06 13:19:52 +08:00
ldm0 3e04b24a15 fix(renderer): derive streaming restore admission from scheduler readiness 2026-11-06 12:55:41 +08:00
Mert Kaya 1da94d696a fix(window): honor final duplicate feature values 2026-11-06 11:58:48 +08:00
ldm0 7ae0cdc3b1 fix(navigation): retain live pages when replacement observers cancel
A newer navigation can cancel a replacement response while its Document is
already installed and still completing its requested lifecycle stage.
Detach that observer and continue on the existing Page, preserving its
navigation reply policy and original close owner.

Cover cancellation after the native Document is installed but before
protocol adoption, followed by beforeunload for the successor navigation.
2026-11-06 11:53:14 +08:00
ldm0 d6152e6243 fix(timers): defer idle callbacks while ordinary timers are ready
Check ordinary ready timers before admitting an unexpired idle callback. An earlier idle transport deadline must not overtake later ready work in the same heap, including queued popup javascript navigation.

Keep expired idle callbacks runnable. Cover the real owner loop with an HTTP completion witness and six function, source, child-window, expired, cancelled, and future timer scenarios.
2026-11-06 11:52:33 +08:00
ldm0 20b724ba0a fix(forms): track image form owners 2026-11-06 11:45:42 +08:00
ldm0 8f4e824b3a fix(forms): reset parser-associated form owners 2026-11-06 11:45:42 +08:00
ldm0 b73dccb46d refactor(events): reuse native simple-event construction for detached targets 2026-11-06 11:31:55 +08:00
ldm0 f468ccbcca fix(dom): initialize Document location accessors in their realm 2026-11-06 11:31:07 +08:00
ldm0 64ea17ee12 fix(dom): return null for inactive Document locations 2026-11-06 11:30:51 +08:00
ldm0 9bd3f6f0a3 refactor(events): reuse legacy UI state initialization in initMouseEvent 2026-11-06 10:49:12 +08:00
ldm0 db08044834 fix(service-worker): reject new requests from closed windows
Window.close marks a browsing context closed before its queued document
cleanup. Do not admit ServiceWorker requests during that gap, where
cleanup can retire their resolvers before a surviving caller sees them.

Cover lightweight popups and renderer-owned auxiliary Pages, including
reentrant URL conversion. Preserve requests made during beforeunload,
document owner retirement, and stale completion authorization.
2026-11-06 03:17:03 +08:00
ldm0 d655fffcf5 chore(release): update version to 1.1.22 2026-11-06 02:56:04 +08:00
ldm0 5c4cbad355 fix(wpt): preserve authored timer delays for long tests 2026-11-06 02:26:17 +08:00
ldm0 e5a0f40e85 refactor(fetch): separate request admission from mode validation 2026-11-06 02:23:36 +08:00
ldm0 19a78b14ca refactor(workers): collect module CSP violations in one context 2026-11-06 02:23:36 +08:00
ldm0 a3d76e11a1 fix(modules): unify CSP admission and honor preload integrity 2026-11-06 02:23:36 +08:00
ldm0 7db552dec0 refactor(modules): drop unused fetch source bookkeeping 2026-11-06 02:23:36 +08:00
ldm0 f23e69f5f4 test(protocol): await the activated Document before checking preload removal
Wait for the load lifecycle event matching the session, frame and navigation loader rather than assuming a Page.navigate response means the DOM is ready. Keep binding and removed-script assertions after that boundary.
2026-11-06 02:11:13 +08:00
ldm0 06fb3a7afb fix(renderer): retain the Performance clock across initial Window reuse
Carry the retained Window's clock anchors into the new Document without inheriting lifecycle slots or rematerializing cached Performance objects. Add Chromium-backed timing and identity regressions with an intentionally delayed navigation response.
2026-11-06 02:11:13 +08:00
ldm0 3210c006d6 fix(renderer): unify inline handler targets and invalidation
Invalidate handler state at the shared attribute mutation boundary, including Attr and namespace-aware APIs. Route main-document body and frameset aliases through the same Window target used for registration and lookup, release retired callbacks, and retain adopted wrapper fallback behavior.
2026-11-06 02:11:13 +08:00
ldm0 1db47aa907 fix(modules): report child modulepreload policy capture failures 2026-11-06 00:36:55 +08:00
ldm0 742f80a396 refactor(csp): keep module redirect checks in request context 2026-11-06 00:36:55 +08:00
ldm0 453d87a611 fix(modules): reject child fetches without CSP context 2026-11-06 00:36:55 +08:00
ldm0 6c1d13bba7 fix(csp): keep module redirect targets private 2026-11-06 00:36:55 +08:00
ldm0 f4850f3cd7 fix(modules): check CSP before each redirect request 2026-11-06 00:36:55 +08:00
ldm0 58f6e9643a fix(modules): enforce destination-specific CSP for synthetic modules 2026-11-06 00:36:55 +08:00
ldm0 38eb09723e fix(renderer): preserve parser exclusivity for named details 2026-11-06 00:05:30 +08:00
ldm0 0b75b9e98d perf(renderer): defer realms for native lifecycle and inline events 2026-11-06 00:05:30 +08:00
ldm0 cc23c0fbd7 refactor(renderer): model pending and ready main worlds explicitly 2026-11-06 00:05:30 +08:00
ldm0 736dbc385b refactor(renderer): keep main-world initialization demand driven 2026-11-06 00:05:30 +08:00
ldm0 94776a3186 test(cdp): validate lazy-world command response envelopes 2026-11-06 00:05:30 +08:00
ldm0 3935b42f06 fix(renderer): guard bindings in deferred main worlds 2026-11-06 00:05:30 +08:00
ldm0 8910dea1ee test(cdp): cover lazy main-world activation against Chrome
Exercise native Page and DOM access before Runtime, first evaluation and realm publication, isolated worlds, preloads, delayed scripts, native IO commands and navigation/close. Match lifecycle completion by frame and loader identity.
2026-11-06 00:05:30 +08:00
ldm0 504b3fa816 perf(renderer): initialize document main worlds on first script demand
Keep the native Document and per-Page isolate live while deferring the main Window Context, V8 Inspector and wrapper templates. Activate through existing script and automation boundaries, preserve native lifecycle and history state, and provide an explicit eager initialization flag.
2026-11-06 00:05:30 +08:00
ldm0 566e5374d9 fix(dom): preserve ordinary xmlns attribute namespace identity 2026-11-05 21:32:25 +08:00
ldm0 3ff0f29da5 fix(dom): validate active XML namespace prefix bindings 2026-11-05 21:32:25 +08:00
ldm0 cded3b358e fix(dom): align XML namespace serialization
Source-commit: 9f1b248292
2026-11-05 21:32:25 +08:00
ldm0 ac803a7639 fix(input): honor Document execution contexts before default actions 2026-11-05 21:15:30 +08:00
ldm0 93aa36f142 test(cdp): preserve implicit members of named isolated worlds 2026-11-05 21:15:29 +08:00
ldm0 abd4f68de3 fix(renderer): reuse named inspector worlds across frame Realms 2026-11-05 21:15:29 +08:00
ldm0 0c4994e7e5 fix(renderer): preserve isolated Window worlds across frame lifetimes 2026-11-05 21:15:29 +08:00
ldm0 8d22a6a8a1 fix(service-worker): serialize service lane completion batches
Prevent concurrent Page owner drains from delivering later chunks or
completion before a response head finishes. Claim one bounded batch at a
time without holding the queue mutex through callbacks, then rearm arrivals
after releasing the claim.

Add controlled concurrency and reentrant-drain regression tests.
2026-11-05 21:10:50 +08:00
ldm0 fe3d98e933 test(protocol): await activated target document load before inspection
Wait for the exact frame and loader's renderer-owned load fact before
reading the new DOM. Page.navigate only acknowledges acceptance, so an
immediate evaluation can still observe the prior document under contention.
2026-11-05 21:10:50 +08:00
ldm0 0d04a8b32b fix(fetch): retire auth and response IDs on native completion
Remove each Fetch ID together with its matching response or authentication pause. Keep other request and Page owners untouched, and reject late actions after retirement.

Cover owner isolation and repeated iframe pause/remove cycles without consuming stale IDs between cancellations.
2026-11-05 16:45:50 +08:00
ldm0 a0d8d43668 feat(fetch): intercept child document responses and auth challenges
Route child navigation responses through the existing response and authentication pauses before redirects or document commit. Preserve upload bytes and Service Worker clients across retries, and resume valid navigations when handlers disable or detach.

Release paused state on native cancellation and keep transport futures off deeply nested V8 callback stacks. Cover response actions, redirects, authentication, multi-session cleanup and Service Worker interception with real HTTP regressions.
2026-11-05 16:45:50 +08:00
ldm0 bb7698c759 refactor(dom): remove detached Node private-state mirroring 2026-11-05 14:54:42 +08:00