Commit Graph
1447 Commits
Author SHA1 Message Date
ldm0 fd7397e558 perf(fonts): reuse buffers and incrementally register web fonts
Transfer owned font payloads into shared blobs, register new faces in the live collection, and preserve slot ordering for segmented font selection. Keep invalid-font rejection and replacement/removal isolation covered by regression tests, with an opt-in release benchmark.
2026-10-03 04:00:49 +08:00
ldm0 2f89025207 fix(indexeddb): finish upgrade opens after transaction completion
Retain the exact open request until normal transaction request draining and checkpoint deactivation complete. Publish open success or error in a separate task, handle aborted/closed provisional connections, and preserve FIFO among waiting open/delete requests.

Remove eager upgrade-completion and duplicate blocked-request dispatch paths. Update selected-task boundary regressions and add Chromium-calibrated CDP coverage for migration, microtasks, rollback, deletion order and SVG-gated application startup.
2026-10-03 03:45:28 +08:00
ldm0 a1293a54cb test(cdp): cover FontFace payload validation 2026-10-03 03:34:06 +08:00
ldm0 7911748ed6 fix(fonts): reject malformed FontFace payloads 2026-10-03 03:34:06 +08:00
ldm0 3fd1259f5f feat(media): expose the RemotePlayback interface object 2026-10-03 03:03:31 +08:00
ldm0 e1d9b7a918 feat(payment): expose the secure PaymentResponse interface object 2026-10-03 03:03:06 +08:00
ldm0 2f0d1d4848 feat(midi): expose secure non-constructible MIDI owner interfaces 2026-10-03 03:00:38 +08:00
ldm0 0b7081a51a feat(svg): expose native animation element interface objects 2026-10-03 03:00:13 +08:00
ldm0 90ffad4035 feat(svg): expose remaining filter element interfaces 2026-10-03 02:58:43 +08:00
ldm0 4ca389adb2 fix(geometry): align DOMRect factory descriptors and dictionary order 2026-10-03 01:46:03 +08:00
ldm0 ff4bc3aa04 fix(audio): convert offline sample rates with WebIDL float 2026-10-03 01:44:44 +08:00
ldm0 c491a11885 fix(dom): clear root handlers without invoking author setters 2026-10-03 01:43:53 +08:00
ldm0 96442e437b fix(events): preserve event constructor type code units 2026-10-03 01:43:00 +08:00
ldm0 c1893e0599 fix(fetch): use captured origins for Request referrers 2026-10-02 05:41:37 +08:00
ldm0 43c72601f3 refactor(fetch): separate request ownership from API base URLs
Keep frame ownership independent of mutable document bases, share the Request and XHR API base lookup, and validate referrers against the Window origin.

Cover live base changes in initial about:blank, srcdoc, and HTTP iframes from both parent and child realms.
2026-10-02 05:41:37 +08:00
ldm0 10eaff5801 fix(clone): deserialize Window clones in the receiver realm 2026-10-02 02:24:56 +08:00
ldm0 a05bb9287c fix(fonts): validate font set queries with Stylo 2026-10-02 02:23:18 +08:00
ldm0 bda82c8123 fix(forms): wrap textarea submission values 2026-10-02 02:22:02 +08:00
ldm0 dc5574676f fix(navigation): reload idle initial-empty iframe documents 2026-10-02 02:20:52 +08:00
ldm0 bac28518ff fix(html): reveal details for fragment navigation 2026-10-02 02:16:34 +08:00
ldm0 9a81b5695f fix(forms): honor range input constraints 2026-10-02 02:13:13 +08:00
ldm0 0a87c564fc fix(webidl): validate observer Element arguments with native brands
Use native Web API identity for ResizeObserver and IntersectionObserver targets and roots, accepting genuine cross-realm objects and registered native proxies while rejecting forged, inherited and author-Proxy values. Validate root membership during dictionary conversion, before later getters, and resolve native targets without reading public nodeType properties.

A 204-case regression matrix covers both observer interfaces and realms, native proxy acceptance, invalid targets, poisoned properties, option conversion order and original exception identity.

Expose the backing-object lookup from the existing native brand layer rather than unwrapping author Proxies in DOM callbacks. Extend its existing identity tests for cross-realm objects, forged objects, registered native Proxies, outer author Proxies and revocation.
2026-10-02 01:10:35 +08:00
ldm0 f776d539bb test(fetch): preserve explicitly empty author header values
Verify that explicitly empty request headers remain present while omitted Content-Type stays absent. Cover native HTTP transports and renderer Fetch/XHR requests, including bodyless, empty and non-empty uploads. No production transport behavior is changed.
2026-10-02 00:44:35 +08:00
ldm0 ff5361ae31 feat(webaudio): expose native audio event payloads
Expose AudioProcessingEvent and OfflineAudioCompletionEvent as native Event subclasses with readonly branded payloads and WebIDL dictionary conversion. OfflineAudioContext emits a trusted completion event in its own realm, including when public constructors are replaced.

