On Thu, Jan 2, 2025 at 9:57 AM Yoav Weiss (@Shopify) <yoavwe...@chromium.org> wrote:
> > > On Friday, December 20, 2024 at 6:34:04 PM UTC+1 Josh Karlin wrote: > > Contact emails > > yao...@chromium.org > > cam...@chromium.org > > jkar...@chromium.org > > rohitgu...@chromium.org > > ren...@google.com > > saraak...@google.com > > Explainer > > https://github.com/WICG/shared-storage/pull/199 > > > Are there any explainer sections you can point at that won't require > reading through PR diffs? > It's sort of riddled throughout the explainer <https://github.com/WICG/shared-storage> but usage within the worklet is documented here <https://github.com/WICG/shared-storage#:~:text=Private%20Aggregation%20reports.-,navigator.locks.request,-(resource%2C%20callback)> and using locks from outside the worklet is described here <https://github.com/WICG/shared-storage?tab=readme-ov-file#locking-for-modifier-methods> . > > > > Specification > > https://github.com/WICG/shared-storage/pull/209 > > https://github.com/WICG/shared-storage/pull/211 (anticipated) > > https://github.com/WICG/shared-storage/pull/213 (anticipated) > > > Are the "anticipated" parts part of this intent? Are you planning to land > those PRs before shipping? > Sorry, I should have removed the (anticipated) notes. Yes, they're part of the proposal and will land before shipping. Happy new year! Josh > > > > Summary > > Today, concurrent execution of shared storage worklets can lead to data > inconsistencies due to race conditions. To address this issue, we propose > integrating the Web Locks API into Shared Storage: > > 1. > > The navigator.locks.request() API is exposed to the shared storage > worklet, to be able to request a lock and handle callback after the lock is > granted. > 2. > > All shared storage modifier methods now accept an optional { withLock: > <lock name> } parameter. The modifier method will acquire the lock on the > designated resource before executing. > 3. > > A batchUpdate(methods, options) API is introduced in all applicable > contexts. It first acquires a lock on the designated resource and then > executes methods in order. > 4. > > The 'Shared-Storage-Write' response header is now treated as a single > batchUpdate(), and allows configuring a lock for the entire batch via: > "options; with_lock=<lock name>". > > > The shared storage locks' partition aligns with the shared storage data's > partition -- locks are organized by the shared storage origin, and are > independent from any locks used in Window or Worker context. > > Blink component > > Blink>Storage>SharedStorage > <https://bugs.chromium.org/p/chromium/issues/list?q=component%3ABlink%3EStorage%3ESharedStorage&can=2> > > TAG review > > FYI > <https://github.com/w3ctag/design-reviews/issues/747#issuecomment-2557353877> > > TAG review status > > TAG is unsatisfied <https://github.com/w3ctag/design-reviews/issues/747> > with the underlying API > > Risks > > Interoperability and Compatibility > > The changes are fully backward compatible. > > Gecko: No signal > > WebKit: No signal > > Web developers: Web locks were requested by developers for use with > private aggregation. > > > Other signals: > > WebView application risks > > Does this intent deprecate or change behavior of existing APIs, such that > it has potentially high risk for Android WebView-based applications? > > - > > None > > > Security / Privacy > > No concerns. Shared Storage web locks have their own partition which is > not readable in normal js contexts. The scope and visibility of Shared > Storage web locks aligns with the scope (i.e., per-origin) and visibility > (i.e., only the worklet is allowed to read/wait on a lock) of shared > storage data. > > Debuggability > > Shared Storage worklets can be inspected within DevTools: Debug Shared > Storage worklets with DevTools > <https://developers.google.com/privacy-sandbox/private-advertising/shared-storage/debugging#debug_shared_storage_worklets_with_devtools> > > We are working on adding the `withLock` parameter and a `batchUpdate()` > event to the Application -> Shared Storage panel in DevTools. > > Will this feature be supported on all six Blink platforms (Windows, Mac, > Linux, Chrome OS, Android, and Android WebView)? > > All but WebView > > Is this feature fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> > ? > > Yes > > Finch feature name > > SharedStorageWebLocks > > Requires code in //chrome? > > No > > Estimated milestones > > M133 > > Link to entry on the Chrome Platform Status > > https://chromestatus.com/feature/5133950203461632 > > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAANMuaPs2Uaq42c5m%2Buyf8AEq02ajYCV%3DNWbeF-q31fGHFKqJg%40mail.gmail.com.