LGTM2 On Thu, Jul 18, 2024 at 6:49 AM Vladimir Levin <vmp...@chromium.org> wrote:
> > > 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 > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2Ne3Y5G%2BjYTFDwFEnkTwZfuwM%2BCZW4TWYJacNj1UA0oXg%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/CAOMQ%2Bw_%3DQEHpPB0jSrWCtkMGG2b6VTvpsRFzSAoeWq1hjVgEUw%40mail.gmail.com.