The regression matrix covers the main Window and same-origin child Window, subclassing, UTF-16 event types, malformed buffers, conversion order, callee-realm TypeErrors, dispatch identity and completion flags. This branch uses the AudioBuffer and OfflineAudioContext already on main.
2026-10-02 00:43:14 +08:00
ldm0 c3b5a3e765 fix(fetch): resolve Request URLs against the live document base 2026-10-01 23:00:59 +08:00
ldm0 6aeffcf522 test(css): cover completed parser style contents and CSP checks 2026-10-01 22:49:41 +08:00
ldm0 86f5f3d6ff test(cdp): bind failed navigation lifecycle to its document commit 2026-10-01 22:48:27 +08:00
ldm0 e52e9fd5e6 fix(dom): return only SVG documents from getSVGDocument 2026-10-01 22:48:00 +08:00
ldm0 20254be685 fix(dom): expose getSVGDocument on frame owner interfaces 2026-10-01 22:48:00 +08:00
ldm0 a7b8f43d77 fix(events): initialize native lifecycle trust and transition flags 2026-10-01 22:47:05 +08:00
ldm0 f8edead3f6 fix(workers): prevent recursive local error reporting 2026-10-01 22:46:20 +08:00
ldm0 b6f43fa61c fix(indexeddb): preserve ImageData when cloning stored values 2026-10-01 22:39:46 +08:00
ldm0 4c264b2d92 fix(indexeddb): preserve factory conversion and request ownership
IDBFactory.cmp preserves exceptions from key getters and reports invalid keys as DataError instead of rewriting both cases to TypeError. The generated receiver check continues to run before key conversion.

Schedule open/delete operations in the factory receiver’s realm after completing argument conversions in the callee realm. Borrowing an iframe method previously created a correctly branded request but scheduled its upgrade in the wrong context, leaving it pending.

Expand the factory regression fixture to exercise key conversion and request completion after removing the genuine factory prototype, using main Window, child Window and worker factories. Correct the ported cmp(undefined, key) expectation to DataError.
2026-10-01 18:24:57 +08:00
ldm0 3b35e5fa0f fix(fetch): separate manual hop lookup from transport redirect limits
Keep redirect URL lookup available when the renderer follows HTTP hops itself. A transport request with follow_redirects=false must not reapply the automatic transport redirect limit to the renderer’s already-recorded URL chain; automatically followed requests retain their existing limit. CORS checks still run for every browser-managed hop.

The regression verifies manual lookup at the transport limit, rejection for automatic following at the same limit, and rejection when the manual hop lacks CORS permission.
2026-10-01 16:57:00 +08:00
ldm0 e6e9a3309c feat(webidl): add lossless DOMString conversion
Add an explicit UTF-16 DOMString converter for bindings that must preserve lone surrogates. Reuse the existing UTF-16 extraction helper and keep this change additive, without rerouting the existing DOMString converter.

Regressions cover code-unit preservation, scalar conversion, null-to-empty options, single string-hint coercion, exception identity and callee-realm TypeErrors. Existing DOMString and USVString behavior is also checked.
2026-10-01 16:54:03 +08:00
ldm0 e03f6a71c5 feat(webidl): support restricted float conversion
Add the WebIDL restricted float converter and f32 inference in generated argument and dictionary bindings. Round finite numbers to binary32, reject values that become nonfinite, and preserve exceptions from numeric conversion.

Regression coverage compares rounding with V8 Math.fround, including signed zero, subnormals and overflow, and checks implicit/explicit derived argument conversion, single coercion, exception identity and the callee TypeError realm. Extracted from the AudioBuffer commit without an audio runtime dependency.
2026-10-01 16:53:47 +08:00
ldm0 5c19ed1006 refactor(dom): resolve attribute references in the renderer handler 2026-10-01 16:51:46 +08:00
ldm0 eb2d679e44 refactor(automation): name semantic commands and renderer CDP calls 2026-10-01 16:51:46 +08:00
ldm0 f2cd0fd488 refactor(cdp): pass preload commands directly between phases 2026-10-01 16:51:46 +08:00
ldm0 28e40e5287 refactor(renderer): publish nested prefixes with their retention fences 2026-10-01 16:51:46 +08:00
ldm0 64033a0be9 refactor(renderer): retain the native terminal fence without its covered prefix 2026-10-01 16:51:46 +08:00
ldm0 4a5e28d119 refactor(test): share CDP completion with renderer events 2026-10-01 16:51:46 +08:00
ldm0 cb28d957e1 refactor(cdp): share CSS inventory notification payloads 2026-10-01 16:51:46 +08:00
ldm0 30b7d61eb4 refactor(cdp): project native terminals with other renderer records 2026-10-01 16:51:46 +08:00
ldm0 429847e98a refactor(renderer): use one document serialization command 2026-10-01 16:51:46 +08:00
ldm0 0b892ccb59 refactor(cdp): reuse Emulation admission and transient failures 2026-10-01 16:51:46 +08:00
ldm0 e36271e0d0 refactor(cdp): let preparation select supported native commands 2026-10-01 16:51:46 +08:00
ldm0 7cef1b4e51 refactor(cdp): remove single-variant DOM and AX work wrappers 2026-10-01 16:51:46 +08:00
ldm0 117dce412b refactor(cdp): share node lookups with explicit chain execution 2026-10-01 16:51:46 +08:00
ldm0 6e30806c72 refactor(cdp): register remote objects from the terminal payload 2026-10-01 16:51:46 +08:00