From f90e9e48cf670c4d2cc10e05ffbbda8874a43b66 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 3 Jun 2026 14:39:28 +0200 Subject: [PATCH 1/8] Expose redirectCount for TAO opted-in redirect chains --- source | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source b/source index d0460f2fdd3..17a3019e991 100644 --- a/source +++ b/source @@ -2692,6 +2692,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • reserve deferred fetch quota
  • potentially free deferred fetch quota
  • is offline
  • +
  • TAO check
  • response and its @@ -113076,8 +113077,10 @@ location.href = '#foo';
  • Let redirectCount be 0 if navigationParams's response's has cross-origin redirects is - true; otherwise navigationParams's request's TAO check given navigationParams's request and navigationParams's response returns failure; otherwise + navigationParams's request's redirect count.

  • Create the navigation timing entry for document, given From cea5d2010fcd3855cab2feb65573e2fd9fefcc15 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 3 Jun 2026 22:56:04 +0200 Subject: [PATCH 2/8] Move o response timing allow passed --- source | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source b/source index 17a3019e991..2e59c7edd95 100644 --- a/source +++ b/source @@ -2692,7 +2692,6 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute

  • reserve deferred fetch quota
  • potentially free deferred fetch quota
  • is offline
  • -
  • TAO check
  • response and its @@ -113077,10 +113076,11 @@ location.href = '#foo';
  • Let redirectCount be 0 if navigationParams's response's has cross-origin redirects is - true and TAO check given navigationParams's request and navigationParams's response returns failure; otherwise - navigationParams's request's navigationParams's response's timing allow passed flag is not set; + otherwise navigationParams's request's redirect count.

  • Create the navigation timing entry for document, given From ea4485e6272e1c706b1ce8333e4984acff71dea0 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Tue, 9 Jun 2026 09:30:55 +0200 Subject: [PATCH 3/8] Move to use https://github.com/whatwg/fetch/pull/1931/ --- source | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/source b/source index 2e59c7edd95..bd3b1d69704 100644 --- a/source +++ b/source @@ -2692,6 +2692,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute

  • reserve deferred fetch quota
  • potentially free deferred fetch quota
  • is offline
  • +
  • navigation TAO check
  • response and its @@ -2710,6 +2711,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • service worker timing info
  • has-cross-origin-redirects
  • timing allow passed
  • +
  • navigation timing allow check set
  • extract content-range values @@ -113073,16 +113075,30 @@ location.href = '#foo'; info">extracting the full timing info from navigationParams's fetch controller.

  • -
  • Let redirectCount be 0 if navigationParams's response's has cross-origin redirects is - true and navigationParams's response's timing allow passed flag is not set; - otherwise navigationParams's

    Let redirectCount be navigationParams's request's redirect count.

  • +
  • +

    If navigationParams's response's + has cross-origin redirects + is true:

    + +
      +
    1. If navigationParams's request's client is not null and navigationParams's + request's referrer is "no-referrer", + then set redirectCount to 0.

    2. + +
    3. Otherwise, if navigation TAO check given + navigationParams's response and + navigationParams's origin returns + failure, then set redirectCount to 0.

    4. +
    +
  • +
  • Create the navigation timing entry for document, given fullTimingInfo, redirectCount, navigationTimingType, navigationParams's response's From 6e8842679acb10972c9e4494fc4bbde13febf930 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 24 Jun 2026 13:13:48 +0300 Subject: [PATCH 4/8] Align on the latest Fetch --- source | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source b/source index bd3b1d69704..5dab7bf77e4 100644 --- a/source +++ b/source @@ -2372,6 +2372,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute

  • XLink namespace
  • XML namespace
  • XMLNS namespace
  • +
  • failure
  • @@ -2711,7 +2712,6 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • service worker timing info
  • has-cross-origin-redirects
  • timing allow passed
  • -
  • navigation timing allow check set
  • extract content-range values @@ -113095,7 +113095,7 @@ location.href = '#foo';
  • Otherwise, if navigation TAO check given navigationParams's response and navigationParams's origin returns - failure, then set redirectCount to 0.

  • + failure, then set redirectCount to 0.

    From bd4d450205ad83d8cafa3ebf066c00b1ceedc979 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 24 Jun 2026 13:16:31 +0300 Subject: [PATCH 5/8] Link fix --- source | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source b/source index 5dab7bf77e4..9aafbdd00f3 100644 --- a/source +++ b/source @@ -2693,7 +2693,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
  • reserve deferred fetch quota
  • potentially free deferred fetch quota
  • is offline
  • -
  • navigation TAO check
  • +
  • navigation TAO check
  • response and its From f417f097c22ddf398f0f474ee078a7a7d2b8a0f3 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 24 Jun 2026 13:33:46 +0300 Subject: [PATCH 6/8] Invert logic --- source | 48 +++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/source b/source index 9aafbdd00f3..5cbbe9f1bf8 100644 --- a/source +++ b/source @@ -113075,28 +113075,38 @@ location.href = '#foo'; info">extracting the full timing info from navigationParams's fetch controller.

  • -
  • Let redirectCount be navigationParams's request's redirect count.

  • +
  • Let redirectCount be 0.

  • -

    If navigationParams's response's - has cross-origin redirects - is true:

    +

    If any of the following conditions hold, then set redirectCount to + navigationParams's request's + redirect count:

    -
      -
    1. If navigationParams's request's client is not null and navigationParams's - request's referrer is "no-referrer", - then set redirectCount to 0.

    2. - -
    3. Otherwise, if navigation TAO check given - navigationParams's response and - navigationParams's origin returns - failure, then set redirectCount to 0.

    4. -
    +
      +
    • navigationParams's response's has cross-origin redirects is + false.

    • + +
    • +

      All of the following are true:

      + +
        +
      • navigationParams's request's client is null, or navigationParams's + request's referrer is not "no-referrer".

      • + +
      • Navigation TAO check given + navigationParams's response and navigationParams's + origin does not return + failure.

      • +
      +
    • +
  • Create the navigation timing entry for document, given From e11110fec2079dd80ce9b87f37632f453c3ad3a9 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 24 Jun 2026 15:12:29 +0300 Subject: [PATCH 7/8] Remove nesting level --- source | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/source b/source index 5cbbe9f1bf8..fcebfcf8e09 100644 --- a/source +++ b/source @@ -113078,35 +113078,28 @@ location.href = '#foo';

  • Let redirectCount be 0.

  • -

    If any of the following conditions hold, then set redirectCount to - navigationParams's request's - redirect count:

    +

    If navigationParams's response's has cross-origin redirects is + false, or all of the following are true:

    • navigationParams's response's has cross-origin redirects is - false.

    • - -
    • -

      All of the following are true:

      - -
        -
      • navigationParams's request's client is null, or navigationParams's - request's referrer is not "no-referrer".

      • - -
      • Navigation TAO check given - navigationParams's response and navigationParams's - origin does not return - failure.

      • -
      -
    • + data-x="navigation-params-request">request's client is null, or navigationParams's + request's referrer is not "no-referrer", and

      + +
    • navigation TAO check given + navigationParams's response + and navigationParams's origin + does not return failure,

    + +

    then set redirectCount to navigationParams's request's redirect count.

  • Create the navigation timing entry for document, given From 8b455637a16f8e369aee4fb6a3be16dcc2863e10 Mon Sep 17 00:00:00 2001 From: Yoav Weiss Date: Wed, 24 Jun 2026 15:20:15 +0300 Subject: [PATCH 8/8] success! --- source | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source b/source index fcebfcf8e09..46ad8842459 100644 --- a/source +++ b/source @@ -2372,7 +2372,7 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute

  • XLink namespace
  • XML namespace
  • XMLNS namespace
  • -
  • failure
  • +
  • success
  • @@ -113094,7 +113094,7 @@ location.href = '#foo';
  • navigation TAO check given navigationParams's response and navigationParams's origin - does not return failure,

  • + returns success,

    then set redirectCount to navigationParams's