From 394a74fe4e129bd17b0fee47ae88feac868804c7 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 19 Aug 2025 13:42:25 +0200 Subject: [PATCH 01/13] WebDriver BiDi emulated user-agent Support for user-agent emulations. --- fetch.bs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/fetch.bs b/fetch.bs index f00f3c966..44c31709a 100755 --- a/fetch.bs +++ b/fetch.bs @@ -5986,6 +5986,21 @@ run these steps: the token prefetch) in httpRequest's header list. +
  • +

    If httpRequest's header list does not + contain `User-Agent`, then: + +

      +
    1. Let userAgent be the result of running the [=WebDriver BiDi emulated + User-Agent=] with httpRequest's client. + +

    2. If userAgent is null, set userAgent to default + `User-Agent` value. + +

    3. Append (`User-Agent`, userAgent) to + httpRequest's header list. +

    +
  • If httpRequest's header list does not contain `User-Agent`, then user agents should append (`User-Agent`, From 23e14f01dc27f49f1efb4f1e8cea83111b9621c1 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 13:53:52 +0200 Subject: [PATCH 02/13] fix --- fetch.bs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/fetch.bs b/fetch.bs index 44c31709a..fdb21aa84 100755 --- a/fetch.bs +++ b/fetch.bs @@ -6001,12 +6001,6 @@ run these steps: httpRequest's header list. -

  • If httpRequest's header list - does not contain `User-Agent`, then user agents should - append (`User-Agent`, - default `User-Agent` value) to httpRequest's - header list. -

  • If httpRequest's cache mode is "default" and httpRequest's header list contains `If-Modified-Since`, From 3dc92a8ec29f35cff61229ba3614f5a8a679a321 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 13:58:03 +0200 Subject: [PATCH 03/13] link --- fetch.bs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fetch.bs b/fetch.bs index fdb21aa84..3db023167 100755 --- a/fetch.bs +++ b/fetch.bs @@ -5991,8 +5991,8 @@ run these steps: contain `User-Agent`, then:

      -
    1. Let userAgent be the result of running the [=WebDriver BiDi emulated - User-Agent=] with httpRequest's client. +

    2. Let userAgent be the result of running the WebDriver BiDi emulated + User-Agent with httpRequest's client.

    3. If userAgent is null, set userAgent to default `User-Agent` value. From 2b52d697a5e288f301a4e14722b974581f69bc6d Mon Sep 17 00:00:00 2001 From: Maksim Sadym <69349599+sadym-chromium@users.noreply.github.com> Date: Tue, 16 Sep 2025 14:09:10 +0200 Subject: [PATCH 04/13] Update fetch.bs Co-authored-by: Anne van Kesteren --- fetch.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fetch.bs b/fetch.bs index 3db023167..80f877c60 100755 --- a/fetch.bs +++ b/fetch.bs @@ -5988,7 +5988,7 @@ run these steps:

    4. If httpRequest's header list does not - contain `User-Agent`, then: + contain `User-Agent`:

      1. Let userAgent be the result of running the WebDriver BiDi emulated From 01d42b1e802e7a853a121a80c41c68a44886055b Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 14:15:25 +0200 Subject: [PATCH 05/13] fixes --- fetch.bs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/fetch.bs b/fetch.bs index 80f877c60..ed149661a 100755 --- a/fetch.bs +++ b/fetch.bs @@ -5987,15 +5987,16 @@ run these steps: httpRequest's header list.

      2. -

        If httpRequest's header list does not - contain `User-Agent`: +

        If httpRequest's header list does not contain `User-Agent`:

          -
        1. Let userAgent be the result of running the WebDriver BiDi emulated - User-Agent with httpRequest's client. +

        2. Let userAgent be the result of running the + WebDriver BiDi emulated User-Agent with httpRequest's + client. -

        3. If userAgent is null, set userAgent to default - `User-Agent` value. +

        4. If userAgent is null, then set userAgent to + default `User-Agent` value.

        5. Append (`User-Agent`, userAgent) to httpRequest's header list. From 1c19de84cd06142ddd0617cd4ab7e1a3b1c96c8b Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 14:21:40 +0200 Subject: [PATCH 06/13] isomorphic encoded userAgent --- fetch.bs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fetch.bs b/fetch.bs index ed149661a..44f8774b5 100755 --- a/fetch.bs +++ b/fetch.bs @@ -5995,8 +5995,10 @@ run these steps: WebDriver BiDi emulated User-Agent with httpRequest's client. -

        6. If userAgent is null, then set userAgent to - default `User-Agent` value. +

        7. If userAgent is not null, then set userAgent to + isomorphic encoded userAgent. + +

        8. Otherwise, set userAgent to default `User-Agent` value.

        9. Append (`User-Agent`, userAgent) to httpRequest's header list. From b677da008b708b6ec8365301caf6b4f5916e0747 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 14:52:56 +0200 Subject: [PATCH 07/13] environment default `User-Agent` value # Conflicts: # fetch.bs --- fetch.bs | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/fetch.bs b/fetch.bs index 44f8774b5..a8d7e87d6 100755 --- a/fetch.bs +++ b/fetch.bs @@ -1420,6 +1420,24 @@ downloads. This format of range header value can be set using add a range hea have this value start with `Mozilla/5.0 (` and be generally modeled after other web browsers. +

          +

          To get the environment default `User-Agent` value +for an environment settings object environment: + +

            +
          1. Let userAgent be the WebDriver BiDi emulated User-Agent for + environment. + +

          2. If userAgent is not null, then set userAgent to + isomorphic encoded userAgent. + +

          3. Otherwise, set userAgent to default `User-Agent` value. + +

          4. Append (`User-Agent`, userAgent) to + httpRequest's header list. +

          +
          +

          The document `Accept` header value is `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`. @@ -5988,17 +6006,12 @@ run these steps:

        10. If httpRequest's header list does not contain `User-Agent`: + for="header list">does not contain `User-Agent`, then user agents should run + the following steps:

            -
          1. Let userAgent be the result of running the - WebDriver BiDi emulated User-Agent with httpRequest's - client. - -

          2. If userAgent is not null, then set userAgent to - isomorphic encoded userAgent. - -

          3. Otherwise, set userAgent to default `User-Agent` value. +

          4. Let userAgent be the httpRequest's client's + environment default `User-Agent` value.

          5. Append (`User-Agent`, userAgent) to httpRequest's header list. From 0ee1d93da5538eb07538efa3578aa74c87b12303 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 15:00:50 +0200 Subject: [PATCH 08/13] rename --- fetch.bs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fetch.bs b/fetch.bs index a8d7e87d6..724d916a0 100755 --- a/fetch.bs +++ b/fetch.bs @@ -1421,8 +1421,8 @@ have this value start with `Mozilla/5.0 (` and be generally modeled browsers.

            -

            To get the environment default `User-Agent` value -for an environment settings object environment: +

            To get the environment settings object environment's +environment default `User-Agent` value:

            1. Let userAgent be the WebDriver BiDi emulated User-Agent for From 2b201e0f19801ba1666a1bb17cd228a256913876 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 15:21:27 +0200 Subject: [PATCH 09/13] fix --- fetch.bs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fetch.bs b/fetch.bs index 724d916a0..563eddbe4 100755 --- a/fetch.bs +++ b/fetch.bs @@ -1428,13 +1428,10 @@ browsers.

            2. Let userAgent be the WebDriver BiDi emulated User-Agent for environment. -

            3. If userAgent is not null, then set userAgent to - isomorphic encoded userAgent. +

            4. If userAgent is not null, then return isomorphic encoded + userAgent. -

            5. Otherwise, set userAgent to default `User-Agent` value. - -

            6. Append (`User-Agent`, userAgent) to - httpRequest's header list. +

            7. Return default `User-Agent` value.

            From 4076b5974d2bf902696e0b7b5db88524c88b8c8f Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 15:25:56 +0200 Subject: [PATCH 10/13] default-user-agent-value accepts environment settings object --- fetch.bs | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/fetch.bs b/fetch.bs index 563eddbe4..435efb910 100755 --- a/fetch.bs +++ b/fetch.bs @@ -1412,17 +1412,9 @@ downloads. This format of range header value can be set using add a range hea
            -

            A default `User-Agent` value is an -implementation-defined header value for the `User-Agent` -header. - -

            For unfortunate web compatibility reasons, web browsers are strongly encouraged to -have this value start with `Mozilla/5.0 (` and be generally modeled after other web -browsers. -

            To get the environment settings object environment's -environment default `User-Agent` value: +default `User-Agent` value:

            1. Let userAgent be the WebDriver BiDi emulated User-Agent for @@ -1431,7 +1423,10 @@ browsers.

            2. If userAgent is not null, then return isomorphic encoded userAgent. -

            3. Return default `User-Agent` value. +

            4. Return an implementation-defined header value for the + `User-Agent` header. For unfortunate web compatibility reasons, web + browsers are strongly encouraged to have this value start with `Mozilla/5.0 (` and be + generally modeled after other web browsers.

            @@ -6001,18 +5996,12 @@ run these steps: the token prefetch) in httpRequest's header list. -
          6. -

            If httpRequest's header list does not contain `User-Agent`, then user agents should run - the following steps: - -

              -
            1. Let userAgent be the httpRequest's client's - environment default `User-Agent` value. - -

            2. Append (`User-Agent`, userAgent) to - httpRequest's header list. -

            +
          7. If httpRequest's header list + does not contain `User-Agent`, then user agents should + append (`User-Agent`, + httpRequest's client's + default `User-Agent` value) to httpRequest's + header list.

          8. If httpRequest's cache mode is "default" and httpRequest's header list contains From f47b095748aae794e9b964f582e36595f09991a9 Mon Sep 17 00:00:00 2001 From: Maksim Sadym Date: Tue, 16 Sep 2025 15:43:25 +0200 Subject: [PATCH 11/13] Revert "default-user-agent-value accepts environment settings object" This reverts commit 4076b5974d2bf902696e0b7b5db88524c88b8c8f. --- fetch.bs | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/fetch.bs b/fetch.bs index 435efb910..563eddbe4 100755 --- a/fetch.bs +++ b/fetch.bs @@ -1412,9 +1412,17 @@ downloads. This format of range header value can be set using add a range hea


            +

            A default `User-Agent` value is an +implementation-defined header value for the `User-Agent` +header. + +

            For unfortunate web compatibility reasons, web browsers are strongly encouraged to +have this value start with `Mozilla/5.0 (` and be generally modeled after other web +browsers. +

            To get the environment settings object environment's -default `User-Agent` value: +environment default `User-Agent` value:

            1. Let userAgent be the WebDriver BiDi emulated User-Agent for @@ -1423,10 +1431,7 @@ downloads. This format of range header value can be set using add a range hea

            2. If userAgent is not null, then return isomorphic encoded userAgent. -

            3. Return an implementation-defined header value for the - `User-Agent` header. For unfortunate web compatibility reasons, web - browsers are strongly encouraged to have this value start with `Mozilla/5.0 (` and be - generally modeled after other web browsers. +

            4. Return default `User-Agent` value.

            @@ -5996,12 +6001,18 @@ run these steps: the token prefetch) in httpRequest's header list. -
          9. If httpRequest's header list - does not contain `User-Agent`, then user agents should - append (`User-Agent`, - httpRequest's client's - default `User-Agent` value) to httpRequest's - header list. +

          10. +

            If httpRequest's header list does not contain `User-Agent`, then user agents should run + the following steps: + +

              +
            1. Let userAgent be the httpRequest's client's + environment default `User-Agent` value. + +

            2. Append (`User-Agent`, userAgent) to + httpRequest's header list. +

          11. If httpRequest's cache mode is "default" and httpRequest's header list contains From b72fa19f5ab09b9e991a00da4de10ee397bc28fe Mon Sep 17 00:00:00 2001 From: Maksim Sadym <69349599+sadym-chromium@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:44:13 +0200 Subject: [PATCH 12/13] Update fetch.bs Co-authored-by: Anne van Kesteren --- fetch.bs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fetch.bs b/fetch.bs index 563eddbe4..7d0807d21 100755 --- a/fetch.bs +++ b/fetch.bs @@ -1422,16 +1422,16 @@ browsers.

            To get the environment settings object environment's -environment default `User-Agent` value: +environment default `User-Agent` value:

            1. Let userAgent be the WebDriver BiDi emulated User-Agent for environment. -

            2. If userAgent is not null, then return isomorphic encoded - userAgent. +

            3. If userAgent is non-null, then return userAgent, + isomorphic encoded. -

            4. Return default `User-Agent` value. +

            5. Return the default `User-Agent` value.

            From 7a21971a277ee5091af1f080b032fca6ae84fdbe Mon Sep 17 00:00:00 2001 From: Maksim Sadym <69349599+sadym-chromium@users.noreply.github.com> Date: Tue, 16 Sep 2025 15:44:20 +0200 Subject: [PATCH 13/13] Update fetch.bs Co-authored-by: Anne van Kesteren --- fetch.bs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fetch.bs b/fetch.bs index 7d0807d21..9ff99624f 100755 --- a/fetch.bs +++ b/fetch.bs @@ -6003,11 +6003,10 @@ run these steps:
          12. If httpRequest's header list does not contain `User-Agent`, then user agents should run - the following steps: + for="header list">does not contain `User-Agent`, then user agents should:

              -
            1. Let userAgent be the httpRequest's client's +

            2. Let userAgent be httpRequest's client's environment default `User-Agent` value.

            3. Append (`User-Agent`, userAgent) to