CompressionDictionaries - ensure encodedBodySize survives the cache [chromium/src : main]

0 views
Skip to first unread message

Yoav Weiss (@Shopify) (Gerrit)

unread,
Mar 2, 2026, 4:08:52 AM (yesterday) Mar 2
to AyeAye, Patrick Meenan, Maks Orlovich, Chromium LUCI CQ, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org
Attention needed from Maks Orlovich and Patrick Meenan

Yoav Weiss (@Shopify) added 2 comments

Patchset-level comments
File-level comment, Patchset 12:
Maks Orlovich . unresolved

So I am not sure I'll be able to review this properly today (trying to reproduce an important crasher), but I am worried that it seems like you're re-writing stream 0 at every chunk, which may be particularly expensive on Windows, but is a non-trivial amount of work to serialize on any platform.

At the very least, it should probably only happen when this compression mode is on, as other kinds of decompression happen after cache (Also this comment likely needs refinement:
https://source.chromium.org/chromium/chromium/src/+/main:net/url_request/url_request.cc;drc=56c66e417c83e2096a4e4e8a5c4ab7bbd525c9f3;l=288)

Best may be to defer it until the entry is about to be closed; that will mean it's wrong for truncated entries, but that's probably OK if it fails cleanly.

This usage of size also looks like it has a chance of going very wrong:
https://source.chromium.org/chromium/chromium/src/+/main:services/network/url_loader.cc;drc=56c66e417c83e2096a4e4e8a5c4ab7bbd525c9f3;l=2683
...though I don't understand what it's doing with gzip, either.
Yoav Weiss (@Shopify)

Best may be to defer it until the entry is about to be closed; that will mean it's wrong for truncated entries, but that's probably OK if it fails cleanly.

How often should we expect truncated entries? What would be web exposed in those cases?

Maks Orlovich

Hmm, so they happen when we get interrupted by a network error or when the data is too short (the case you changed!), and the entry looks like it may be resumable by a range request (do dictionary-compressed entries ever do?). I don't know how frequent that is in practice. If that happens then the next time we fetch the resource we will try to resume fetch using range stuff.

Yoav Weiss (@Shopify)

I think I tackled it, but I'd appreciate a critical view 😊

File net/http/http_cache_writers.cc
Line 552, Patchset 12: !response_info->did_use_shared_dictionary) {
Maks Orlovich . resolved

This seems like a separate bugfix?

Yoav Weiss (@Shopify)

Yeah, I'll spin it off

Yoav Weiss (@Shopify)

Done

Open in Gerrit

Related details

Attention is currently required from:
  • Maks Orlovich
  • Patrick Meenan
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
Gerrit-Change-Number: 7613348
Gerrit-PatchSet: 14
Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Attention: Patrick Meenan <pme...@chromium.org>
Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
Gerrit-Comment-Date: Mon, 02 Mar 2026 09:08:39 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Comment-In-Reply-To: Maks Orlovich <morl...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Maks Orlovich (Gerrit)

unread,
Mar 2, 2026, 4:06:23 PM (20 hours ago) Mar 2
to Yoav Weiss (@Shopify), AyeAye, Patrick Meenan, Chromium LUCI CQ, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org
Attention needed from Yoav Weiss (@Shopify)

Maks Orlovich voted and added 3 comments

Votes added by Maks Orlovich

Code-Review+1

3 comments

Commit Message
Line 17, Patchset 16 (Latest):There was also a case (discovered while testing this) where when DCB/DCZ
resulted in larger assets (e.g. when the decoded asset is very small),
the decoded asset was discarded when fetched from the cache. This CL
fixes that as well, and adds test that verify both assets that deflate
and inflate as part of the compression process.
Maks Orlovich . unresolved

No longer in this CL, I think? (Thanks)

File content/browser/network/shared_dictionary_browsertest.cc
Line 757, Patchset 16 (Latest): bool use_large = query.find("cacheable") != std::string::npos;
Maks Orlovich . unresolved

I think this may be better as a separate knob even if you change them together, as I think it would make the use code easier to follow.

File net/http/http_cache_unittest.cc
Line 15435, Patchset 16 (Latest):// body size should still be available via GetReceivedBodyBytes().
Maks Orlovich . unresolved

This comment looks out-of-date now?

Open in Gerrit

Related details

Attention is currently required from:
  • Yoav Weiss (@Shopify)
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
Gerrit-Change-Number: 7613348
Gerrit-PatchSet: 16
Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Comment-Date: Mon, 02 Mar 2026 21:06:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Yoav Weiss (@Shopify) (Gerrit)

unread,
8:47 AM (3 hours ago) 8:47 AM
to Maks Orlovich, AyeAye, Patrick Meenan, Chromium LUCI CQ, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org

Yoav Weiss (@Shopify) added 4 comments

Patchset-level comments
File-level comment, Patchset 17:
Yoav Weiss (@Shopify) . resolved

Thanks for reviewing!!

Commit Message
Line 17, Patchset 16:There was also a case (discovered while testing this) where when DCB/DCZ

resulted in larger assets (e.g. when the decoded asset is very small),
the decoded asset was discarded when fetched from the cache. This CL
fixes that as well, and adds test that verify both assets that deflate
and inflate as part of the compression process.
Maks Orlovich . resolved

No longer in this CL, I think? (Thanks)

Yoav Weiss (@Shopify)

Done

File content/browser/network/shared_dictionary_browsertest.cc
Line 757, Patchset 16: bool use_large = query.find("cacheable") != std::string::npos;
Maks Orlovich . resolved

I think this may be better as a separate knob even if you change them together, as I think it would make the use code easier to follow.

Yoav Weiss (@Shopify)

Done

File net/http/http_cache_unittest.cc
Line 15435, Patchset 16:// body size should still be available via GetReceivedBodyBytes().
Maks Orlovich . resolved

This comment looks out-of-date now?

Yoav Weiss (@Shopify)

Done

Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
Gerrit-Change-Number: 7613348
Gerrit-PatchSet: 17
Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Comment-Date: Tue, 03 Mar 2026 13:47:26 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Maks Orlovich <morl...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Yoav Weiss (@Shopify) (Gerrit)

unread,
8:47 AM (3 hours ago) 8:47 AM
to Maks Orlovich, AyeAye, Patrick Meenan, Chromium LUCI CQ, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org

Yoav Weiss (@Shopify) added 1 comment

Patchset-level comments
File-level comment, Patchset 12:
Maks Orlovich . resolved

So I am not sure I'll be able to review this properly today (trying to reproduce an important crasher), but I am worried that it seems like you're re-writing stream 0 at every chunk, which may be particularly expensive on Windows, but is a non-trivial amount of work to serialize on any platform.

At the very least, it should probably only happen when this compression mode is on, as other kinds of decompression happen after cache (Also this comment likely needs refinement:
https://source.chromium.org/chromium/chromium/src/+/main:net/url_request/url_request.cc;drc=56c66e417c83e2096a4e4e8a5c4ab7bbd525c9f3;l=288)

Best may be to defer it until the entry is about to be closed; that will mean it's wrong for truncated entries, but that's probably OK if it fails cleanly.

This usage of size also looks like it has a chance of going very wrong:
https://source.chromium.org/chromium/chromium/src/+/main:services/network/url_loader.cc;drc=56c66e417c83e2096a4e4e8a5c4ab7bbd525c9f3;l=2683
...though I don't understand what it's doing with gzip, either.
Yoav Weiss (@Shopify)

Best may be to defer it until the entry is about to be closed; that will mean it's wrong for truncated entries, but that's probably OK if it fails cleanly.

How often should we expect truncated entries? What would be web exposed in those cases?

Maks Orlovich

Hmm, so they happen when we get interrupted by a network error or when the data is too short (the case you changed!), and the entry looks like it may be resumable by a range request (do dictionary-compressed entries ever do?). I don't know how frequent that is in practice. If that happens then the next time we fetch the resource we will try to resume fetch using range stuff.

Yoav Weiss (@Shopify)

I think I tackled it, but I'd appreciate a critical view 😊

Yoav Weiss (@Shopify)

Done

Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
    Gerrit-Change-Number: 7613348
    Gerrit-PatchSet: 18
    Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
    Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
    Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Mar 2026 13:47:42 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    open
    diffy

    Yoav Weiss (@Shopify) (Gerrit)

    unread,
    8:49 AM (3 hours ago) 8:49 AM
    to Maks Orlovich, AyeAye, Patrick Meenan, Chromium LUCI CQ, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org

    Yoav Weiss (@Shopify) voted Commit-Queue+2

    Commit-Queue+2
    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
    Gerrit-Change-Number: 7613348
    Gerrit-PatchSet: 18
    Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
    Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
    Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Mar 2026 13:49:22 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Blink W3C Test Autoroller (Gerrit)

    unread,
    9:04 AM (3 hours ago) 9:04 AM
    to Yoav Weiss (@Shopify), Maks Orlovich, AyeAye, Patrick Meenan, Chromium LUCI CQ, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org

    Message from Blink W3C Test Autoroller

    Exportable changes to web-platform-tests were detected in this CL and a pull request in the upstream repo has been made: https://github.com/web-platform-tests/wpt/pull/58223.

    When this CL lands, the bot will automatically merge the PR on GitHub if the required GitHub checks pass; otherwise, ecosystem-infra@ team will triage the failures and may contact you.

    WPT Export docs:
    https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md#Automatic-export-process

    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
    Gerrit-Change-Number: 7613348
    Gerrit-PatchSet: 18
    Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
    Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
    Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-CC: Blink W3C Test Autoroller <blink-w3c-te...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Mar 2026 14:04:14 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    satisfied_requirement
    open
    diffy

    Chromium LUCI CQ (Gerrit)

    unread,
    9:40 AM (2 hours ago) 9:40 AM
    to Yoav Weiss (@Shopify), Blink W3C Test Autoroller, Maks Orlovich, AyeAye, Patrick Meenan, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org

    Chromium LUCI CQ submitted the change with unreviewed changes

    Unreviewed changes

    16 is the latest approved patch-set.
    The change was submitted with unreviewed changes in the following files:

    ```
    The name of the file: net/http/http_cache_unittest.cc
    Insertions: 4, Deletions: 3.

    @@ -15430,9 +15430,10 @@
    }

    // Tests that encoded body size is preserved across cache reads.
    -// When a response is fetched from the network, the encoded (compressed) body
    -// size is recorded. When the same response is served from cache, the encoded
    -// body size should still be available via GetReceivedBodyBytes().
    +// When a shared dictionary compressed response is fetched from the network,
    +// the encoded (on-the-wire) body size is stored in the cached response info.
    +// When the same response is later served from cache, the encoded body size
    +// should still be available via HttpResponseInfo::encoded_body_size.
    TEST_F(HttpCacheTest, EncodedBodySizePreservedFromCache) {
    MockHttpCache cache;

    ```
    ```
    The name of the file: content/browser/network/shared_dictionary_browsertest.cc
    Insertions: 13, Deletions: 11.

    @@ -754,7 +754,7 @@
    if (dict_hash) {
    if (*dict_hash == kExpectedDictionaryHashBase64) {
    if (HasSharedDictionaryAcceptEncoding(request.headers)) {
    - bool use_large = query.find("cacheable") != std::string::npos;
    + bool use_large = query.find("large") != std::string::npos;
    response->AddCustomHeader(
    "content-encoding",
    net::shared_dictionary::kSharedZstdContentEncodingName);
    @@ -1962,9 +1962,10 @@

    // First fetch: from network with dictionary compression.
    // transferSize should be > 0 (network fetch).
    - EXPECT_EQ(expected_network_sizes,
    - EvalJs(GetTargetShell()->web_contents()->GetPrimaryMainFrame(),
    - JsReplace(R"(
    + EXPECT_EQ(
    + expected_network_sizes,
    + EvalJs(GetTargetShell()->web_contents()->GetPrimaryMainFrame(),
    + JsReplace(R"(
    (async () => {
    const targetUrl = $1;
    const promise = new Promise((resolve) => {
    @@ -1984,15 +1985,16 @@
    ', ' + (entry.transferSize > 0)
    );
    )",
    - GetURL("/shared_dictionary/path/test?cacheable")))
    - .ExtractString());
    + GetURL("/shared_dictionary/path/test?cacheable&large")))
    + .ExtractString());

    // Second fetch: should come from disk cache. The encodedBodySize should
    // still reflect the original dictionary-compressed size, not the
    // decompressed size stored in cache. transferSize should be 0 (cache hit).
    - EXPECT_EQ(expected_cached_sizes,
    - EvalJs(GetTargetShell()->web_contents()->GetPrimaryMainFrame(),
    - JsReplace(R"(
    + EXPECT_EQ(
    + expected_cached_sizes,
    + EvalJs(GetTargetShell()->web_contents()->GetPrimaryMainFrame(),
    + JsReplace(R"(
    (async () => {
    const targetUrl = $1;
    performance.clearResourceTimings();
    @@ -2013,8 +2015,8 @@
    ', ' + entry.transferSize
    );
    )",
    - GetURL("/shared_dictionary/path/test?cacheable")))
    - .ExtractString());
    + GetURL("/shared_dictionary/path/test?cacheable&large")))
    + .ExtractString());
    }

    IN_PROC_BROWSER_TEST_P(SharedDictionaryBrowserTest,
    ```

    Change information

    Commit message:
    CompressionDictionaries - ensure encodedBodySize survives the cache

    DCB/DCZ assets are being decompressed before being cached, to avoid
    having to rely on their dictionary when retrieved from the cache.
    This creates a web-exposed issue with encodedBodySize, where it's
    equal to the decodedBodySize in those cases.

    This CL fixes that by storing the original encoded body size as metadata
    on the cached asset, and setting it upon retrieval.
    Bug: 457323840
    Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
    Commit-Queue: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Reviewed-by: Maks Orlovich <morl...@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#1593198}
    Files:
    • M content/browser/network/shared_dictionary_browsertest.cc
    • M net/http/http_cache_unittest.cc
    • M net/http/http_cache_writers.cc
    • M net/http/http_cache_writers.h
    • M net/http/http_response_info.cc
    • M net/http/http_response_info.h
    • M net/http/http_response_info_unittest.cc
    • M net/http/http_transaction_test_util.cc
    • M net/http/http_transaction_test_util.h
    • M net/url_request/url_request.cc
    • M services/network/url_loader.cc
    • M third_party/blink/web_tests/external/wpt/fetch/compression-dictionary/resources/compressed-data.py
    • A third_party/blink/web_tests/external/wpt/resource-timing/encoded-body-size-cached.https.html
    Change size: L
    Delta: 13 files changed, 498 insertions(+), 10 deletions(-)
    Branch: refs/heads/main
    Submit Requirements:
    • requirement satisfiedCode-Review: +1 by Maks Orlovich
    Open in Gerrit
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: merged
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
    Gerrit-Change-Number: 7613348
    Gerrit-PatchSet: 19
    Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
    Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
    Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
    Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-CC: Blink W3C Test Autoroller <blink-w3c-te...@chromium.org>
    open
    diffy
    satisfied_requirement

    Blink W3C Test Autoroller (Gerrit)

    unread,
    11:07 AM (1 hour ago) 11:07 AM
    to Chromium LUCI CQ, Yoav Weiss (@Shopify), Maks Orlovich, AyeAye, Patrick Meenan, chromium...@chromium.org, network-ser...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, gavin...@chromium.org, net-r...@chromium.org

    Message from Blink W3C Test Autoroller

    The WPT PR for this CL has been merged upstream! https://github.com/web-platform-tests/wpt/pull/58223

    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I5820cb0cc36fa06b746228598e274b1410c380e7
    Gerrit-Change-Number: 7613348
    Gerrit-PatchSet: 19
    Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
    Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
    Gerrit-Reviewer: Patrick Meenan <pme...@chromium.org>
    Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-CC: Blink W3C Test Autoroller <blink-w3c-te...@chromium.org>
    Gerrit-Comment-Date: Tue, 03 Mar 2026 16:07:23 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    satisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages