LGTM2

On Sat, Apr 19, 2025 at 9:43 AM Mike Taylor <miketa...@chromium.org> wrote:

> I am recused from giving LGTMs on this one, but the new use counters and
> other mitigations (enterprise policy, finch killswitch, chrome://flags
> entry) suggest to me that the risk is low, and if we get it wrong, we can
> undo the change.
> On 4/18/25 4:39 PM, Andrew Williams wrote:
>
> 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>
>>>>>> .
>>>>>>
>>>>> --
> 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/a69a3de1-ebc7-4119-976b-cbe65468cb3e%40chromium.org
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/a69a3de1-ebc7-4119-976b-cbe65468cb3e%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/CAOMQ%2Bw-btYULA8RehG6DxE85akU-SMYak3h2OfRKWFABnjx2qA%40mail.gmail.com.

Reply via email to