Commit Graph
15 Commits
Author SHA1 Message Date
ldm0 a587a5ecee perf(indexeddb): load Blob bodies on demand across consumers
Return immutable stored Blob/File sources without eagerly reading their bodies. Keep metadata, clone and slice lazy; route consumption through the owner, stream in chunks, and preserve handed-out data before destructive changes or retirement.

Adapt FileReader, Clipboard, WebSocket and OPFS together with the source representation. Share Fetch/XHR object-body extraction and propagate Blob and multipart read failures instead of string coercion. Preserve cancellation, ordering, backpressure, quota, permission/error semantics and realm cleanup across consumers.
2026-10-30 20:27:08 +08:00
ldm0 f6cf672d60 feat(indexeddb): bound Blob decode copies and backing lifetimes
Borrow external-object slots and build final shared Blob/File backings directly. Track decoder allocations across whole results, discard unpublished and internal backings without waiting for GC, and preserve resource failures through reads, inline writes, backfill and lazy cursors.
2026-10-30 03:31:32 +08:00
ldm0 cd45783b70 fix(indexeddb): preserve storage and termination failures in key extraction 2026-10-30 03:31:32 +08:00
ldm0 0fa33f781d fix(input): align drag operations and pointer suppression
Initialize enter/over effects from source operations and carry the accepted
operation into drop. Report success only for a handled drop or a completed
default action, and reject stale targets after DOM mutation.

Suppress the native pointer stream with cancel, capture release, out, and
ancestor leaves; restore pointer entry once after drag termination without
resetting the legacy mouse hover state.

Calibrate the shared drag regressions against Chrome 156 and pin the input
oracle per smoke group while preserving full strict-suite coverage.
2026-10-30 03:27:19 +08:00
ldm0 3bb459f524 feat(cdp): intercept native drags with complete input lifecycle 2026-10-30 03:27:19 +08:00
ldm0 76452ba10a fix(input): isolate DataTransfer event views from shared drag data 2026-10-29 02:24:43 +08:00
ldm0 6d495c1ade fix(file-api): stop Blob.slice at the first conversion error 2026-10-19 14:27:07 +08:00
ldm0 0873cc83d5 fix(file-api): avoid overflow when normalizing Blob slice offsets 2026-10-17 19:50:11 +08:00
ldm0 08983c68af feat(file-api): snapshot blob URL objects with creator access keys 2026-10-07 23:41:12 +08:00
ldm0 67a04fc1cc refactor(file-api): share owner object URL removal 2026-10-07 14:05:49 +08:00
ldm0 9fd3e07f47 fix(renderer): retain detached document state until realm collection
Retain native DOM, Blob, AbortSignal and intrinsic interface backing while
JavaScript still holds a retired realm. Retire active execution resources and
trace wrapper and traversal-filter ownership through V8 so the last reference
releases the native host without Rust-to-V8 root cycles.

Cover retained native values, realm finalizers and traversal callback lifetimes.

Validation: cargo fmt --all; cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo nextest run --no-fail-fast.
2026-10-06 01:01:03 +08:00
ldm0 fcdabf7385 fix(blob): generate UUIDs for object URL identifiers
Use collision-checked random UUIDs for object URL identifiers instead of a process-local counter. Reuse the existing UUID generation for Blob identity and cover URL format plus independent lifetime for multiple URLs referencing one Blob.
2026-09-18 04:45:50 +08:00
ldm0 b47fab8bcd fix(file-api): authorize blob URL revocation by storage key
Store the URL creator’s browser partition and storage key separately from its backing Blob, and check authorization atomically with URL removal. Use the Worker environment storage key and a shared opaque-origin nonce allocator for Windows and Workers.

Source: e090f2b070
2026-09-16 16:32:31 +08:00
ldm0 3830abc0ac fix(blob): ignore URL fragments during resource lookup 2026-09-14 05:56:17 +08:00
ldm0 27b5135cb6 Public preview 2026-08-11 00:10:12 +08:00