Intent to Prototype & Ship: Client Hints persistency in Android WebView

327 views
Skip to first unread message

Ari Chivukula

unread,
Aug 3, 2022, 2:45:16 PM8/3/22
to blink-dev, Mike Taylor, Yoav Weiss

Contact emails

ari...@chromium.org, mike...@chromium.org, yoav...@chromium.org


Specification

https://wicg.github.io/client-hints-infrastructure/


Explainer

When a page is loaded, the first response from an origin may include a signal (in HTTP headers) for Client Hints to be included in future requests to that origin. Without persisting this signal, Client Hints cannot be included in the next request to load a page from this Origin. Android WebView does not currently persist this signal.


Design Doc

https://docs.google.com/document/d/1r1AKHex1_UKh3wIp4ITkU4-J9-tdNZSOmUDeDVWw_AU/


Summary

We aim to add support for persistent Client Hints to Android Webview for parity with the rest of the platform. For more details on the Client Hints system see: https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints

 

Blink component

Blink>Network>ClientHints

 

Motivation

Without persisting the list of Client Hints a page requests the initial load of a website will never include Client Hints, only subresources on a given page can receive them. This undermines the use of the Client Hints system which is to empower websites to adapt content to the User Agent. We should add persistence in the interest of parity with the behavior of Chrome on Android so that WebView stays viable as a platform.


TAG review

N/A (this change enables a feature that we already ship on desktop and Android)


Compatibility

This expands persistent Client Hints to a platform that was missing it, no existing implementation will change. The persisted Client Hints can be cleared by clearing the Cookies for a given WebView, the same way that Client Hints are cleared in Chrome for Android.

 

Interoperability

Other engines haven’t shipped Client Hints so this doesn’t increase interoperability risk.

 

Gecko: Client Hints and User Agent Client Hints considered non-harmful

 

WebKit: Mildly positive support for User Agent Client Hints

 

Web developers: Vendor interest from Huawei, interest from Cloudinary in User Agent Client Hints


Debuggability

N/A (developers can use Chrome for Android to debug client hint requests, though the values for user-agent related strings will differ within the WebView context)


Is this feature fully tested by web-platform-tests?

Android WebView is not a WPT platform, so this will only have chrome internal tests


Tracking bug

https://crbug.com/921655


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/4936247663919104


Mike West

unread,
Aug 9, 2022, 4:24:45 AM8/9/22
to Ari Chivukula, blink-dev, Mike Taylor, Yoav Weiss
LGTM1 to extend this already-approved feature to WebView.

Presumably you'll be chatting with WebView experts about any implications this might have for the API WebView exposed to embedding apps?

-mike


--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5D%2BZnn79sLfnTBa84Q_aCmg%2BWsAeZBqLo9MCA335gYg_nw%40mail.gmail.com.

Torne (Richard Coles)

unread,
Aug 9, 2022, 1:43:38 PM8/9/22
to Mike West, Ari Chivukula, blink-dev, Mike Taylor, Yoav Weiss
On Tue, 9 Aug 2022 at 04:24, Mike West <mk...@chromium.org> wrote:
LGTM1 to extend this already-approved feature to WebView.

Presumably you'll be chatting with WebView experts about any implications this might have for the API WebView exposed to embedding apps?

Yes, we've discussed this. Clearing all cookies through the existing WebView API will also clear persisted client hints, and that seems sufficient for now. The WebView API doesn't have very effective ways to manage most kinds of stored data (either in general or for specific sites), so adding more specific ways to deal with this doesn't seem worthwhile.

Daniel Bratell

unread,
Aug 9, 2022, 1:51:24 PM8/9/22
to Torne (Richard Coles), Mike West, Ari Chivukula, blink-dev, Mike Taylor, Yoav Weiss

Hernán García

unread,
Aug 9, 2022, 3:21:02 PM8/9/22
to Mike West, ari...@chromium.org, blin...@chromium.org, Mike Taylor, Yoav Weiss

Manuel Rego Casasnovas

unread,
Aug 10, 2022, 11:54:10 AM8/10/22
to Daniel Bratell, Torne (Richard Coles), Mike West, Ari Chivukula, blink-dev, Mike Taylor, Yoav Weiss
LGTM3

