On Monday, January 6, 2025 at 10:08:53 AM UTC-5 Peter Pakkenberg wrote:
Hi Chris, > The Storage Access API itself is not yet supported on Android WebView. WebView does support the Storage Access JS methods, but lacks a way to grant permission, which we are currently working on adding. Once that work is done, the already exposed JS interfaces will be usable by web content. Thanks for the clarification, I was a bit imprecise there. I also don’t see any code to explicitly disable the kStorageAccessHeaders flag on WebView, so if the feature flag is flipped to enabled by default, then this feature will be launched on WebView. That's correct; my plan was to disable the feature on WebView using AwFieldTrials::RegisterFeatureOverrides <https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/aw_field_trials.cc;drc=57e439af5bc1022525302dc8c3e25f8c7c10e445;l=86> in the same CL that default-enables the feature. Is there any reason why the header feature should not be supported by WebView? There's no reason why WebView shouldn't support this feature. I'm not opposed to including WebView when this feature ships, given what you said above! On Friday, January 3, 2025 at 4:44:35 PM UTC Yoav Weiss wrote: LGTM1 This seems like a reasonable optimization, and I like plans to optimize this further. The immediate compat risk does indeed seem tiny. (but please keep the flag around just in case) On Fri, Jan 3, 2025 at 4:58 PM Chris Fredrickson <cfred...@chromium.org> wrote: On Thursday, January 2, 2025 at 10:53:50 PM UTC-5 Yoav Weiss wrote: On Thu, Jan 2, 2025 at 7:36 PM Chris Fredrickson <cfred...@chromium.org> wrote: Contact emails sled...@google.com, johann...@chromium.org, cfred...@chromium.org Explainer https://github.com/privacycg/storage-access-headers Do I understand correctly and the extra RTT imposed by the "retry" is required for security reasons <https://github.com/privacycg/storage-access-headers?tab=readme-ov-file#opt-in-signal> ? Yes, the additional round trip is necessary for security. (We recognize that an extra round trip is not ideal, and we're working on a way to "reuse <https://github.com/privacycg/storage-access-headers/pull/22>" the security signal provided by one round trip for subsequent requests.) Specification https://privacycg.github.io/storage-access-headers Summary Storage Access Headers offer an alternate way for authenticated embeds to opt in to unpartitioned cookies. These headers indicate whether embedded resources should load with permission they have already been granted, reducing loads and latency overall for these use cases. Blink component Blink>StorageAccessAPI <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorageAccessAPI> Search tags storage access api <https://chromestatus.com/features#tags:storage%20access%20api>, storage access headers <https://chromestatus.com/features#tags:storage%20access%20headers> TAG review https://github.com/w3ctag/design-reviews/issues/982. TAG review status Satisfied in early design review. TAG didn’t expect to have major input on the spec and invited us to proceed without their spec review. Chromium Trial Name StorageAccessHeader Origin Trial documentation link https://github.com/cfredric/storage-access-headers Risks Interoperability and Compatibility This feature poses a minor compatibility risk, since the Origin header is now included on requests that include the "Sec-Fetch-Storage-Access: inactive" header - and some servers do not yet properly handle the Origin header. However, this risk is low, because: * The "inactive" header is only included on clients that already block third-party cookies. * The presence of the "inactive" header implies that the request is cross-site, and that the site in question already uses the Storage Access API (which is relatively new to the web platform) or that the context is an "A > B > A" embedding scenario. * This feature omits the Origin header from requests whose `credentials` mode is not "include". Hmm, so we'd start sending the Origin header on no-CORS requests? That's correct - but only if the recipient site has already been granted the "storage-access" permission (or the request context is an A>B>A embed, so no explicit permission grant is needed) *and* the request's credentials mode is "include". I.e., only if the value of the Sec-Fetch-Storage-Access header is "inactive". Have we tried to quantify that risk? Finch it in some way? We have UMA metrics on Dev that can help upper-bound the risk. On Windows clients that have manually enabled this feature, 6k out of 88M cross-site requests (about 0.00007%) included the Sec-Fetch-Storage-Access header and set its value to "inactive". (On Mac, Linux, and Android, these numbers are 0.0001%, 0.0004%, and 0.0005%, respectively.) These numbers are an overestimate of the expected breakage, since they only count cross-site requests, and presumably some of those requests were to servers that handle the Origin header properly. Those metrics are a limited sample and are certainly biased since they come from Dev clients that have manually enabled the feature. But those fractions are small enough to make me feel more comfortable launching this. (Anecdotally, I've been running Chrome with this feature enabled for months on my corp and personal profiles, and haven't run into any noticeable breakage.) Gecko: No signal (https://github.com/mozilla/standards-positions/issues/1084 ) WebKit: No signal (https://github.com/WebKit/standards-positions/issues/412) Web developers: Positive (https://github.com/privacycg/ storage-access/issues/130) Other feature requests: * https://github.com/privacycg/storage-access/issues/170 * https://github.com/privacycg/storage-access/issues/189 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 Debuggability This is debuggable via DevTools and via chrome://net-export. Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)? No The Storage Access API itself is not yet supported on Android WebView. Is this feature fully tested by web-platform-tests <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> ? Yes DevTrial instructions https://developers.google.com/privacy-sandbox/blog/storage-a ccess-api-headers-logic Flag name on chrome://flags storage-access-headers Finch feature name StorageAccessHeaders Requires code in //chrome? False Tracking bug https://b.corp.google.com/issues/329698698 Launch bug https://launch.corp.google.com/launch/4309903 Measurement We've written metrics to track the usages of the "load" and "retry" response headers, and to measure the incidences of each variant of the request header. Sample links https://storage-access-headers-demo.glitch.me Estimated milestones Origin trial desktop first 130 Origin trial desktop last 135 Origin trial Android first 130 Origin trial Android last 135 Anticipated spec changes Open questions about a feature may be a source of future web compatibility or interoperability issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way). None Anticipated implementation changes We decided not to separately integrate the “Activate-Storage-Access” header with the SAA Permissions Policy in this initial version. The follow-up work to figure out the integration is tracked in https://crbug.com/382291442. Because of how SAH works this header already “benefits” from the SAA PP by default (SAH won’t work if there’s no SAA permission grant), and we haven’t seen developer demand for being able to prevent just the header, but not SAA itself. The implementation carries a surprising amount of architectural complexity, but we do plan to follow up with this for completeness. Most importantly, adding this later is unlikely to cause compat risks because SAA has a “*” default allow-list, so we won't be changing default behavior. Link to entry on the Chrome Platform Status https://chromestatus.com/feature/6146353156849664?gate=6138146145435648 Links to previous Intent discussions Intent to Prototype: https://groups.google.com/a/chromium.org/d/msgid/blink- dev/CABa1CXyMJzMmpQkZMwQUFGK8-f%3DEerhR2VQbTZephdmE22W%2ByA%40mail.gmail.com Intent to Experiment: https://groups.google.com/a/ch romium.org/d/msgid/blink-dev/CABa1CXyYbxwh%3DPdnigTW80d9jez_ 835R1SV1bQPDjvk1ra5G4g%40mail.gmail.com This intent message was generated by Chrome Platform Status <https://chromestatus.com/>. -- 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/ch romium.org/d/msgid/blink-dev/1bbe492c-8722-4dbf-8342-82f59fb b0bd2n%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/1bbe492c-8722-4dbf-8342-82f59fbb0bd2n%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 visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/f3f4be61-67dd-4747-849f-7eabbe465017n%40chromium.org.