Commit Graph
1161 Commits
Author SHA1 Message Date
ldm0 28cc5dd3b5 fix(script): keep parser async completions runnable after EOF 2026-09-26 10:46:00 +08:00
ldm0 c3c279cf36 chore(release): update version to 1.1.11 2026-09-26 07:11:39 +08:00
ldm0 123e1c36e8 chore(wpt): update wpt cases 2026-09-26 07:11:39 +08:00
ldm0 511c8a2341 refactor(parser): centralize element construction lifecycles
Separate parser provenance from active child construction. Share one
construction session across HTML/XML parsers and runtime adapters, with
completion ownership, normal-EOF checks, and cancellation that does not
publish incomplete styles.

Use ordinary creation for generated document shells and remove obsolete
per-element completion forwarding. Cover parser ownership, adoption,
duplicate completion, missing callbacks, and cancellation in tests.
2026-09-26 07:01:12 +08:00
ldm0 83e0afd1a1 fix(css): avoid reparsing incomplete inline styles
Process parser-created style sources after their closing tag or EOF, and
prepare later source changes through the stylesheet owner lifecycle.
Keep synchronization and CSSOM reads on prepared sources so CSSOM edits
survive reads and document initialization.

Complete styles in inert XML parsing and build the XML viewer through
ordinary DOM creation. Cover streaming, EOF, child documents, fragments,
and XML stylesheet behavior in regression tests.
2026-09-26 07:01:12 +08:00
ldm0 50284d3a58 fix(navigation): preserve child navigations started by javascript URLs 2026-09-26 06:42:45 +08:00
ldm0 ff782ab21a fix(navigation): admit renderer navigation that supersedes a pending load 2026-09-26 06:00:11 +08:00
ldm0 45fef05729 fix(window): classify embedded SVG as document content 2026-09-26 05:59:09 +08:00
ldm0 6360878537 fix(blob): remove stale realm finalizer from world wrapper 2026-09-26 05:52:44 +08:00
ldm0 614aa1fb33 refactor(realm): remove duplicate interface prototype caches 2026-09-26 05:52:44 +08:00
ldm0 0faec82780 refactor(blob): use receiver realm intrinsic for slice results 2026-09-26 05:52:44 +08:00
ldm0 5d740ca1bd fix(blob): preserve receiver realm for slice results 2026-09-26 05:52:44 +08:00
ldm0 f846fcb7f2 fix(domparser): use the Document interface for parsed XML 2026-09-26 02:38:19 +08:00
ldm0 40d476dbaf fix(service-worker): reject invalid registration query URLs 2026-09-26 02:36:39 +08:00
ldm0 281111efdd fix(events): build parse diagnostics without author stack access 2026-09-26 02:35:20 +08:00
ldm0 7fff5b9aee fix(events): read submitter from private event state 2026-09-26 01:38:23 +08:00
ldm0 929f73b148 fix(events): keep shared event state in private V8 backing 2026-09-26 01:38:23 +08:00
ldm0 8b57e489e6 fix(history): finish world isolation and native entry cleanup
Wrap nested platform members and synthetic events in each listener world,
sharing dispatch state and weak wrapper identities.

Keep internal history operations on native entries, restore complete native
snapshots before wrapping, and remove JSON and per-wrapper state remnants.
2026-09-26 01:38:23 +08:00
ldm0 248fc5c0f5 fix(history): isolate Navigation wrappers and share event dispatch 2026-09-26 01:38:23 +08:00
ldm0 74e924c864 refactor(history): extract native Window history storage 2026-09-26 01:38:23 +08:00
ldm0 75e27973c3 refactor(history): share Window history across isolated worlds 2026-09-26 01:38:23 +08:00
ldm0 4617ec9a62 fix(scroll): remove automatic DOM mutation anchoring 2026-09-25 23:14:13 +08:00
ldm0 276d0e8b5a fix(history): preserve scroll position across History API updates 2026-09-25 23:14:13 +08:00
ldm0 cc9d78f76f fix(dom): share native attribute node lookup 2026-09-25 20:58:59 +08:00
ldm0 9d62c0b6b9 fix(workers): reject dynamic imports in service workers 2026-09-25 20:56:42 +08:00
ldm0 37ffa1ec56 refactor(fetch): centralize header list projections 2026-09-25 20:55:05 +08:00
ldm0 f88dc644e4 fix(xhr): deliver early worker failures through the completion queue 2026-09-25 20:53:41 +08:00
ldm0 5ff4cd831e fix(modules): preserve import.meta.resolve conversion exceptions 2026-09-25 20:51:46 +08:00
ldm0 e126573a88 fix(worker): make global origin replaceable 2026-09-25 20:51:18 +08:00
ldm0 b4f875566d fix(indexeddb): validate factory receivers and preserve promise realms 2026-09-25 20:50:02 +08:00
ldm0 faa73d360e fix(fetch): keep data URL responses basic across request modes
Select basic response tainting for data URLs even for no-cors requests from opaque origins. Cover Window and Worker requests across modes, redirect settings, methods, input forms, MIME values, and readable byte payloads.

Source: edabb273b4
2026-09-25 10:43:26 +08:00
ldm0 488b8713d2 fix(csp): preserve parsed source token boundaries
Extracted from 2449c5d6adce351bfbad550909ebd418b4019e21.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets
--all-features -- -D warnings. Runtime tests were not run for this split.
2026-09-25 10:41:48 +08:00
ldm0 8cd6fa4807 fix(script): require supplied JavaScript MIME for strict loads
Require an explicit parsable JavaScript Content-Type for strict script loading while preserving permissive classic document script rules. Cover missing, empty and invalid headers, JavaScript MIME essences, and imported HTTP/Blob scripts.
2026-09-25 10:40:57 +08:00
ldm0 92c678bf54 fix(fetch): request identity encoding for HTTP ranges
Select Accept-Encoding: identity when a Range header is present, while preserving explicit embedder encoding preferences. Exercise buffered, HTML and raw transports, malformed and empty ranges, redirects, repeated requests and response decompression.
2026-09-25 10:33:04 +08:00
ldm0 2bc7159532 fix(modules): settle failed dynamic import fetches
Mark a failed fetch in the shared module map before notifying graph clients, so concurrent imports and later cached imports all reject. Route document and child owners through the same completion path.

Cover concurrent imports of the same root and a shared dependency, fresh TypeError rejections, and subsequent imports after a cached fetch failure.
2026-09-25 10:30:52 +08:00
ldm0 8e890e25b7 fix(scroll): expose live offsets and sync the owning Window 2026-09-25 10:19:22 +08:00
ldm0 4b24590ce6 fix(layout): isolate PDF print layout from interactive snapshots 2026-09-25 10:19:22 +08:00
ldm0 179241dedd refactor(layout): publish layout only through explicit visual output
Make geometry, input and observers read the latest published layout without
cold-start or invalidation-triggered layout. Only screenshot, screencast and
PDF output can build and publish a new tree.

Connect WebDriver page screenshots to the shared output pipeline, explain how
to initialize layout in errors, and migrate fixtures to explicit publication.
Remove obsolete read policies and embedded-frame completeness metadata.
2026-09-25 10:19:22 +08:00
ldm0 272c611c92 fix(layout): publish observer and nested frame state with snapshots 2026-09-25 10:19:22 +08:00
ldm0 da6df4375f fix(layout): reuse compatible snapshots after interactions 2026-09-25 10:19:22 +08:00
ldm0 2812a1de67 fix(input): consume existing snapshots for coordinate mouse input
Reject mouse input without a rendered snapshot and retain published geometry
across interaction invalidation. Mouse hit testing and native default actions
consume that snapshot without triggering layout; explicit geometry queries
and WebDriver click preparation may still demand layout.

Share geometry query dispatch and result conversion across demand and snapshot
reads, and cover cold input errors, DOM and hover changes, native defaults,
document replacement, and explicit snapshot refreshes.
2026-09-25 10:19:22 +08:00
ldm0 d4ebf649e9 refactor(webidl): share HTML constructor NewTarget helpers 2026-09-25 06:14:06 +08:00
ldm0 55823f837e fix(workers): share listener invocation preparation 2026-09-25 06:12:37 +08:00
ldm0 45160aba05 fix(dom): use native attributes for detached hyperlink clicks 2026-09-25 06:10:45 +08:00
ldm0 6b0168e504 fix(workers): share URL-like module specifier resolution 2026-09-25 06:09:14 +08:00
ldm0 b84fa09397 fix(history): queue isolated-world traversals against the owning Window 2026-09-25 04:56:08 +08:00
ldm0 b7bcb21292 fix(history): reuse navigation traversals only for the same key
A later traverseTo() with a different destination could overwrite an
older Navigation task ahead of an intervening History task, leaving the
page at the wrong final entry.

Match both the Window target and destination key in both reuse paths.
Keep the original traversal destination, info, and promises when sharing
a pending request.

Add a local mixed-API regression checking event order, promise targets,
and the final URL. Cover repeated requests after a History request and
preservation of the first request's info and single traversal task.

Fixes: 51c9e1df6 (fix(history): preserve each queued History API traversal)
2026-09-25 03:03:07 +08:00
ldm0 53a95cd543 fix(history): preserve popup history across document restoration
Persist internal entry IDs and keys even when public Navigation getters
hide them. Regenerating these identities broke forward traversal after a
popup document was restored because its entries no longer matched shared
session history.

While a cross-document popup traversal is loading, discard further
requests through the outgoing History instead of rebasing them onto the
destination. Allow traversal again once the restored document loads.

Add local Blob fixtures for forward navigation from a restored load and
consecutive back requests from both the popup and its opener.

Fixes: 1418e3aa3 (refactor(history): centralize joint session history state)
2026-09-25 03:03:07 +08:00
ldm0 663a5501d7 fix(history): preserve each queued History API traversal
Coalescing consecutive History API requests discarded intermediate
same-document traversals and their events when joint traversal plans
entered the shared queue. Keep these requests in order and derive the next
index from the last queued step, while retaining Navigation API promise
reuse.

Apply top-level traversals to the page's default Window when an isolated
realm initiated the request. Add local back/forward coverage across same-
and cross-document entries, and verify every event and microtask turn in
the existing history tests and fixture.

Fixes: f8f46bf48 (fix(history): coordinate complete joint traversal plans)
2026-09-25 03:03:07 +08:00
ldm0 2201528e08 fix(service-worker): initialize ExtendableEvent dispatch state
Script-created ExtendableEvent and ExtendableMessageEvent objects were
rejected by EventTarget.dispatchEvent after dispatch began validating the
base Event state. Initialize that state through the shared Event helper.

Cover dispatch, cancellation, redispatch, event paths, and rejection of
reentrant dispatch and waitUntil on untrusted events with a local test.

Fixes: 04ac476e6 (fix(events): share AbortSignal EventTarget dispatch)
2026-09-25 03:03:07 +08:00