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?
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
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAOMQ%2Bw_%3DQEHpPB0jSrWCtkMGG2b6VTvpsRFzSAoeWq1hjVgEUw%40mail.gmail.com?utm_medium=email&utm_source=footer>.