On 09/08/2022 19:51, Daniel Bratell wrote:
> LGTM2
>
> /Daniel
>
> On 2022-08-09 19:43, Torne (Richard Coles) wrote:
>> On Tue, 9 Aug 2022 at 04:24, Mike West <mk...@chromium.org> wrote:
>>
>> LGTM1 to extend this already-approved feature to WebView.
>>
>> Presumably you'll be chatting with WebView experts about any
>> implications this might have for the API WebView exposed to
>> embedding apps?
>>
>>
>> Yes, we've discussed this. Clearing all cookies through the existing
>> WebView API will also clear persisted client hints, and that seems
>> sufficient for now. The WebView API doesn't have very effective ways
>> to manage most kinds of stored data (either in general or for specific
>> sites), so adding more specific ways to deal with this doesn't seem
>> worthwhile.
>>
>> -mike
>>
>>
>> On Wed, Aug 3, 2022 at 8:45 PM Ari Chivukula
>> <ari...@chromium.org> wrote:
>>
>> Contact emails
>>
>> ari...@chromium.org <mailto:ari...@chromium.org>,
>> mike...@chromium.org <mailto:mike...@chromium.org>,
>> yoav...@chromium.org <mailto:yoav...@chromium.org>
>>
>>
>> Specification
>>
>> https://wicg.github.io/client-hints-infrastructure/
>> <https://wicg.github.io/client-hints-infrastructure/>
>>
>>
>> Explainer
>>
>> When a page is loaded, the first response from an origin may
>> include a signal (in HTTP headers) for Client Hints to be
>> included in future requests to that origin. Without persisting
>> this signal, Client Hints cannot be included in the next
>> request to load a page from this Origin. Android WebView does
>> not currently persist this signal.
>>
>>
>> Design Doc
>>
>> https://docs.google.com/document/d/1r1AKHex1_UKh3wIp4ITkU4-J9-tdNZSOmUDeDVWw_AU/
>> <https://docs.google.com/document/d/1r1AKHex1_UKh3wIp4ITkU4-J9-tdNZSOmUDeDVWw_AU/>
>>
>>
>> Summary
>>
>> We aim to add support for persistent Client Hints to Android
>> Webview for parity with the rest of the platform. For more
>> details on the Client Hints system see:
>> https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints
>> <https://developer.mozilla.org/en-US/docs/Web/HTTP/Client_hints>
>>
>>  
>>
>> Blink component
>>
>> Blink>Network>ClientHints
>> <https://bugs.chromium.org/p/chromium/issues/list?q=component%3ABlink%3ENetwork%3EClientHints>
>>
>>  
>>
>> Motivation
>>
>> Without persisting the list of Client Hints a page requests
>> the initial load of a website will never include Client Hints,
>> only subresources on a given page can receive them. This
>> undermines the use of the Client Hints system which is to
>> empower websites to adapt content to the User Agent. We should
>> add persistence in the interest of parity with the behavior of
>> Chrome on Android so that WebView stays viable as a platform.
>>
>>
>> TAG review
>>
>> N/A (this change enables a feature that we already ship on
>> desktop and Android)
>>
>>
>> Compatibility
>>
>> This expands persistent Client Hints to a platform that was
>> missing it, no existing implementation will change. The
>> persisted Client Hints can be cleared by clearing the Cookies
>> for a given WebView, the same way that Client Hints are
>> cleared in Chrome for Android.
>>
>>  
>>
>>
>> Interoperability
>>
>> Other engines haven’t shipped Client Hints so this doesn’t
>> increase interoperability risk.
>>
>>  
>>
>> Gecko: Client Hints
>> <https://github.com/mozilla/standards-positions/issues/79>and
>> User Agent Client Hints
>> <https://github.com/mozilla/standards-positions/issues/202>considered
>> non-harmful
>>
>>  
>>
>> WebKit: Mildly positive support for User Agent Client Hints
>> <https://lists.webkit.org/pipermail/webkit-dev/2020-May/031198.html>
>>
>>  
>>
>> Web developers: Vendor interest from Huawei
>> <https://bugs.chromium.org/p/chromium/issues/detail?id=921655&colspec=ID%20Pri%20Type%20Component%20Status%20Summary%20Owner%20Target%20M%20Reporter%20Modified%20Opened%20NextAction&sort=nextaction#:~:text=it%20looks%20good-,Comment%2044,-by>,
>> interest from Cloudinary
>> <https://github.com/WICG/client-hints-infrastructure/issues/108>in
>> User Agent Client Hints
>>
>>
>> Debuggability
>>
>> N/A (developers can use Chrome for Android to debug client
>> hint requests, though the values for user-agent related
>> strings will differ within the WebView context)
>>
>>
>> Is this feature fully tested by web-platform-tests?
>>
>> Android WebView is not a WPT platform, so this will only have
>> chrome internal tests
>>
>>
>> Tracking bug
>>
>> https://crbug.com/921655 <https://crbug.com/921655>
>>
>>
>> Link to entry on the Chrome Platform Status
>>
>> https://chromestatus.com/feature/4936247663919104
>> <https://chromestatus.com/feature/4936247663919104>
>>
>>
>> --
>> 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+...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5D%2BZnn79sLfnTBa84Q_aCmg%2BWsAeZBqLo9MCA335gYg_nw%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5D%2BZnn79sLfnTBa84Q_aCmg%2BWsAeZBqLo9MCA335gYg_nw%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+...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXHy%3Dd_6zWscYe_-dCSmbjze3PQCyKzDLUT06h5cb9A3gxWdA%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXHy%3Dd_6zWscYe_-dCSmbjze3PQCyKzDLUT06h5cb9A3gxWdA%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+...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEV-rjdSAkKyH6uBKkakzjKm9Gzc3NdYvM8_zGy7AdrVTiqZRA%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEV-rjdSAkKyH6uBKkakzjKm9Gzc3NdYvM8_zGy7AdrVTiqZRA%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+...@chromium.org
> <mailto:blink-dev+...@chromium.org>.
> To view this discussion on the web visit
> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8033cd27-390a-78ff-7a3d-7c3a18a7680e%40gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/8033cd27-390a-78ff-7a3d-7c3a18a7680e%40gmail.com?utm_medium=email&utm_source=footer>.
Reply all
Reply to author
Forward
0 new messages