From 05bf299afaaa616b2d364824e15848b765798564 Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Wed, 11 Feb 2026 10:53:46 -0500 Subject: [PATCH 1/7] Added support for link rel=compression-dictionary --- source | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/source b/source index 01a93e619a2..726164645a1 100644 --- a/source +++ b/source @@ -16166,6 +16166,7 @@ interface HTMLLinkElement : HTMLElement { the processing model, and are supported by the user agent. The possible supported tokens are alternate, + compression-dictionary, dns-prefetch, expect, icon, @@ -27256,6 +27257,7 @@ document.body.appendChild(wbr);

Keywords that are body-ok affect whether link elements are allowed in the body. The body-ok keywords are + compression-dictionary, dns-prefetch, modulepreload, pingback, @@ -27321,6 +27323,17 @@ document.body.appendChild(wbr); Gives the permalink for the nearest ancestor section. + + compression-dictionary + External Resource + not allowed + Yes + · + Specifies that the user agent should preemptively fetch and cache the + target resource as it is likely to be useful as a compression dictionary for future + fetches. RFC9842 + + dns-prefetch External Resource @@ -27742,6 +27755,94 @@ document.body.appendChild(wbr); Link Relation. RFC6596

+
Link type "compression-dictionary"
+ +

The compression-dictionary keyword may be used + with link elements. This keyword creates an external + resource link. This keyword is body-ok.

+ +

The compression-dictionary keyword indicates + that preemptively fetching and caching the specified resource + or same-site document is likely to be beneficial, as it is highly likely that the user will + be able to this resource as a compression dictionary for future + fetches. RFC9842

+ +

There is no default type for resources given by the + compression-dictionary keyword.

+ +

The appropriate times to fetch and + process this type of link are:

+ + + +

The fetch and process the linked resource algorithm for compression-dictionary links, given a + link element el, is as follows:

+ +
    +
  1. If el's href attribute's value is the + empty string, then return.

  2. + +
  3. Let options be the result of creating link options from el.

  4. + +
  5. If the state of el's crossorigin + content attribute is not set, set options's + crossorigin to + Anonymous.

  6. + +
  7. Set options's destination to + the empty string.

  8. + +
  9. Let request be the result of creating a + link request given options.

  10. + +
  11. If request is null, then return.

  12. + +
  13. Set request's initiator to + "compression-dictionary".

  14. + +
  15. +

    Let processCompressionDictionaryResponse be the following steps given a response response and null, failure, or a + byte sequence bytesOrNull:

    + +
      +
    1. If response is a network error, fire an event named error at el.

    2. + +
    3. Otherwise, fire an event named load at el.

    4. +
    +
  16. + +
  17. The user agent should fetch request, with + processResponseConsumeBody set to + processCompressionDictionaryResponse. User agents may delay the fetching of + request to prioritize other requests that are necessary for the current document.

  18. +
+ +

The process a link header steps for this type of linked resource are to do + nothing.

+ +
Link type "dns-prefetch"
@@ -156173,6 +156274,9 @@ INSERT INTERFACES HERE
[RFC8297]
An HTTP Status Code for Indicating Hints, K. Oku. IETF.
+
[RFC9842]
+
Compression Dictionary Transport, P. Meenan, Y. Weiss. IETF.
+
[SCREENORIENTATION]
Screen Orientation, M. Cáceres. W3C.
From 868e03ce5dcb3f4b99a4bbb7822d9d649a6629da Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Wed, 11 Feb 2026 10:53:47 -0500 Subject: [PATCH 2/7] Fixed CORS mode processing and http link processing --- source | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source b/source index 726164645a1..fc4e714b2ee 100644 --- a/source +++ b/source @@ -27328,7 +27328,7 @@ document.body.appendChild(wbr); External Resource not allowed Yes - · + Yes Specifies that the user agent should preemptively fetch and cache the target resource as it is likely to be useful as a compression dictionary for future fetches. RFC9842 @@ -27802,8 +27802,8 @@ document.body.appendChild(wbr);
  • Let options be the result of creating link options from el.

  • -
  • If the state of el's crossorigin - content attribute is not set, set options's +

  • If options's crossorigin + is no-CORS, set options's crossorigin to Anonymous.

  • From 25c321f9fbdd408f468852c6fb36e9f869b6a475 Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Wed, 11 Feb 2026 10:53:47 -0500 Subject: [PATCH 3/7] Fixed No CORS --- source | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source b/source index fc4e714b2ee..56202511d75 100644 --- a/source +++ b/source @@ -27803,7 +27803,7 @@ document.body.appendChild(wbr); element">creating link options from el.

  • If options's crossorigin - is no-CORS, set options's + is No CORS, set options's crossorigin to Anonymous.

  • From 763cdd84b4eeae19fc36e23dcb9fdba827697b15 Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Wed, 11 Feb 2026 10:53:47 -0500 Subject: [PATCH 4/7] Fixed link header processing --- source | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/source b/source index 56202511d75..3a3bdde570e 100644 --- a/source +++ b/source @@ -27791,17 +27791,19 @@ document.body.appendChild(wbr); removed.

    -

    The fetch and process the linked resource algorithm for compression-dictionary links, given a - link element el, is as follows:

    +

    The fetch and process the linked resource steps for this type of linked resource, + given a link element el, are to create link options from el and + to load a compression dictionary given the result and el.

    -
      -
    1. If el's href attribute's value is the - empty string, then return.

    2. +

      The process a link header step for this type of linked resource given a link processing options options are to + load a compression dictionary given options.

      -
    3. Let options be the result of creating link options from el.

    4. +

      To load a compression dictionary given a link processing options + options and optional link element el:

      +
      1. If options's crossorigin is No CORS, set options's crossorigin to @@ -27824,12 +27826,12 @@ document.body.appendChild(wbr); byte sequence bytesOrNull:

          -
        1. If response is a network error,

          If response is a network error and el is set, fire an event named error at el.

        2. -
        3. Otherwise, fire an event named load at el.

        4. +
        5. Otherwise, if el is set, fire an event + named load at el.

      2. @@ -27839,9 +27841,6 @@ document.body.appendChild(wbr); request to prioritize other requests that are necessary for the current document.

      -

      The process a link header steps for this type of linked resource are to do - nothing.

      -
      Link type "dns-prefetch"
      From c5ca0868309ca6dd427a2c60d0d05fdc9f80d8d5 Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Wed, 11 Feb 2026 10:53:48 -0500 Subject: [PATCH 5/7] Fixed algorithm scoping --- source | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source b/source index 3a3bdde570e..8e3b900a8f3 100644 --- a/source +++ b/source @@ -27791,6 +27791,7 @@ document.body.appendChild(wbr); removed.

      +

      The fetch and process the linked resource steps for this type of linked resource, given a link element el, are to create link options from el and @@ -27840,7 +27841,7 @@ document.body.appendChild(wbr); processCompressionDictionaryResponse. User agents may delay the fetching of request to prioritize other requests that are necessary for the current document.

    - +
    Link type "dns-prefetch"
    From c9b3eedd6fb0d8644d8896e9efb0643e99ce95dd Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Wed, 11 Feb 2026 10:53:48 -0500 Subject: [PATCH 6/7] Cleanup unnecessary language --- source | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/source b/source index 8e3b900a8f3..38d862e05fd 100644 --- a/source +++ b/source @@ -27786,9 +27786,8 @@ document.body.appendChild(wbr); connected is changed.

  • When the crossorigin attribute of the - link element of an external resource - link that is already browsing-context connected is set, changed, or - removed.

  • + link element of an external resource link that is already + browsing-context connected is set, changed, or removed.

    @@ -27810,9 +27809,6 @@ document.body.appendChild(wbr); crossorigin to Anonymous.

    -
  • Set options's destination to - the empty string.

  • -
  • Let request be the result of creating a link request given options.

  • From 64d7121290f021e491b6733a37ae2b12368b9bcb Mon Sep 17 00:00:00 2001 From: Patrick Meenan Date: Thu, 12 Feb 2026 11:24:36 -0500 Subject: [PATCH 7/7] Set the destination instead of initiator --- source | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source b/source index 38d862e05fd..347c7758810 100644 --- a/source +++ b/source @@ -27814,7 +27814,7 @@ document.body.appendChild(wbr);
  • If request is null, then return.

  • -
  • Set request's initiator to +

  • Set request's destination to "compression-dictionary".