Record and preserve cookie creation time across updates, browser imports and cache persistence. Apply modern Lax-by-default request inclusion, including the age-bounded unsafe top-level navigation allowance; keep explicit Lax and Strict semantics, raw cookie visibility and diagnostic exclusion reasons. Cover age boundaries, updates, imports, persistence and navigation contexts.
Erase async task body types at RuntimeHandle::spawn so SQLite owner loops
share Tokio scheduler code. Keep blocking SQL work and results concrete,
and retain the existing task admission, failure collection and shutdown.
This boxes each submitted async task once; normal SQL commands do not gain
an additional box. The original Linux x86_64 release profile, followed by
strip --strip-all, decreases from 111026760 to 110965320 bytes (60 KiB).
Validation: cargo fmt --all; full workspace Clippy with all targets/features
and -D warnings; Nextest 22154 passed, 20 skipped; CDP smoke 92/92 on both
Moli and actual Chrome 145.
Convert assignedNodes and assignedElements options with the shared WebIDL dictionary/argument derives. Preserve flatten semantics and propagate getter and conversion exceptions through the common binding path, with targeted slot regressions. Enable the existing generated HTMLSlotElement receiver check so invalid and Proxy receivers fail before dictionary getters and use the callee TypeError realm.
Discard failed Cookie batches without requeueing, following Chromium's commit
behavior. Preserve the live canonical jar and the normal 30-second/512-operation
schedule for new mutations, and report persistence errors without replaying the
old batch on flush/close.
Remove backoff state, error classification, and per-call failure admission.
Retain explicit-flush recovery only for localStorage, whose absolute area
metadata must stay paired with its failed entry deltas.
Cover idle failures, subsequent batch deadlines and operation thresholds,
non-replaying flush/close, Cookie jar versus SQL state, and actual SQLITE_FULL
recovery by explicit localStorage flush.
Share one localStorage area lease per existing LocalWindow owner instead of
private wrapper IDs and a separate finalizer registry. Release native areas on
Window retirement, context teardown, or partition replacement; document.open
and repeated installation of the same handles retain the live area.
Dirty batches continue to pin areas through commit. Cover popup and iframe
retirement while JS retains Storage wrappers, full page teardown without GC,
and partition rebinds without stale cache reuse.
Keep the latest Put or Delete for each key rather than eliding transient-row
deletes. Remove existed from Cookie and localStorage deltas and Cookie mutation
observers, then remove the shared uncertain-commit correction hook. Preserve
Cookie Touch composition and atomic, idempotent retry behavior.
Replace optimization-specific assertions with actual SQL replay tests covering
a published put followed by deletion and clear followed by a newer put.
Keep SQLite for persisted localStorage and memory for sessionStorage. Remove
the unused JSON backend, serialization types, constructors, reexports, and
dependencies. Explicit external data imports still target SQLite; older JSON
profile files remain untouched without automatic migration.
Remove the origin-wide Web Storage quota API and its unused SQLite key listing.
CDP and navigator quota queries already exclude Web Storage. Retain single-area
metadata reads and the indexed entry-count query needed for cold origin clears.
Use area entry counts to accept clear deltas directly. Keep empty logical maps
pinned until those deltas commit so later reads cannot reload stale SQL rows.
Order deletion and later puts through the existing writeback FIFO and retain
live areas across metadata queries and older commit acknowledgements.
Cover cold value corruption, zero-byte nonempty areas, repeated clear events,
subsequent puts, restart persistence, and an older queued commit racing clear.
Read persisted usage without materializing cold key/value maps, and overlay
pinned live area sizes for uncommitted updates, additions, and clears. Use a
bounded storage-key index range instead of applying substr to every row.
Verify cold maps remain uninitialized, dirty sizes replace persisted metadata,
and the actual SQLite query plan uses equality and bounded index searches.
Align StorageManager.estimate and CDP Storage.getUsageAndQuota with Chromium's
quota clients. Report IndexedDB, Cache Storage, and OPFS by backend, including
named and implicit-default bucket data, without touching local/sessionStorage.
Keep Web Storage's independent per-area quota unchanged.
Cover Web Storage exclusion, an unopened or closed SQLite localStorage backend,
default and named OPFS data, bucket attribution, and command-session isolation.
Count only writes accepted by the canonical store, aggregate rejection reasons,
and separately report the destination's final unexpired cookie count. This
makes rejected records, replacements, and quota eviction visible to CLI users.
Cover partial and complete rejection, duplicate identities, existing cookies,
and per-domain quota eviction against persisted SQLite contents.
Preserve SQLite error codes and retry atomic batches after transient resource,
locking, and I/O failures. Back off from one second to a capped sixty-second
interval without letting new mutations bypass the delay. Successful commits
restore localStorage admission; permanent errors still require explicit retry.
Verify bounded scheduling with virtual time and real SQLITE_FULL recovery
without a second flush, including restart persistence and new writes.