Remove many unnecessary copies/allocs in SiteEngagement{Score,Service} [chromium/src : main]

0 views
Skip to first unread message

Charlie Harrison (Gerrit)

unread,
Sep 8, 2025, 3:06:03 PM (13 days ago) Sep 8
to Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
Attention needed from Joe DeBlasio

Charlie Harrison voted and added 1 comment

Votes added by Charlie Harrison

Commit-Queue+1

1 comment

Patchset-level comments
File-level comment, Patchset 8 (Latest):
Charlie Harrison . resolved

Joe: WDYT about this patch?

Open in Gerrit

Related details

Attention is currently required from:
  • Joe DeBlasio
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
Gerrit-Change-Number: 6921629
Gerrit-PatchSet: 8
Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
Gerrit-Attention: Joe DeBlasio <jdeb...@chromium.org>
Gerrit-Comment-Date: Mon, 08 Sep 2025 19:05:53 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Joe DeBlasio (Gerrit)

unread,
Sep 8, 2025, 3:21:57 PM (13 days ago) Sep 8
to Charlie Harrison, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
Attention needed from Charlie Harrison

Joe DeBlasio voted and added 1 comment

Votes added by Joe DeBlasio

Code-Review+1

1 comment

Patchset-level comments
Joe DeBlasio . resolved

Seems exceptionally reasonable. Thank you. LGTM.

Open in Gerrit

Related details

