Hi blink-dev,
> Hmm, that extra complexity seems a bit unfortunate, but oh well; I'm
happy to trust your judgement that it's the best path. Please keep us
updated on the spec and test work for that extra integration!
The Storage Access API non-cookie storage spec [1] and corresponding
Chromium implementation had already planned to allow access to
first-party Blob URLs from third-party contexts after a storage handle
had been granted, and I think it makes sense w.r.t. consistency
(effectively providing workarounds for all of the APIs changed as part
of the Storage Partitioning effort). Regarding spec work for this, I
opened a spec bug [2] to discuss this further and it seems that what's
needed is the core work still required to make the Storage Access API
for non-cookie storage spec actually bypass storage partitioning for
the other storage APIs as well (which is still blocked on the Storage
Key having more than just an origin [3]). I plan to follow-up on that
spec work, but propose we don't block shipping this Blob URL
partitioning effort on this broader work. Regarding testing, we've
added WPTs for the integration, including for cases such as when a
Blob URL fetch occurs from a dedicated worker created after storage
access has been granted to the document context that created it.
Regarding potential for breakage, the new use counter we added that
better reflects the potential for breakage is in Chrome Beta, Dev, and
Canary and the % of page loads affected is very low (currently
0.000001%) [4]. For Chrome we have an enterprise policy that can be
used if there is breakage, we have a killswitch we can use to disable
the feature broadly if major breakage is encountered, and we've also
added a chrome://flags entry that can be used to disable the feature
by users directly. I think it's safe to conclude that this change is
safe but in the worst case we can mitigate breakage effectively if we
need to.
Assuming Domenic's LGTM still stands, it looks like we still need two
more. Would any other Blink API owners support moving forward with this?
Thank you!
-Andrew
[1] https://privacycg.github.io/saa-non-cookie-storage/#document-changes
[2] https://github.com/privacycg/saa-non-cookie-storage/issues/34
[3] https://github.com/whatwg/storage/pull/144
[4] https://chromestatus.com/metrics/feature/timeline/popularity/5330
On Tue, Mar 4, 2025 at 8:46 PM Domenic Denicola <dome...@chromium.org>
wrote:
On Wed, Mar 5, 2025 at 2:35 AM Andrew Williams
<awil...@chromium.org> wrote:
Hi everyone,
Quick update on this. We landed a new use counter
implementation last week that better gauges actual breakage,
and preliminary data from Chrome Canary shows that no
instances of breakage were detected except for a few from
yesterday, and those likely correspond to me running the
partitioning tests on wpt.fyi locally to confirm that the use
counter actually works as intended. :) For reference, there
are orders of magnitude more instances of
the BlobStoreAccessAcrossTopLevelSite use counter (which we
used for the previous breakage analysis) being reported for
the same Chrome Canary clients and during the same time
period. I'll check the "real" use counter data once it's
available in Chrome Status, but I suspect the percentage of
page loads that would break will be significantly lower than
we calculated earlier.
Also, before launching we plan to integrate with the Storage
Access API so that contexts that have been granted a
StorageAccessHandle will still be able to fetch Blob URLs in
the same way they could before this change (so, without regard
to top-level site or the "has-cross-site-ancestor" boolean)
Hmm, that extra complexity seems a bit unfortunate, but oh well;
I'm happy to trust your judgement that it's the best path. Please
keep us updated on the spec and test work for that extra integration!
-Andrew
On Mon, Feb 10, 2025 at 2:34 PM Andrew Williams
<awil...@chromium.org> wrote:
Thanks Yoav, responses inline!
> So the upper bound for potential breakage is 0.04%?
I believe this is a reasonable estimate, although I think
it assumes that page loads are evenly distributed across
UMA-enabled clients and I'm not sure whether that's the case
> Are there ways to tighten it? (e.g. through manual
sampling or use-counter changes)
Regarding manual sampling, we could investigate by looking
at the domains associated with an existing use counter for
this:
https://chromestatus.com/metrics/feature/timeline/popularity/4169.
I suspect that the majority of cases we would encounter
would be the cross-origin fetches that are already
blocked, though, matching the high percentage of these in
our metrics.
Making use-counter changes is certainly an option if the
consensus is that the upper bound still seems too risky
(even given that Firefox and Safari currently ship this
behavior and given the proposed mitigations).
Alternatively, we could enable this functionality in
Chrome Canary, Dev, and Beta for a few weeks and see if we
get any bug reports. WDYT?
> What does breakage look like? What do these sites see in
Safari today?
Blocking cross-partition fetches / subframe navigations is
implemented in both Firefox and Safari today, so for both
of those browsers the fetch / navigation fails and
DevTools shows a warning message. The partitioning scheme
is slightly different across browsers - Safari partitions
by top-level origin and Firefox partitions by top-level
site + whether there was a cross-site frame in the frame
tree, and the Chrome behavior will match the Firefox
behavior for this.
-Andrew
On Sun, Feb 9, 2025 at 11:21 PM Yoav Weiss (@Shopify)
<yoavwe...@chromium.org> wrote:
Thanks for the compat analysis!
On Fri, Feb 7, 2025 at 6:48 PM Andrew Williams
<awil...@chromium.org> wrote:
Hey everyone,
From looking at use counters for these cases,
cross-top-level-site Blob URL navigations that
would have noopener set as part of this change are
seen on 0.0004% of page loads. Note that this is
calculated from data from pre-stable channels and
could change when looking at Stable data, but it
seems unlikely to change by orders of magnitude.
For cross-partition Blob URL fetches, these occur
on 0.21% of page loads, but from digging into this
more and from looking at UMA data, at least 83% of
those cross-partition Blob URL fetches are
guaranteed to be blocked today because they are
also cross-origin, and only ~21% of UMA-enabled
clients reported at least one cross-partition
fetch that wasn't guaranteed to be blocked. It's
likely that the remaining 17% of cross-partition
Blob URL fetches are cross-origin as well and
would already be blocked, but our current use
counter / metrics implementations don't provide a
way to gauge this. More details on this analysis
can be found at: https://crbug.com/387655548#comment2
So the upper bound for potential breakage is 0.04%?
If so, that's too high for comfort from my perspective.
Are there ways to tighten it? (e.g. through manual
sampling or use-counter changes)
What does breakage look like? What do these sites see
in Safari today?
Overall I think the use counter metrics +
supporting UMA data support moving forward with
this change, as does the fact that Firefox and
Safari have already implemented similar
functionality. If there is breakage as a result of
this, we do have an enterprise policy to disable
it, we'll have a chrome://flags entry so that
users can disable it, and we'll have a Finch
feature flag as a killswitch for any cases of
widespread, significant breakage.
Regarding formal signals from Gecko and Webkit, we
opened one from Gecko but haven't heard anything:
https://github.com/mozilla/standards-positions/issues/1151.
For WebKit, we reached out regarding whether we
should open one and they mentioned they didn't
think we needed to, given that we plan to
implement what the functionality they have
already, just using sites instead of origins.
-Andrew
On Thu, Dec 12, 2024 at 12:35 PM Andrew Williams
<awil...@chromium.org> wrote:
Thanks Domenic, we've landed a change to
remove .tentative from the test file names:
https://chromium-review.googlesource.com/c/chromium/src/+/5967596
Gregg, IIUC
"top-level->iframe(blob-from-top-level)" means
the top-level creates a blob URL and then
creates an iframe where the src is that blob
URL. Similarly,
"top-level->iframe(3rd-party)->iframe(blob-from-3rd-party)"
means that the 3rd-party iframe creates a blob
URL and then creates an iframe where the src
is that blob URL. Neither of those cases will
be affected by this change.
Daniel, thanks for the feedback. We will
collect use counts on this and report back
once the data is available (should be around
mid-February). In the meantime, we will
request formal signals from Gecko and WebKit
as you recommended.
On the topic of alignment across browsers, the
I2S mentions that all navigations will remain
partitioned only by frame origin, but I
learned recently that Safari and
Firefox partition subframe navigations (like
using a blob URL as the src of an iframe) by
storage key / the top-level as well (and this
is what was originally proposed in
https://github.com/w3c/FileAPI/issues/153).
It's only top-level navigations that remain
partitioned only by frame origin. Our
implementation will follow suit. I'll update
the Chrome Status description accordingly.
-Andrew
On Wed, Dec 11, 2024 at 11:38 AM Daniel
Bratell <bratel...@gmail.com> wrote:
After discussing this on the API OWNER
meeting I have a few questions and
suggestions.
My main concern is that we don't have full
understanding of the compatibility risk.
We believe this is rare, but do we have
any hard data to confirm that? If not,
would it be possible to add a targetted
use counter that counts the cases where a
page tries to use a broken blob?
I think you should also request formal
signals from Gecko and WebKit since this
is not exactly what they have done. It
seems from what you write that we're
getting something very slightly different
(which also means that what seems to work
for them might still break in Chromium).
/Daniel
On 2024-12-10 03:29, Domenic Denicola wrote:
LGTM1, nice work on all the spec changes
here!
Please send a web platform tests PR to
remove the .tentative.html from the test
filenames.
On Tue, Dec 10, 2024 at 10:49 AM Gregg
Tavares <g...@chromium.org> wrote:
Sorry if I'm not up on all of the
latest. I have several sites that use
blobs in iframes to implement user
code execution (think
JSFiddle/Codepen). Do I need to be
worried?
Some use
top-level->iframe(blob-from-top-level).
Others use
top-level->iframe(3rd-party)->iframe(blob-from-3rd-party)
They all currently work across
browsers so I'm guessing I don't need
to worry if Firefox and Safari
already implement this.
--
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/CAM0wra8377qyjY1fv99%2BnDhJZjWN8j9CdGFLsuwrZVyHJYwUMg%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra8377qyjY1fv99%2BnDhJZjWN8j9CdGFLsuwrZVyHJYwUMg%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/CAEa0%2BkVgqdOa3MKSoUqvfdH3thYyqm3pM9Paib2frzALG3BhrQ%40mail.gmail.com
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEa0%2BkVgqdOa3MKSoUqvfdH3thYyqm3pM9Paib2frzALG3BhrQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.