Thanks for the updates Chris. LGTM2.
On 1/7/25 10:35 PM, Yoav Weiss (@Shopify) wrote:
On Tue, Jan 7, 2025 at 10:31 PM Chris Fredrickson
<cfred...@chromium.org> wrote:
Minor updates:
Mike Taylor previously noted
<https://groups.google.com/a/chromium.org/g/blink-dev/c/5-SQmyp95U0/m/ibM_3pbcAAAJ>
a possible concern about naming. Ben VanderSloot (Mozilla)
indicated
<https://github.com/mozilla/standards-positions/issues/1084> that
they're not concerned about the names, so this concern has been
resolved.
I also started a thread in blink-api-owners-discuss about whether
we can also ship on WebView (given the earlier discussion), though
I think it's still waiting for approval from a moderator.
FWIW, my LGTM still stands if we're expanding scope to cover WebView.
On Monday, January 6, 2025 at 10:28:53 AM UTC-5 Chris Fredrickson
wrote:
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
<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
<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
<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
<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
<https://github.com/mozilla/standards-positions/issues/1084>)
WebKit: No signal
(https://github.com/WebKit/standards-positions/issues/412
<https://github.com/WebKit/standards-positions/issues/412>)
Web developers: Positive
(https://github.com/privacycg/storage-access/issues/130
<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/170>*
https://github.com/privacycg/storage-access/issues/189
<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-access-api-headers-logic
<https://developers.google.com/privacy-sandbox/blog/storage-access-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
<https://b.corp.google.com/issues/329698698>
Launch bug
https://launch.corp.google.com/launch/4309903
<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
<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
<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
<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
<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/chromium.org/d/msgid/blink-dev/CABa1CXyYbxwh%3DPdnigTW80d9jez_835R1SV1bQPDjvk1ra5G4g%40mail.gmail.com
<https://groups.google.com/a/chromium.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
<mailto:blink-dev+unsubscr...@chromium.org>.
To view this discussion visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/1bbe492c-8722-4dbf-8342-82f59fbb0bd2n%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/CAOmohS%2BUjZy0vax%2B_u31q-WTHCrRo5%2B9%2BP6W6yF8LH%3DgdJJy1A%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOmohS%2BUjZy0vax%2B_u31q-WTHCrRo5%2B9%2BP6W6yF8LH%3DgdJJy1A%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 visit
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/e1b34c1a-ae7a-40d1-80f7-6b0ac2c58c4a%40chromium.org.