Attention is currently required from:
  • Charlie Harrison
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement satisfiedCode-Review
    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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
    Gerrit-Change-Number: 6921629
    Gerrit-PatchSet: 8
    Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
    Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
    Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
    Gerrit-Attention: Charlie Harrison <cshar...@chromium.org>
    Gerrit-Comment-Date: Mon, 08 Sep 2025 19:21:45 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Charlie Harrison (Gerrit)

    unread,
    Sep 8, 2025, 3:27:39 PM (13 days ago) Sep 8
    to Martin Šrámek, Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
    Attention needed from Martin Šrámek

    Charlie Harrison added 1 comment

    Patchset-level comments
    Charlie Harrison . resolved

    Martin, would you mind reviewing site_engagement_service.cc from WebsiteSettings POV? Do you suggest anything better than the DCHECK approach?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Martin Šrámek
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement satisfiedCode-Review
    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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
    Gerrit-Change-Number: 6921629
    Gerrit-PatchSet: 8
    Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
    Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
    Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
    Gerrit-Reviewer: Martin Šrámek <msr...@chromium.org>
    Gerrit-Attention: Martin Šrámek <msr...@chromium.org>
    Gerrit-Comment-Date: Mon, 08 Sep 2025 19:27:29 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Martin Šrámek (Gerrit)

    unread,
    Sep 8, 2025, 5:39:09 PM (13 days ago) Sep 8
    to Charlie Harrison, Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
    Attention needed from Charlie Harrison

    Martin Šrámek added 8 comments

    Patchset-level comments
    Martin Šrámek . resolved

    I added some suggestions about how we can validate various invariants.

    It's on my wishlist (and I've filed a bug for this), that HostContentSettingsMap should have more ergonomic APIs to work with origin-only settings, so that one doesn't have to make (and DCHECK) all these assumptions. Unfortunately, we still don't have it - so we have to call the clumsier APIs that work with ContentSettingsPattern and then DCHECK that the patterns are as we expect...

    File components/site_engagement/content/site_engagement_service.cc
    Line 91, Patchset 8 (Latest):bool PatternMatchesUrlSet(const ContentSettingsPattern& pattern,
    Martin Šrámek . unresolved

    "PatternMatches" sounds like it refers to `ContentSettingsPattern::Matches()` which however checks {scheme, host, subdomain, port, path (file urls only)} for exact or wildcard match.

    This only matches the scheme. How about "PatternSchemeMatchesUrlSet" or so?

    We're also not expecting wildcard schemes in the pattern - DCHECK that the pattern `MatchesSingleOrigin()`?

    Line 113, Patchset 8 (Latest): ContentSettingsForOneType sites =
    Martin Šrámek . unresolved

    Why the rename?

    Site engagement really stores origins, and this seems useful for the readability of the code below.

    (Especially since in other places in Chrome, we use the term "site" to refer to something like eTLD+1. Though of course, having this entire concept named site engagement doesn't help with clarity.)

    Line 122, Patchset 8 (Latest): // provider other than PrefProvider writes to this database.
    Martin Šrámek . unresolved

    We can also DCHECK this.

    `ContentSettingsForOneType` is just a vector of `ContentSettingsPatternSource`, where the `source` attribute tells you which provider the setting came from.

    And I think technically there is one entry from the default provdier.

    So we can do `DHECK(std::find_if_not(sites.begin(), sites.end(), [](const auto& entry) { return entry.source == kPrefProvider || entry.source == kDefaultProvider; }) == sites.end()`.

    Line 128, Patchset 8 (Latest): absl::flat_hash_set<std::string> patterns_to_dedupe_;
    Martin Šrámek . unresolved

    style nit: not an attribute, so no need to end it with `_`.

    Line 133, Patchset 8 (Latest): std::string pattern(site.primary_pattern.ToString());
    Martin Šrámek . unresolved

    Since we only care about primary, let's DCHECK that secondary is not used (i.e. it's wildcard)?

    Line 134, Patchset 8 (Latest): if (DCHECK_IS_ON() || site.incognito) {
    auto [_, inserted] = patterns_to_dedupe_.insert(pattern);
    if (!inserted) {
    DCHECK(map->IsOffTheRecord());
    continue;
    }
    }
    Martin Šrámek . unresolved

    Hmm, I'm not sure I understand what this is doing.

    In production, when DCHECK is off, you'll only run this code if the exception comes from Incognito. But that also means you'll never have collision in the set, because you can't have duplicates between exceptions that are from Incognito. Only between regular and Incognito ones. So you'll never call `continue`, and you'll fall through to the rest of the code below, i.e. you'll process all exceptions. Thus never actually doing any de-duplication?

    Because `patterns_to_dedupe_` is only here to check for the duplicates by failing to insert, right? The actual de-duplication is decided by continuing the rest of the operations below or not.

    And conversely, when DCHECK() is on, we change how we iterate through the exceptions, which should not happen. DCHECK should just check an invariant, not affect the control flow.

    If you implement the DCHECK that I mentioned in another comment, to check that exceptions only come from the default provider (which only has one - the global wildcard) and pref provider (which we know can only have duplicates between regular and Incognito), perhaps that's enough of validation and we don't need this logic here.

    Or if we want to keep this validation, I think we'll need to split the logic for what to DCHECK and when to `continue`?

    Line 142, Patchset 8 (Latest): GURL url(std::move(pattern));
    Martin Šrámek . unresolved

    Note that pattern->String->URL is a tricky operation.

    The pattern ["https", "example.com", port wildcard] will translate to string "https://example.com" which will translate to the URL "https://example.com:443", because the GURL() constructor will automatically add the default port.

    However, in this case, it's safe, since we're not expecting port wildcards. Hence it may be useful to `DCHECK(pattern.MatchesSingleOrigin())` as I mentioned earlier.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Charlie Harrison
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
      Gerrit-Change-Number: 6921629
      Gerrit-PatchSet: 8
      Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
      Gerrit-Reviewer: Martin Šrámek <msr...@chromium.org>
      Gerrit-Attention: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Comment-Date: Mon, 08 Sep 2025 21:38:51 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Charlie Harrison (Gerrit)

      unread,
      Sep 9, 2025, 6:03:33 PM (12 days ago) Sep 9
      to Martin Šrámek, Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
      Attention needed from Martin Šrámek

      Charlie Harrison added 8 comments

      Patchset-level comments
      Martin Šrámek . resolved

      I added some suggestions about how we can validate various invariants.

      It's on my wishlist (and I've filed a bug for this), that HostContentSettingsMap should have more ergonomic APIs to work with origin-only settings, so that one doesn't have to make (and DCHECK) all these assumptions. Unfortunately, we still don't have it - so we have to call the clumsier APIs that work with ContentSettingsPattern and then DCHECK that the patterns are as we expect...

      Charlie Harrison

      Thank you for the review Martin. Very much appreciated.

      File components/site_engagement/content/site_engagement_service.cc
      Line 91, Patchset 8:bool PatternMatchesUrlSet(const ContentSettingsPattern& pattern,
      Martin Šrámek . resolved

      "PatternMatches" sounds like it refers to `ContentSettingsPattern::Matches()` which however checks {scheme, host, subdomain, port, path (file urls only)} for exact or wildcard match.

      This only matches the scheme. How about "PatternSchemeMatchesUrlSet" or so?

      We're also not expecting wildcard schemes in the pattern - DCHECK that the pattern `MatchesSingleOrigin()`?

      Charlie Harrison

      Done

      Line 113, Patchset 8: ContentSettingsForOneType sites =
      Martin Šrámek . resolved

      Why the rename?

      Site engagement really stores origins, and this seems useful for the readability of the code below.

      (Especially since in other places in Chrome, we use the term "site" to refer to something like eTLD+1. Though of course, having this entire concept named site engagement doesn't help with clarity.)

      Charlie Harrison

      I didn't mean it as a rename since the code came from `GetEngagementOriginsFromContentSettings` which uses `site` to refer to these objects, but I agree it isn't correct, good flag.

      I renamed to `pattern_source` and `pattern_sources`, since I feel like `origin` is not correct to refer to the pattern source either.

      Line 122, Patchset 8: // provider other than PrefProvider writes to this database.
      Martin Šrámek . resolved

      We can also DCHECK this.

      `ContentSettingsForOneType` is just a vector of `ContentSettingsPatternSource`, where the `source` attribute tells you which provider the setting came from.

      And I think technically there is one entry from the default provdier.

      So we can do `DHECK(std::find_if_not(sites.begin(), sites.end(), [](const auto& entry) { return entry.source == kPrefProvider || entry.source == kDefaultProvider; }) == sites.end()`.

      Charlie Harrison

      Beautiful 🙏. Done.

      Line 128, Patchset 8: absl::flat_hash_set<std::string> patterns_to_dedupe_;
      Martin Šrámek . resolved

      style nit: not an attribute, so no need to end it with `_`.

      Charlie Harrison

      Done

      Line 133, Patchset 8: std::string pattern(site.primary_pattern.ToString());
      Martin Šrámek . resolved

      Since we only care about primary, let's DCHECK that secondary is not used (i.e. it's wildcard)?

      Charlie Harrison

      Done

      Line 134, Patchset 8: if (DCHECK_IS_ON() || site.incognito) {

      auto [_, inserted] = patterns_to_dedupe_.insert(pattern);
      if (!inserted) {
      DCHECK(map->IsOffTheRecord());
      continue;
      }
      }
      Martin Šrámek . resolved

      Hmm, I'm not sure I understand what this is doing.

      In production, when DCHECK is off, you'll only run this code if the exception comes from Incognito. But that also means you'll never have collision in the set, because you can't have duplicates between exceptions that are from Incognito. Only between regular and Incognito ones. So you'll never call `continue`, and you'll fall through to the rest of the code below, i.e. you'll process all exceptions. Thus never actually doing any de-duplication?

      Because `patterns_to_dedupe_` is only here to check for the duplicates by failing to insert, right? The actual de-duplication is decided by continuing the rest of the operations below or not.

      And conversely, when DCHECK() is on, we change how we iterate through the exceptions, which should not happen. DCHECK should just check an invariant, not affect the control flow.

      If you implement the DCHECK that I mentioned in another comment, to check that exceptions only come from the default provider (which only has one - the global wildcard) and pref provider (which we know can only have duplicates between regular and Incognito), perhaps that's enough of validation and we don't need this logic here.

      Or if we want to keep this validation, I think we'll need to split the logic for what to DCHECK and when to `continue`?

      Charlie Harrison

      Oops you're totally right this is a no-op in production code. I was intending on checking the map for non-incognito rules after this check but didn't check that code in :P

      In any case, I realized this relies on the implementation detail that incognito patterns are returned first from `GetSettingsForOneType` and that's probably not great, so in the current PS I just dedupe after the fact for incognito.

      The DCHECK here is replaced with a "no duplicates" DCHECK one-liner at the end.

      Line 142, Patchset 8: GURL url(std::move(pattern));
      Martin Šrámek . unresolved

      Note that pattern->String->URL is a tricky operation.

      The pattern ["https", "example.com", port wildcard] will translate to string "https://example.com" which will translate to the URL "https://example.com:443", because the GURL() constructor will automatically add the default port.

      However, in this case, it's safe, since we're not expecting port wildcards. Hence it may be useful to `DCHECK(pattern.MatchesSingleOrigin())` as I mentioned earlier.

      Charlie Harrison

      Yes, I agree this is probably not great. However it is the current behavior which I didn't want to change. Added the DCHECK.

      Is there a recommended approach from content settings code for this? I am happy to add a TODO to use e.g. ToRepresentativeUrl().

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Martin Šrámek
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
      Gerrit-Change-Number: 6921629
      Gerrit-PatchSet: 8
      Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
      Gerrit-Reviewer: Martin Šrámek <msr...@chromium.org>
      Gerrit-Attention: Martin Šrámek <msr...@chromium.org>
      Gerrit-Comment-Date: Tue, 09 Sep 2025 22:03:19 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Martin Šrámek <msr...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Charlie Harrison (Gerrit)

      unread,
      Sep 9, 2025, 8:57:14 PM (12 days ago) Sep 9
      to Martin Šrámek, Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
      Attention needed from Martin Šrámek

      Charlie Harrison added 1 comment

      Patchset-level comments
      File-level comment, Patchset 9 (Latest):
      Charlie Harrison . unresolved

      Martin: looks like the DCHECK is failing in a browser test that overrides the default provider. I'm not familiar enough with this code to know if that's a test-only issue or a problem with the actual code assumptions.

      If it's a problem with the code's assumptions I guess I could do the deduping unconditionally :/

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Martin Šrámek
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
      Gerrit-Change-Number: 6921629
      Gerrit-PatchSet: 9
      Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
      Gerrit-Reviewer: Martin Šrámek <msr...@chromium.org>
      Gerrit-Attention: Martin Šrámek <msr...@chromium.org>
      Gerrit-Comment-Date: Wed, 10 Sep 2025 00:56:58 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Martin Šrámek (Gerrit)

      unread,
      Sep 10, 2025, 7:50:14 PM (11 days ago) Sep 10
      to Charlie Harrison, Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
      Attention needed from Charlie Harrison

      Martin Šrámek added 1 comment

      Patchset-level comments
      Charlie Harrison . unresolved

      Martin: looks like the DCHECK is failing in a browser test that overrides the default provider. I'm not familiar enough with this code to know if that's a test-only issue or a problem with the actual code assumptions.

      If it's a problem with the code's assumptions I guess I could do the deduping unconditionally :/

      Martin Šrámek

      Since it's specifically tests that are fiddling with content settings providers failing, I'm sure it's a test issue. Otherwise this would trip up a lot more browsertests.

      Though I admit I don't immediately see it. Those tests are overriding the supervised provider, and it seems they only do so for camera & mic. It doesn't look like the MockProvider has any values to return for site engagement, but I guess it does?

      I can help debug if you show me what the return value of `GetContentSettingsForOneType()` is in these browsertests (or I can patch in the CL when I have time later).

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Charlie Harrison
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
      Gerrit-Change-Number: 6921629
      Gerrit-PatchSet: 9
      Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
      Gerrit-Reviewer: Martin Šrámek <msr...@chromium.org>
      Gerrit-Attention: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Comment-Date: Wed, 10 Sep 2025 23:49:58 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Charlie Harrison <cshar...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Charlie Harrison (Gerrit)

      unread,
      Sep 10, 2025, 10:20:00 PM (11 days ago) Sep 10
      to Martin Šrámek, Joe DeBlasio, Chromium LUCI CQ, chromium...@chromium.org, chrome-gr...@chromium.org, jdeblas...@chromium.org, performance-m...@chromium.org
      Attention needed from Martin Šrámek

      Charlie Harrison added 1 comment

      Patchset-level comments
      Charlie Harrison . unresolved

      Martin: looks like the DCHECK is failing in a browser test that overrides the default provider. I'm not familiar enough with this code to know if that's a test-only issue or a problem with the actual code assumptions.

      If it's a problem with the code's assumptions I guess I could do the deduping unconditionally :/

      Martin Šrámek

      Since it's specifically tests that are fiddling with content settings providers failing, I'm sure it's a test issue. Otherwise this would trip up a lot more browsertests.

      Though I admit I don't immediately see it. Those tests are overriding the supervised provider, and it seems they only do so for camera & mic. It doesn't look like the MockProvider has any values to return for site engagement, but I guess it does?

      I can help debug if you show me what the return value of `GetContentSettingsForOneType()` is in these browsertests (or I can patch in the CL when I have time later).

      Charlie Harrison
      It contains a single entry:
      ```
      [(https://127.0.0.1:43141, *) source=3 value={
      "lastEngagementTime": 1.3402030661875894e+16,
      "lastShortcutLaunchTime": 0.0,
      "pointsAddedToday": 3.0,
      "rawScore": 3.0
      }
      ]
      ```
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Martin Šrámek
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      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: I6d59f73bc79dae4981b1b647d63d8c70264e921d
      Gerrit-Change-Number: 6921629
      Gerrit-PatchSet: 9
      Gerrit-Owner: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Charlie Harrison <cshar...@chromium.org>
      Gerrit-Reviewer: Joe DeBlasio <jdeb...@chromium.org>
      Gerrit-Reviewer: Martin Šrámek <msr...@chromium.org>
      Gerrit-Attention: Martin Šrámek <msr...@chromium.org>
      Gerrit-Comment-Date: Thu, 11 Sep 2025 02:19:50 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Martin Šrámek <msr...@chromium.org>
      Comment-In-Reply-To: Charlie Harrison <cshar...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages