LGTM2.

On 4/24/24 5:45 PM, Yao Xiao wrote:

    Hi Yao,

    I see that https://github.com/WICG/shared-storage/pull/152 is
    still open, can that be landed before we ship this?

The PR landed just now.

    Also, can you point to the tests for this change?

Yes. cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/shared-storage/cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html> is a representative one. You can find other relevant tests in the same repository, by searching for "cross-origin".

Best,
Yao


On Wed, Apr 24, 2024 at 4:02 PM Chris Harrelson <chris...@chromium.org> wrote:

    Thanks for the further explanation! It was very helpful.

    LGTM1, but please make sure to land that open PR before shipping.

    On Wed, Apr 24, 2024 at 10:48 AM Josh Karlin
    <jkar...@chromium.org> wrote:

        Hey folks, I wanted to provide a bit more context on this
        change to help clarify the intention and any associated risks.

        Today, when a third-party script runs on a page and wants to
        write data to shared storage, or use their shared storage data
        (e.g., create an aggregate report) under its own name, the
        script first needs to create a x-origin iframe and pass the
        data to that frame. This is because the origin used by shared
        storage is that of the context. This is cumbersome to the
        developer. They have to create an iframe document to listen
        for data (e.g., via name attribute, url query param, or
        postMessage) and act on that data (by writing to shared
        storage or starting a worklet). It's also terrible for
        resource usage and performance (the browser needs to navigate,
        load a document, and execute js).

        The primary focus of this change is to allow a third-party on
        a page to invoke its own worklet (with access to its own
        storage) directly, bypassing the need to create a x-origin
        iframe. This is accomplished by allowing x-origin urls to be
        specified in a new API, `window.sharedStorage.createWorklet
        
<https://github.com/WICG/shared-storage?tab=readme-ov-file#proposed-api-surface>`.
        We are not changing the behavior of addModule, and we are not
        changing the capabilities of worklets. We're just making it
        easier to create x-origin worklets. In `createWorklet
        
<https://github.com/WICG/shared-storage?tab=readme-ov-file#proposed-api-surface>`,
        if a x-origin URL is specified, the response will require both
        `Shared-Storage-Cross-Origin-Worklet-Allowed: ?1` and CORS
        (Access-Control-Allow-Origin). That is, embedding a x-origin
        worklet is strictly opt-in. This is because a shared storage
        worklet has side-effects (e.g., sending reports, or selecting
        a url) which also consumes budget, and the worklet's origin
        may want to control who gets to use it. They should also
        (always a challenge on the web) take care to ensure that the
        data that they're receiving from the embedder is valid.

        Another useful aspect of introducing `createWorklet`, is that
        it allows a document to host multiple shared storage worklets
        and call methods on them individually. This makes it easier
        for pages that might have multiple teams creating them, that
        don't necessarily want to coordinate their shared storage
        worklet scripts.

        Best,

        Josh


        On Wed, Apr 24, 2024 at 1:19 PM Josh Karlin
        <jkar...@chromium.org> wrote:



            On Wed, Apr 24, 2024 at 11:52 AM Alex Russell
            <slightly...@chromium.org> wrote:

                Hey Josh,

                I agree that it might not be helpful to ping Gecko and
                WebKit on this, but it would still be helpful to
                update the TAG on how this design is evolving.


            Ack. I've updated the TAG thread
            
<https://github.com/w3ctag/design-reviews/issues/747#issuecomment-2075450880>.


                From that perspective, I would expect the TAG to
                request that we improve consistency by making
                cross-origin workers (not just worklets) possible.
                Where are we at on that?

                Regards,

                Alex

                On Friday, April 19, 2024 at 12:58:17 PM UTC-7 Josh
                Karlin wrote:

                    On Fri, Apr 19, 2024 at 1:59 PM Vladimir Levin
                    <vmp...@chromium.org> wrote:



                        On Fri, Apr 19, 2024 at 12:52 PM Yao Xiao
                        <yao...@chromium.org> wrote:

                            *Contact emails*
                            cam...@chromium.org
                            jkar...@chromium.org
                            yao...@chromium.org
                            rohitgu...@google.com
                            ashame...@google.com

                            *Explainer*
                            https://github.com/WICG/shared-storage

                            *Specification*
                            https://wicg.github.io/shared-storage/

                            *Additional anticipated specification changes*
                            https://github.com/WICG/shared-storage/pull/152

                            *Blink component*
                            Blink>Storage>SharedStorage
                            
<https://bugs.chromium.org/p/chromium/issues/list?q=component%3ABlink%3EStorage%3ESharedStorage&can=2>

                            *Summary:*
                            We plan to ship the following changes to
                            the Shared Storage API:

                              * selectURL() and run() will be exposed
                                on the SharedStorageWorklet interface.
                                When calling on the default scoped
                                worklet (i.e.
                                sharedStorage.worklet.selectURL()/run()),
                                the behavior is equivalent to calling
                                sharedStorage.selectURL()/run().
                              * Users can create new worklets via
                                const worklet = await
                                sharedStorage.createWorklet(url,
                                options). This API can be used to
                                start multiple and potentially
                                cross-origin worklets from a single
                                document.


                            *Risks
                            *
                            *Interoperability and Compatibility*
                            The changes are fully backward compatible.

                            Gecko: No signal
                            WebKit: No signal
                            Web developers: No signals
                            Other signals:


                        Is it possible to file position requests?
                        (https://bit.ly/blink-signals)


                        Was there a TAG review filed for this as well?



                    Sorry, we should have specified that TAG, Gecko.
                    and Webkit are negative on shared storage as a
                    whole. So we did not ask for their opinion on this
                    particular change.


                            *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*
                            Because the worklet's context origin will
                            be that of the origin of the script URL,
                            both
                            "Shared-Storage-Cross-Origin-Worklet-Allowed:
                            ?1" and CORS are required when fetching a
                            x-origin worklet script. Even so, it is
                            important that worklet script creators
                            understand the implications of this. Their
                            worklet, which accesses their origin's
                            Shared Storage data, can be loaded and
                            executed by a different party.

                            *Privacy*
                            In the case of creating or using a
                            cross-origin worklet, if the worklet
                            cannot be created because the user has
                            denied storage for that site, then the
                            promise will resolve (rather than reject)
                            to prevent leaking cross-site data. A
                            caller may still use timing attacks to
                            know this information, but this is a minor
                            privacy issue, as in reality very few
                            users would set such preferences, and
                            doing a wide search would incur a
                            significant performance cost spinning up
                            the worklets.

                            *Debuggability*

                              * Shared Storage database contents for
                                an origin can be viewed and modified
                                within DevTools.
                              * Shared Storage worklet can be
                                inspected within DevTools.


                            *Will this feature be supported on all six
                            Blink platforms (Windows, Mac, Linux,
                            Chrome OS, Android, and Android WebView)?*
                            All but WebView


                        Out of curiosity, why is WebView not supported
                        for this?


                            *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*
                            SharedStorageAPIM125

                            *Requires code in //chrome?*
                            No

                            *Estimated milestones*
                            We intend to ship in M125.

                            *Link to entry on the Chrome Platform Status*
                            https://chromestatus.com/feature/5145686840705024
-- 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 on the web visit
                            
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/41ee180b-5822-40fe-ac15-1bb1c9715e05n%40chromium.org
                            
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/41ee180b-5822-40fe-ac15-1bb1c9715e05n%40chromium.org?utm_medium=email&utm_source=footer>.

-- 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 on the web visit
                        
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2O7c2%2B%2B12PtuAS%2BSfHx0%2B8X6SuA7mr6saW%3DRVhewXkUHw%40mail.gmail.com
                        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2O7c2%2B%2B12PtuAS%2BSfHx0%2B8X6SuA7mr6saW%3DRVhewXkUHw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 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 on the web visit
                
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/af749e5f-d3fb-4901-9427-f49efe95410cn%40chromium.org
                
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/af749e5f-d3fb-4901-9427-f49efe95410cn%40chromium.org?utm_medium=email&utm_source=footer>.

-- 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 on the web visit
        
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAANMuaPuu4frRrmLq01eAsTAb2fMnQ_rZ3OJoz9dWd%3DVfQQBhA%40mail.gmail.com
        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAANMuaPuu4frRrmLq01eAsTAb2fMnQ_rZ3OJoz9dWd%3DVfQQBhA%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
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 on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALYudgV0qYjc9goCzdeSBjQpy0rLTZ2rem_KCWGNBs7MzMH5pQ%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CALYudgV0qYjc9goCzdeSBjQpy0rLTZ2rem_KCWGNBs7MzMH5pQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.

--
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 on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/fb5552ba-6381-40b0-ad43-76262ae199dd%40chromium.org.

Reply via email to