Commit Graph
65 Commits
Author SHA1 Message Date
ldm0 c844e6ee35 feat(webaudio): implement PeriodicWave and native oscillator controls 2026-11-08 15:13:18 +08:00
ldm0 867b182e45 feat(webaudio): implement IIRFilterNode and analytic frequency responses 2026-11-08 15:13:18 +08:00
ldm0 6009d329c0 feat(webaudio): implement ConvolverNode impulse response controls 2026-11-08 15:13:18 +08:00
ldm0 95b2d4ad61 feat(webaudio): implement WaveShaperNode controls and backend guards 2026-11-08 15:13:18 +08:00
ldm0 cd96ffaab6 feat(webaudio): implement channel routing nodes and port controls 2026-11-08 15:13:18 +08:00
ldm0 83b53c4cd7 feat(webaudio): implement native DelayNode and StereoPannerNode 2026-11-08 15:13:17 +08:00
ldm0 9966e8b11e feat(webaudio): expose native scheduled audio sources 2026-11-08 15:13:17 +08:00
ldm0 cdc4423cf3 fix(renderer): unblock Feishin media player initialization 2026-11-07 03:32:34 +08:00
ldm0 ccd4ba8b83 feat(webtransport): implement native error values and cloning
Implement native WebTransportError values with generated dictionary, enum and clamped integer conversion. Keep lossless UTF-16 messages, branded readonly source/code accessors, DOMException inheritance, subclass and relevant-realm behavior. Reuse the shared structured-clone wire payload and intrinsic factory while preserving the geometry codecs on main. Retain the full secure Window/Worker, native Proxy, constructor poisoning and cross-realm cloning regressions. The shared WebIDL Clamp prerequisite is already merged; this frontend PR is based directly on main.
2026-10-30 20:29:04 +08:00
ldm0 9dcb5191c6 feat(midi): retain native message and connection event payloads
Implement MIDIMessageEvent and MIDIConnectionEvent with readonly retained Uint8Array/MIDIPort identity, shared dictionary conversion and native interface receiver validation. The shared Uint8Array policy rejects unsupported buffer shapes before event construction; MIDIPort conversion permits genuine foreign/native proxy identities and rejects author proxies. Tests cover optional members, access order, exception identity, detached buffers, live byte writes and cross-realm payload getters. MIDI device discovery and delivery remain separate.
2026-10-30 04:14:12 +08:00
ldm0 5fe37bb935 feat(indexeddb): support native records and bulk query options 2026-10-28 19:46:52 +08:00
ldm0 311ca10405 feat(webrtc): implement native encoded frame value semantics 2026-10-25 05:42:41 +08:00
ldm0 cfe83bf566 refactor(events): inherit canonical EventTarget operations across interfaces 2026-10-23 20:55:15 +08:00
ldm0 28630d85ed fix(events): derive base and UI subclass initialization
Convert Event, UIEvent, FocusEvent, CompositionEvent and CustomEvent inputs
before initializing state. Preserve getter exceptions and WebIDL long and
interface conversion; retain the legacy which input on KeyboardEvent only.

Validate the shared regression fixture against Chromium 145, then pass fmt,
workspace/all-targets/all-features Clippy and 20,530 nextest tests (18 skipped).
2026-10-23 12:50:27 +08:00
lanyue-llk 1a40265083 fix(permissions): give PermissionStatus inherited EventTarget behavior 2026-10-16 12:03:06 +08:00
ldm0 9199bdbf22 feat(webrtc): expose non-constructible transport and RTP interfaces 2026-10-16 04:04:44 +08:00
ldm0 8399358265 feat(css): expose CSSAnimation and CSSTransition interface objects 2026-10-16 04:02:45 +08:00
ldm0 cb79d4d371 feat(media): expose MediaSource handle and buffer interface shells 2026-10-14 23:48:01 +08:00
ldm0 3dece8ce4c feat(performance): expose the remaining timing interface objects 2026-10-14 23:45:35 +08:00
ldm0 9a93e52517 fix(webrtc): snapshot and validate peer connection configuration 2026-10-14 19:17:54 +08:00
ldm0 992b9f1104 feat(window): expose native BarProp objects and popup visibility 2026-10-13 14:55:08 +08:00
ldm0 41e665dc53 feat(payment): implement native payment update event values 2026-10-13 14:46:05 +08:00
ldm0 6e78b7cd8b feat(media): bind native PictureInPicture event payloads 2026-10-12 22:41:13 +08:00
ldm0 9c45bdc81c feat(speech): construct native synthesis events with validated payloads 2026-10-11 19:53:16 +08:00
ldm0 e422739933 feat(reporting): expose the native ReportBody interface object 2026-10-11 09:14:44 +08:00
ldm0 744e050af8 feat(locks): expose secure Lock and LockManager interfaces 2026-10-11 09:00:08 +08:00
ldm0 c57765060f feat(audio): expose AudioListener and AudioParamMap interface shells 2026-10-11 08:14:32 +08:00
ldm0 5fc03c58f4 feat(canvas): expose ImageBitmapRenderingContext interface 2026-10-11 07:12:47 +08:00
ldm0 23c6bb5754 feat(media): expose secure encrypted-media owner interfaces 2026-10-11 06:48:41 +08:00
ldm0 631d4704ca feat(credentials): expose the secure CredentialsContainer interface 2026-10-11 06:38:17 +08:00
ldm0 6f2a5b1505 feat(webtransport): expose secure owned stream interface objects 2026-10-10 01:06:14 +08:00
ldm0 86dbfcafea fix(geometry): return branded DOMRectList objects
Return DOMRectList from Element and Range geometry queries, including empty results. Provide the prototype, item lookup, indexed property descriptors, and rejection of structured cloning. Preserve pending layout exceptions while constructing fallback results.

