On Wed, Jul 17, 2024 at 3:13 PM 'Dylan Cutler' via blink-dev < blink-dev@chromium.org> wrote:
> Hey Vlad, > > I agree that deleting the affected cookies seems to be the least risky >> behavior here. Is this plan to roll out via Finch and monitor for bad >> breakages? >> > Unfortunately it is not possible to roll out network feature changes via > Finch to WebView, since WebView may sometimes use the cookie store before > the feature list has been fully initialized. We have implemented this > change as a command line switch for the process running the network service. > That makes sense. It does increase the risk of this removal, but I can't think of any other approach. As someone pointed out: "having no cookies is better than having corrupted cookies", and apps/sites should be able to deal gracefully with cookies being deleted. LGTM1 > Also, could you start the various reviews on the chromestatus entry? > > Done! > > Dylan > > On Wed, Jul 17, 2024 at 2:03 PM Vladimir Levin <vmp...@chromium.org> > wrote: > >> Thank you for all of the context. >> >> I agree that deleting the affected cookies seems to be the least risky >> behavior here. Is this plan to roll out via Finch and monitor for bad >> breakages? >> >> Also, could you start the various reviews on the chromestatus entry? >> [image: chipsna.png] >> >> Thanks, >> Vlad >> >> On Thu, Jul 11, 2024 at 1:17 PM Torne (Richard Coles) <to...@chromium.org> >> wrote: >> >>> >>> >>> On Tue, 9 Jul 2024 at 10:20, Vladimir Levin <vmp...@chromium.org> wrote: >>> >>>> >>>> >>>> On Fri, Jun 28, 2024, 16:28 'Dylan Cutler' via blink-dev < >>>> blink-dev@chromium.org> wrote: >>>> >>>>> Hey Vlad, >>>>> >>>>> Thanks for your response. I have completed the analysis and have some >>>>> results to report. I also have created the Chromestatus >>>>> <https://chromestatus.com/feature/5279664766713856> entry as >>>>> requested. >>>>> >>>>> Here are some stats that give a picture of CHIPS usage on WebView >>>>> >>>>> - Global percentage of requests from WebView clients that contain >>>>> partitioned cookies: 33% >>>>> - Global percentage of requests from WebView that contain a single >>>>> partitioned cookie: 29% >>>>> >>>>> >>>>> >>>>> - Average percentage of requests from a single WebView app that >>>>> contain partitioned cookies: 10% >>>>> - Average percentage of requests from a single WebView app that >>>>> contain a single partitioned cookie: 7% >>>>> >>>>> >>>>> >>>>> - Global percentage of CHIPS we estimate to be the >>>>> receive-cookie-deprecation >>>>> >>>>> <https://developers.google.com/privacy-sandbox/relevance/setup/web/chrome-facilitated-testing> >>>>> opt-in cookie: 54% >>>>> - Average percentage of CHIPS that each app has stored that we >>>>> estimate to be the receive-cookie-deprecation opt-in cookie: 55% >>>>> >>>>> >>>>> >>>>> - The percentage of apps using CHIPS: 73% >>>>> - The percentage of apps using the receive-cookie-deprecation opt >>>>> in cookie: 66% >>>>> >>>>> The majority of usage of CHIPS is for the 3PCD facilitated testing >>>>> opt-in cookie, which will not be impacted by this change since this cookie >>>>> merely serves to opt into browser behavior that is not available on >>>>> WebView >>>>> regardless. >>>>> >>>>> That being said, we do see usage of CHIPS is significant on WebView, >>>>> so we have to weigh our options. Is it more disruptive to delete the >>>>> cookies, silently change their behavior to unpartitioned, or to do nothing >>>>> until shouldInterceptRequest supports the Cookie header. I am also curious >>>>> to hear your take. >>>>> >>>> >>>> Thank you for the analysis. Can you help me understand what percentage >>>> of webview apps do you expect would experience a breakage if delete the >>>> cookies? My understanding is that it's around 33% assuming that global >>>> requests are distributed evenly across apps? Although that doesn't seem to >>>> be a valid assumption to make. >>>> >>> >>> Right, it won't be distributed evenly because apps load different sites, >>> and whether partitioned cookies are used is primarily down to the site. >>> It's not entirely straightforward to figure out how this is distributed >>> across apps. >>> >>> >>>> It does sound like it's not going to be a small number. I'm also >>>> assuming that a single cookie case is interesting because these are the >>>> cases that can be moved to be unpartitioned with no collisions, is that >>>> right? If so the remainder of breakages seems large as well. >>>> >>>> The type of breakage would be temporary but noticeable, like a need to >>>> sign in again. However, it can also be as bad as losing arbitrary data that >>>> would have been stored in that cookie. Is that correct? >>>> >>> >>> Yes, though for many apps the breakage would be nothing - lots of apps >>> use WebView in a way where there is *no* meaningful data stored via web >>> mechanisms. >>> >>> >>>> You noted that the current behavior is a mismatch between what webview >>>> sees and what the cookie manager can access in java. Do we know how >>>> frequently cookie manager is used in these cases? I'm trying to estimate >>>> actual inconsistent behavior that this is trying to fix and if that worth >>>> the risk of breakage for all partitioned cookies >>>> >>> >>> This is not the only issue; there's a bigger problem with apps that >>> intercept network requests from WebView - because the interception happens >>> extremely early in the request lifecycle, the request information that gets >>> passed to the app does not include any cookie headers at all (regardless of >>> partitioning), and if the app does choose to intercept the request and >>> return a response, any Set-Cookie headers in the response are *also* not >>> processed. This means that when apps are doing this kind of interception >>> they need to use the CookieManager APIs to get the cookies for the request >>> and attach them themselves, and likewise need to set cookies manually using >>> CookieManager for responses. >>> >>> It's impossible for apps to do this correctly for partitioned cookies, >>> and extending the CookieManager APIs to allow getting/setting partitioned >>> cookies is not sufficient to fix it: the request interception API doesn't >>> provide any 1P/3P context information and so the app has no way to know >>> which partition key to pass to the API to get/set the cookies correctly. >>> This also means that any future changes to cookie behavior are likely to >>> cause similar problems. >>> >>> bewise@ is working on changes to the request interception behavior to >>> handle the cookie headers automatically to fix this (e.g. >>> https://chromium-review.googlesource.com/c/chromium/src/+/5616051) but >>> this is significantly more difficult than just extending the CookieManager >>> API, as this requires changing the behavior of existing APIs in a >>> backward-incompatible way. >>> >>> >>>> Also, what's the timeline for shipping the cookie manager fix that >>>> would be able to deal with partitioned cookies properly? >>>> >>> >>> I'm not sure what the current plan to ship the changes here is, but it >>> may take some time due to the changes being more involved and a bigger >>> compat risk than initially thought. >>> >>> >>>> >>>> Thanks, >>>> Vlad >>>> >>>>> >>>>> Best, >>>>> Dylan >>>>> On Wed, Jun 5, 2024 at 11:55 AM Vladimir Levin <vmp...@chromium.org> >>>>> wrote: >>>>> >>>>>> Hey, >>>>>> >>>>>> The first item looks like a good starting point. We can discuss >>>>>> possible solutions when we know how much usage there is. >>>>>> >>>>>> For visibility, can you please file a chromestatus entry for this >>>>>> intent? >>>>>> >>>>>> Thanks, >>>>>> Vlad >>>>>> >>>>>> On Wed, Jun 5, 2024 at 10:36 AM 'Dylan Cutler' via blink-dev < >>>>>> blink-dev@chromium.org> wrote: >>>>>> >>>>>>> Hey Vlad, >>>>>>> >>>>>>> Thanks for your response and interest in the intent. I can see two >>>>>>> paths going forward. >>>>>>> >>>>>>> >>>>>>> 1. We query UMA to determine just what percentage of WebView >>>>>>> apps embed content using CHIPS (and in how many partitions). We can >>>>>>> also >>>>>>> use these metrics to identify the top apps who embed users of CHIPS >>>>>>> and >>>>>>> make sure this change would not lead to disruptions. If that proves >>>>>>> to be >>>>>>> enough so that you are no longer concerned about breakage then we >>>>>>> could move forward. Otherwise, we move on to approach (2). >>>>>>> 2. We refactor our code so that if CHIPS is disabled in WebView, >>>>>>> rather than deleting partitioned cookies we could convert them to >>>>>>> unpartitioned. If the user has an unpartitioned cookie with the same >>>>>>> name/domain/path, then we would delete the partitioned cookie in >>>>>>> favor of >>>>>>> the unpartitioned one. If multiple cookies exist in different >>>>>>> partitions >>>>>>> and no such unpartitioned cookie exists, we would fall back on the >>>>>>> most >>>>>>> recently used cookie. It is worth noting, this technique is complex >>>>>>> and >>>>>>> could have its own risks, so we'd like to leave it as a last resort. >>>>>>> >>>>>>> Let me know what you think, and if this sounds acceptable, I can get >>>>>>> that data from UMA to start to inform if we want to pursue the >>>>>>> algorithm in >>>>>>> (2). >>>>>>> >>>>>>> Thanks, >>>>>>> Dylan >>>>>>> >>>>>>> On Fri, May 31, 2024 at 5:11 AM Vladimir Levin <vmp...@chromium.org> >>>>>>> wrote: >>>>>>> >>>>>>>> On Wed, May 29, 2024 at 5:02 PM 'Dylan Cutler' via blink-dev < >>>>>>>> blink-dev@chromium.org> wrote: >>>>>>>> >>>>>>>>> Hello Blink API Owners, >>>>>>>>> >>>>>>>>> >>>>>>>>> We’re seeking approval to unship and relaunch CHIPS (a.k.a. >>>>>>>>> partitioned cookies) in Android WebView only. >>>>>>>>> >>>>>>>>> Rationale >>>>>>>>> >>>>>>>>> The WebViewClient supports a method, shouldInterceptRequest >>>>>>>>> <https://developer.android.com/reference/android/webkit/WebViewClient#shouldInterceptRequest(android.webkit.WebView,%20android.webkit.WebResourceRequest)>, >>>>>>>>> which allows developers to intercept network activity and modify HTTP >>>>>>>>> headers, etc. This API does not have access to the Cookie header and >>>>>>>>> relies >>>>>>>>> on the Android CookieManager API >>>>>>>>> <https://developer.android.com/reference/android/webkit/CookieManager> >>>>>>>>> in order to query what cookies are available for a particular request >>>>>>>>> URL. >>>>>>>>> This is because the request is intercepted before it is sent to >>>>>>>>> the network service >>>>>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:android_webview/browser/aw_contents_io_thread_client.cc;l=316;drc=59ac8227c5dd59754331b3f7f9f85e1a947f1242>, >>>>>>>>> where the Cookie header is added. However, partitioned cookies are >>>>>>>>> double-keyed on the top-level site and the site of the URL using the >>>>>>>>> cookies. >>>>>>>>> >>>>>>>>> Currently, the CookieManager API provides no way for developers to >>>>>>>>> query partitioned cookies correctly, and this will cause a mismatch >>>>>>>>> between >>>>>>>>> what the Java API returns and what frames in WebView will actually be >>>>>>>>> in >>>>>>>>> their Cookie header. In hindsight, this seems risky and prone to >>>>>>>>> bugs, and >>>>>>>>> not something the CHIPS team had considered while designing the API. >>>>>>>>> >>>>>>>>> After discussing this with the WebView team, we believe that the >>>>>>>>> option that will minimize potential app breakage is to disable CHIPS >>>>>>>>> on >>>>>>>>> WebView until we are able to ship support for the Cookie header to >>>>>>>>> shouldInterceptRequest. We will release the changes to >>>>>>>>> shouldInterceptRequest in the next target SDK version (API level 36). >>>>>>>>> >>>>>>>>> We will reconsider our decision to unlaunch CHIPS in WebView if we >>>>>>>>> get feedback from the community that this would cause significant >>>>>>>>> disruption. >>>>>>>>> >>>>>>>>> Behavior after deprecation: >>>>>>>>> >>>>>>>>> Cookies set with the Partitioned attribute on WebView will have >>>>>>>>> the attribute ignored, and the cookie will be treated as >>>>>>>>> unpartitioned. Any >>>>>>>>> existing partitioned cookies created in WebView will be deleted to >>>>>>>>> avoid >>>>>>>>> conflicts across different partitions and the unpartitioned cookie >>>>>>>>> jar. >>>>>>>>> >>>>>>>> >>>>>>>> This sounds like a pretty noticeable breakage. Are there any >>>>>>>> estimates on how many apps/users/developers would be impacted by this >>>>>>>> change? >>>>>>>> >>>>>>>> Also, as a point of process, I think this may require an intent to >>>>>>>> deprecate and remove in the chromestatus, although because this is >>>>>>>> only for >>>>>>>> WebView, I'm not entirely sure if there's a precedent. >>>>>>>> >>>>>>>> Thanks! >>>>>>>> Vlad >>>>>>>> >>>>>>>> >>>>>>>>> >>>>>>>>> All other platforms besides WebView will still have the >>>>>>>>> Partitioned attribute enabled. >>>>>>>>> >>>>>>>>> Timeline: >>>>>>>>> >>>>>>>>> We plan to turn down CHIPS on WebView in M127. >>>>>>>>> >>>>>>>>> We will relaunch CHIPS along with Android W, which will include >>>>>>>>> changes to the Android CookieManager API, in 2025. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Dylan Cutler >>>>>>>>> >>>>>>>>> -- >>>>>>>>> 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/CAMCNMFQOPkYjRxrs68q%2BHxebt-JWCopZ6Rq9r0O80dQF8PWwRg%40mail.gmail.com >>>>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMCNMFQOPkYjRxrs68q%2BHxebt-JWCopZ6Rq9r0O80dQF8PWwRg%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/CAMCNMFQ0N4hu_TF%2BBVC4MgRJgYoqmodqP%3Dg7L1dmE_GYqb1v3w%40mail.gmail.com >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMCNMFQ0N4hu_TF%2BBVC4MgRJgYoqmodqP%3Dg7L1dmE_GYqb1v3w%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/CAMCNMFQObcMXRVrxrq%3DhHSWV8L9uxDpWhrSJ3xQDNb53RH6DVA%40mail.gmail.com >>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMCNMFQObcMXRVrxrq%3DhHSWV8L9uxDpWhrSJ3xQDNb53RH6DVA%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/CADsXd2P-k%2B6fnpYDP8G0T%3DhQFfETKV7DedYb%3DohYpTKNMiOSzQ%40mail.gmail.com >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2P-k%2B6fnpYDP8G0T%3DhQFfETKV7DedYb%3DohYpTKNMiOSzQ%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/CAEV-rjeO4FDkD8g%3D0hKbmUCd_%2BAfDBpAq3ydB98Tm8eDJfSBug%40mail.gmail.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEV-rjeO4FDkD8g%3D0hKbmUCd_%2BAfDBpAq3ydB98Tm8eDJfSBug%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/CADsXd2N1H7XfZdmSWednDD8u0607ZE275HJf1-7ouJpOiLsMwg%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2N1H7XfZdmSWednDD8u0607ZE275HJf1-7ouJpOiLsMwg%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/CAMCNMFRwF4AjE6foyriSasv83dSQ6Gq_H%2BjKgoad1Dh2iNiEgw%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAMCNMFRwF4AjE6foyriSasv83dSQ6Gq_H%2BjKgoad1Dh2iNiEgw%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/CADsXd2Ne3Y5G%2BjYTFDwFEnkTwZfuwM%2BCZW4TWYJacNj1UA0oXg%40mail.gmail.com.