To add some clarity to the proposed changes and the rationale (as this came up in the API OWNERS meeting today):

In M100 we shipped the following syntax, thinking it was a good idea to get as close to Permissions-Policy syntax as possible:

<meta name="accept-ch" value="sec-ch-dpr=(https://foo.bar https://baz.qux), sec-ch-width=(https://foo.bar)">

But it’s not quite a valid Permissions Policy, as Cloudinary pointed out.

One difference is the lack of quotes around origins  (which are required for sf-strings). But without changing HTML meta parsing entirely (no thanks), we would have to force devs to use a single quote for value=, so they could use double quotes inside. Or the inverse, but sf-strings don’t allow for beginning with single quotes.

Another difference is the fact that client hints tokens begin with the `sec-` prefix, but the policy-controlled feature names do not.

So the delta is far enough away from a Permissions-Policy header to declare that our attempt failed. :(

Instead, this intent proposes adding new syntax (old syntax to be deprecated/removed if this is approved in a followup intent) that looks like so:

<meta http-equiv="delegate-ch" value="sec-ch-dpr https://foo.bar https://baz.qux; sec-ch-width https://foo.bar";>

This format tracks more closely with iframe’s “allow” serialization (and other familiar meta http-equiv pragmas, like CSP).

On 6/14/22 1:02 PM, Ari Chivukula wrote:

Contact emails

aric...@chromium.org <mailto:aric...@chromium.org>, miketa...@chromium.org <mailto:miketa...@chromium.org>, yoavw...@chromium.org <mailto:yoavwe...@chromium.org>


Prior Intent

https://groups.google.com/a/chromium.org/g/blink-dev/c/JQ68cvYuiQU/m/S_33YSqxCwAJ <https://groups.google.com/a/chromium.org/g/blink-dev/c/JQ68cvYuiQU/m/S_33YSqxCwAJ>


Specification

https://github.com/WICG/client-hints-infrastructure/pull/109 <https://github.com/WICG/client-hints-infrastructure/pull/109>


Summary

There is existing HTML syntax to delegate client hints to third-party content which requires client information lost by user agent reduction <https://groups.google.com/a/chromium.org/g/blink-dev/c/R0xKm1B7qoQ>. Example:

<meta name="accept-ch" value="sec-ch-dpr=(https://foo.bar https://baz.qux), sec-ch-width=(https://foo.bar <https://foo.bar>)">

We shipped this syntax in M100 <https://chromestatus.com/feature/5684289032159232>and got belated developer feedback <https://github.com/WICG/client-hints-infrastructure/issues/108>that it’s confusing. We reached the conclusion it’s not too late to change course due tolow adoption <https://chromestatus.com/metrics/feature/timeline/popularity/4081>so far.

This intent proposes a replacement syntax with the same feature set. Example:

<meta http-equiv="delegate-ch" value="sec-ch-dpr https://foo.bar https://baz.qux; sec-ch-width https://foo.bar";>

Blink component

Blink>Network>ClientHints <https://bugs.chromium.org/p/chromium/issues/list?q=component%3ABlink%3ENetwork%3EClientHints>

Motivation

We’re switching from `name="accept-ch"` to `http-equiv="delegate-ch"` on advice <https://github.com/w3ctag/design-reviews/issues/702#issuecomment-1143680791>that `http-equiv` should be used when the value is impacting the processing model. We’re switching from syntax close to HTTP Permissions-Policy <https://w3c.github.io/webappsec-permissions-policy/#permissions-policy-http-header-field>to use syntax closer to the iframe allow attribute <https://html.spec.whatwg.org/dev/iframe-embed-object.html#attr-iframe-allow>at the request of developers <https://github.com/WICG/client-hints-infrastructure/issues/108>.

Although this change is coming after a launch in M100, usage <https://chromestatus.com/metrics/feature/timeline/popularity/4081>of the prior syntax is low (currently 0.000016%) and it seems worth taking the opportunity to reduce developer confusion and increase standards compliance.


TAG review

https://github.com/w3ctag/design-reviews/issues/702 <https://github.com/w3ctag/design-reviews/issues/702>


Compatibility

We will not be removing either prior syntax, so there is no compatibility risk.


        Interoperability

Other engines haven’t shipped the previous delegation syntax, so are unlikely to object to this specific change.

Gecko: Neutral <https://github.com/mozilla/standards-positions/issues/596>

WebKit: No feedback on last request <https://lists.webkit.org/pipermail/webkit-dev/2021-November/032057.html>

Web developers: Positive interest from Cloudinary <https://github.com/WICG/client-hints-infrastructure/issues/108>


        Debuggability

Any improperly formatted client hint meta tags will be flagged in the Issues tab <https://docs.google.com/document/d/1lDEvj8tMeuvUs1HTTqL-44YiI-7ljeQkusM_WhUfIeE/edit>.


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

https://github.com/web-platform-tests/wpt/pull/34416 <https://github.com/web-platform-tests/wpt/pull/34416>


Tracking bug

https://crbug.com/1334152 <https://crbug.com/1334152>


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/6308751530262528 <https://chromestatus.com/feature/6308751530262528>



--
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/4f894aa1-a903-4b9b-5e2e-bf30b8be4b9f%40chromium.org.

Reply via email to