Source: 6d603dfc03
2026-10-09 21:09:41 +08:00
ldm0 cda25f9339 fix(webauthn): add native credential members and capability queries 2026-10-09 21:07:47 +08:00
ldm0 19f388b4f1 feat(webcodecs): expose secure video encoder and decoder interface shells 2026-10-09 19:38:54 +08:00
ldm0 859b140619 feat(gamepad): expose native interfaces and event payloads
Expose Gamepad, GamepadButton and GamepadHapticActuator native interface shells, with shared GamepadEvent construction and a branded gamepad payload retained by identity. Polling continues to report no connected devices; actuator operations reject because there is no device backend.

Regressions cover exposure in Window and child realms, worker absence, descriptors, dictionary conversion order, native and registered-proxy brands, rejection of forged receivers, event dispatch and Promise/error realms.
2026-10-09 19:38:10 +08:00
ldm0 622fbed53b feat(webaudio): unify native AudioNode interfaces
Expose AudioNode as the shared native EventTarget parent of the existing audio node interfaces. Move context, port/channel properties and connect/disconnect to its branded prototype, and keep node state in private slots. Validate graph arguments before checking connection state and define native edge-array entries without invoking author setters.

Regressions cover inherited descriptors, genuine and forged receivers, cross-realm nodes, conversion order, channel options and worker absence. The existing audio graph implementations continue to provide node creation and rendering.
2026-10-09 19:36:56 +08:00
ldm0 c5d665cad8 feat(webrtc): construct ICE error events with native fields 2026-10-09 19:33:55 +08:00
ldm0 ae1aeb37f4 feat(webrtc): implement native RTCError and RTCErrorEvent 2026-10-09 19:32:03 +08:00
ldm0 111afae3bb feat(svg): expose native value and element interfaces
Completes native SVG value and element interface exposure in one independently mergeable PR against main, refreshing the former SVG constructor PR. Animated scalar values, angles, preserve-aspect-ratio values and live point/string/number/length/transform lists provide the shared native DOM foundation for the added elements.

Adds the remaining component-transfer, flood, image, merge, merge-node and tile filter interfaces; SVGSwitchElement and SVGMPathElement; and the animation, animate, set, animate-motion and animate-transform interfaces. Native factories, inheritance, SVGTests lists, attribute reflection, receiver validation and animation event handlers use native objects and the existing DOM backend.

Tests cover main/iframe realms, live and windowless documents, native identity, value/list mutation, units, Trusted Types, animation target resolution, handlers and timing argument validation. All internal SVG dependencies are included here, with no external PR merge order.

Filter raster rendering and SMIL scheduling remain unimplemented. Timing controls reject NotSupportedError, getStartTime reports no interval, and getCurrentTime remains zero. The separate SVG path parser changes and animated-string UTF-16 storage migration are excluded. The retained length synchronization is included; a separate ignored regression records the lone-surrogate limitation in the current DOM attribute storage.

SVG event-handler properties reuse main's existing shared event backend. Tests verify replacement, clearing, canonical event types, cancellation and realm/receiver identity; complete handler/listener registration-order semantics remain part of the separate event-handler backend migration.
2026-10-09 14:54:14 +08:00
ldm0 c345a594f4 feat(webmcp): implement document tools and CDP integration
Expose secure Document.modelContext APIs with document-owned registrations,
callback realm and input validation, task-based result delivery, and independent
caller cancellation and target completion. Preserve cancellation reasons and
emit lifecycle events only for live owners.

Register native declarative forms in light and shadow trees through indexed
mutation candidates. Track schema changes to valid forms even before a
registration succeeds, including controls associated through a form attribute.
Use changed containers only for ancestor and form-owner checks; inspect added
and removed subtrees for discovery. Retire registrations at actual removal and
owner transitions while preserving submit handling and captured pending responses. Apply validated
fill intents to current options and checkable values in control event order.

Compute tools delegation from committed security origins, ancestor header
allowlists, container declarations, redirects, and combined sandbox policies.
Carry invocation identity, original origin, and resolved target through form
navigation; accept same-origin JSON-LD results and reject cross-origin commits.

Connect typed renderer observations to CDP discovery, invocation, cancellation,
and Runtime result projection. Include renderer and protocol regression coverage
for document lifetime, reentrancy, permissions, dynamic controls, and cancellation.

Validation on this commit tree: cargo fmt --all;
cargo clippy --workspace --all-targets --all-features -- -D warnings;
cargo nextest run --no-fail-fast.
Summary [ 100.619s] 19320 tests run: 19320 passed, 16 skipped
2026-10-05 15:25:06 +08:00
ldm0 4b4fd2e7f3 feat(media): expose the native MediaRecorder interface shell 2026-10-05 05:26:00 +08:00
ldm0 d2e819fa90 feat(webcodecs): expose the native EncodedVideoChunk interface shell 2026-10-05 02:33:03 +08:00
ldm0 3638aa0d0b feat(media): expose native stream, session and playback interfaces 2026-10-03 04:21:43 +08:00
ldm0 4b71c1628a feat(svg): expose native switch and mpath interface objects 2026-10-03 04:04:27 +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 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