diff --git a/index.html b/index.html index 7befdac..b10a062 100644 --- a/index.html +++ b/index.html @@ -4,15 +4,14 @@
Copyright © 2023 the Contributors to the Client Hints Infrastructure Specification, published by the Web Platform Incubator Community Group under the W3C Community Contributor License Agreement (CLA). +
Copyright © 2024 the Contributors to the Client Hints Infrastructure Specification, published by the Web Platform Incubator Community Group under the W3C Community Contributor License Agreement (CLA). A human-readable summary is available.
Provides the motivation for Client Hints.
Defines the fundamental Client Hints infrastructure:
-The Accept-CH
response header, which servers may use to advertise
-support for certain Client Hints.
The Critical-CH
response header, which servers may use to request a reload
-to include critical Client Hints missing in the initial load.
Defines the Accept-CH
response header, which servers may use to advertise
+ support for certain Client Hints.
Provides both general guidelines, and formal requirements, about Client Hints’ impact on caching, security, and privacy.
@@ -628,16 +678,19 @@Defines the Critical-CH
response header, which servers may use to request a restart
+ to include critical Client Hints missing in the initial load.
Integrates those concepts with the [HTML] and [FETCH] specifications, - by patching various concepts there.
+ by patching various concepts there.W3C Permissions Policy specification
In order to perform third party Client Hint delegation, Permissions Policy has - been extended to control features within fetch requests (rather than just Documents). See Permissions Policy § 9.10 Should request be allowed to use feature?
+ been extended to control features within fetch requests (rather than just Documents). See Permissions Policy § 9.13 Should request be allowed to use feature?A client hints set is a set of client hints tokens.
Accept-CH
cacheAn Accept-CH cache is owned by the user agent and is an ordered map, keyed on origin (an origin), +
An Accept-CH cache is owned by the user agent and is an ordered map, keyed on origin (an origin), with a value of client hints set (a client hints set).
The Accept-CH cache can effectively act as an alternative cookie store, since sites can use each of the hints as a bit set on the client, and that information will be communicated to them on every request. As such, a user agent MUST evict that -cache whenever the user clears their cookies or when session cookies expire.
-Note: A site can clear the browser’s Accept-CH
cache for its origin by sending an empty Accept-CH
header in a response. This sets the origin’s client hints set to an empty set.
A site can clear the browser’s Accept-CH
cache for its origin by sending an empty Accept-CH
header in a response. This sets the origin’s client hints set to an empty set.
There MAY be multiple Accept-CH
headers per-response and sf-lists can be split across lines as long as each line contains at least one token.
Note: As the cache can only be modified by the top-level frame, it is considered to be partitioned.
When asked to update the client hints set from cache given a settingsObject:
Critical-CH
header to request a reload. The Critical-CH
header itself does not modify the Accept-CH cache.
- A reload will only occur when a hint in the Accept-CH
header is both not in the Accept-CH cache and in the Critical-CH
header. If hints listed in
-the Critical-CH
header are already in the Accept-CH cache no reload is
+then the server can set a Critical-CH
header to request a restart. The Critical-CH
header itself does not modify the Accept-CH cache.
A restart will only occur when a hint in the Accept-CH
header is both not in the Accept-CH cache and in the Critical-CH
header. If hints listed in
+the Critical-CH
header are already in the Accept-CH cache no restart is
needed as they were sent. If hints listed in the Critical-CH
header are not
-in the Accept-CH
header a reload would not result in the hints being included
+in the Accept-CH
header a restart would not result in the hints being included
anyway.
When asked if the user agent should reload page for critical client hints given a settingsObject and response:
+The restart retries the entire navigation (including any prior redirects).
+There MAY be multiple Critical-CH
headers per-response and sf-lists can be split across lines as long as each line contains at least one token.
When asked if the user agent should restart loading the page for critical client hints given a settingsObject and response:
Delegate-CH
There MAY be multiple Delegate-CH
tags per-document and this algorithm is run once for each in the order of the appearance of the tags.
Note: This metadata appends client hints tokens to the environment settings object's client hints set. It does not add those hints to the Accept-CH cache.
meta
element.
link
, style
, or script
elements have begun to execute, then return.
- name
attribute, or if that attribute’s value is not delegate-ch
, then return.
+ http-equiv
attribute, or if that attribute’s value is not delegate-ch
, then return.
content
attribute, or if that attribute’s value is the empty string, then return.
There MUST be only one ACCEPT_CH
frames per-connection. Additional frames will be ignored.
This specification integrates with the [HTML] specification by patching the algorithms below:
Add a new field to navigable:
Critical-CH
boolean, initially false
.
+ Critical-CH
restart time DOMHighResTimeStamp
, initially 0.
+ This records the time the navigation was restarted to ensure required Client Hint
+ headers will be sent.
At populating a session history entry, in step 6 after substep 7 insert the following:
false
.
+ false
.
false
:
+ If navigable’s Critical-CH restart time is 0:
true
.
- Clarify how "Restart the initial navigation (before any redirects)" integrates with the HTML spec. [Issue #154]
+At navigation params, append the following:
+Critical-CH
restart time
+ DOMHighResTimeStamp
used for creating the navigation timing entry for the new Document
.
+ This records the time the navigation was restarted to ensure required Client Hint headers will be sent.
+