CrashReportStorage API uses shared memory instead of sync IPCs [chromium/src : main]

0 views
Skip to first unread message

AI Code Reviewer (Gerrit)

unread,
Jul 24, 2025, 3:23:51 PM7/24/25
to Dominic Farolino, Dominic Farolino, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, blink-revie...@chromium.org, asvitkine...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, navigation...@chromium.org, blink-...@chromium.org, creis...@chromium.org, alexmo...@chromium.org, blink-revi...@chromium.org
Attention needed from Dominic Farolino and Dominic Farolino

AI Code Reviewer added 2 comments

File third_party/blink/renderer/core/frame/crash_report_storage.h
Line 35, Patchset 18 (Latest): void set(const String&, const String&, ExceptionState&);
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Please add parameter names to the `set` and `remove` function declarations. The purpose of the `String` parameters (e.g., `key`, `value`) is not obvious from the type alone. (Blink Style Guide: Naming - May leave obvious parameter names out of function declarations)
Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

File third_party/blink/renderer/core/frame/crash_report_storage.cc
Line 158, Patchset 18 (Latest): auto json_object = std::make_unique<JSONObject>();
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Please use `WTF::MakeUnique` instead of `std::make_unique` to align with Blink's preference for WTF types over STL types. (Blink Style Guide: Prefer WTF types over STL and base types)
Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Open in Gerrit

Related details

Attention is currently required from:
  • Dominic Farolino
  • Dominic Farolino
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: I3c3ea8bc868bd23aac97148a952eaa1e3f39599a
Gerrit-Change-Number: 6765749
Gerrit-PatchSet: 18
Gerrit-Owner: Dominic Farolino <domfa...@google.com>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Dominic Farolino <d...@chromium.org>
Gerrit-Attention: Dominic Farolino <domfa...@google.com>
Gerrit-Comment-Date: Thu, 24 Jul 2025 19:23:46 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

AI Code Reviewer (Gerrit)

unread,
Jul 24, 2025, 3:32:22 PM7/24/25
to Dominic Farolino, Dominic Farolino, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, blink-revie...@chromium.org, asvitkine...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, navigation...@chromium.org, blink-...@chromium.org, creis...@chromium.org, alexmo...@chromium.org, blink-revi...@chromium.org
Attention needed from Dominic Farolino

AI Code Reviewer added 1 comment

File third_party/blink/renderer/core/frame/crash_report_storage.h
Line 31, Patchset 19 (Latest): ScriptPromise<IDLUndefined> create(ScriptState*,
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
For clarity, please add parameter names to the declaration of `create`. The roles of `ScriptState*` and `ExceptionState&` are not obvious from the type names alone. (Blink Style Guide: Naming - May leave obvious parameter names out of function declarations)

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Related details

Attention is currently required from:
  • Dominic Farolino
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: I3c3ea8bc868bd23aac97148a952eaa1e3f39599a
Gerrit-Change-Number: 6765749
Gerrit-PatchSet: 19
Gerrit-Owner: Dominic Farolino <domfa...@google.com>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Dominic Farolino <domfa...@google.com>
Gerrit-Comment-Date: Thu, 24 Jul 2025 19:32:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

AI Code Reviewer (Gerrit)

unread,
Jul 24, 2025, 3:46:17 PM7/24/25
to Dominic Farolino, Dominic Farolino, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, blink-revie...@chromium.org, asvitkine...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, navigation...@chromium.org, blink-...@chromium.org, creis...@chromium.org, alexmo...@chromium.org, blink-revi...@chromium.org
Attention needed from Dominic Farolino and Dominic Farolino

AI Code Reviewer added 2 comments

File third_party/blink/renderer/core/frame/crash_report_storage.cc
Line 158, Patchset 20 (Latest): auto json_object = std::make_unique<JSONObject>();
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Blink Style Guide: Prefer WTF types over STL and base types. Please use `WTF::MakeUnique` instead of `std::make_unique` for consistency within the Blink codebase.

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Line 170, Patchset 20 (Latest): base::CheckedNumeric<size_t> total_size = utf8.size();
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Blink Style Guide: Prefer WTF types over STL and base types. The guide specifies to 'use wtf_size_t instead of size_t' when interacting with WTF types. Please use `wtf_size_t` for `total_size` as it's derived from `StringUtf8Adaptor`.

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Open in Gerrit

Related details

Attention is currently required from:
  • Dominic Farolino
  • Dominic Farolino
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: I3c3ea8bc868bd23aac97148a952eaa1e3f39599a
Gerrit-Change-Number: 6765749
Gerrit-PatchSet: 20
Gerrit-Owner: Dominic Farolino <domfa...@google.com>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Dominic Farolino <d...@chromium.org>
Gerrit-Attention: Dominic Farolino <domfa...@google.com>
Gerrit-Comment-Date: Thu, 24 Jul 2025 19:46:14 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Dominic Farolino (Gerrit)

unread,
Jul 24, 2025, 3:48:43 PM7/24/25
to Dominic Farolino, AI Code Reviewer, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, blink-revie...@chromium.org, asvitkine...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, navigation...@chromium.org, blink-...@chromium.org, creis...@chromium.org, alexmo...@chromium.org, blink-revi...@chromium.org
Attention needed from Dominic Farolino

Dominic Farolino voted and added 4 comments

Votes added by Dominic Farolino

Commit-Queue+1

4 comments

File third_party/blink/renderer/core/frame/crash_report_storage.h
Line 31, Patchset 19: ScriptPromise<IDLUndefined> create(ScriptState*,
AI Code Reviewer . resolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
For clarity, please add parameter names to the declaration of `create`. The roles of `ScriptState*` and `ExceptionState&` are not obvious from the type names alone. (Blink Style Guide: Naming - May leave obvious parameter names out of function declarations)
Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Dominic Farolino

Done

Line 35, Patchset 18: void set(const String&, const String&, ExceptionState&);
AI Code Reviewer . resolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Please add parameter names to the `set` and `remove` function declarations. The purpose of the `String` parameters (e.g., `key`, `value`) is not obvious from the type alone. (Blink Style Guide: Naming - May leave obvious parameter names out of function declarations)

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Dominic Farolino

Done

File third_party/blink/renderer/core/frame/crash_report_storage.cc
Line 158, Patchset 18: auto json_object = std::make_unique<JSONObject>();
AI Code Reviewer . resolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Please use `WTF::MakeUnique` instead of `std::make_unique` to align with Blink's preference for WTF types over STL types. (Blink Style Guide: Prefer WTF types over STL and base types)

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Dominic Farolino

Won't fix: wrong.

Line 158, Patchset 20 (Latest): auto json_object = std::make_unique<JSONObject>();
AI Code Reviewer . resolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Blink Style Guide: Prefer WTF types over STL and base types. Please use `WTF::MakeUnique` instead of `std::make_unique` for consistency within the Blink codebase.
Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Dominic Farolino

Won't fix: wrong.

Open in Gerrit

Related details

Attention is currently required from:
  • Dominic Farolino
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: I3c3ea8bc868bd23aac97148a952eaa1e3f39599a
Gerrit-Change-Number: 6765749
Gerrit-PatchSet: 20
Gerrit-Owner: Dominic Farolino <domfa...@google.com>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Dominic Farolino <domfa...@google.com>
Gerrit-Comment-Date: Thu, 24 Jul 2025 19:48:38 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

AI Code Reviewer (Gerrit)

unread,
Jul 24, 2025, 3:55:18 PM7/24/25
to Dominic Farolino, Dominic Farolino, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, blink-revie...@chromium.org, asvitkine...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, jmedle...@chromium.org, net-r...@chromium.org, kinuko...@chromium.org, blink-re...@chromium.org, navigation...@chromium.org, blink-...@chromium.org, creis...@chromium.org, alexmo...@chromium.org, blink-revi...@chromium.org
Attention needed from Dominic Farolino

AI Code Reviewer added 2 comments

File third_party/blink/renderer/core/frame/crash_report_storage.cc
Line 158, Patchset 21 (Latest): auto json_object = std::make_unique<JSONObject>();
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Blink Style Guide: Prefer WTF types over STL and base types. Please use `WTF::MakeUnique` to create a `WTF::unique_ptr` instead of `std::make_unique`.

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Line 170, Patchset 21 (Latest): base::CheckedNumeric<size_t> total_size = utf8.size();
AI Code Reviewer . unresolved
This comment was generated by Blink C++ Code Review Agent. See go/blink-c++-code-review-agent for more details.
Blink Style Guide: Prefer WTF types over STL and base types. The guide states to 'use `wtf_size_t` instead of `size_t`' when interacting with WTF types. Please use `wtf_size_t` for `total_size` as it's derived from `StringUtf8Adaptor`, a WTF type.

Please respond with one of these three options:
'Done' OR 'b/<bug_id>' OR 'Won't fix: <reason>'

If you have feedback or would like to get involved in this effort, please file a bug here: go/blink-c++-code-review-agent-feedback
#code-review-agent-blink-c++

Related details

Attention is currently required from:
  • Dominic Farolino
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: I3c3ea8bc868bd23aac97148a952eaa1e3f39599a
Gerrit-Change-Number: 6765749
Gerrit-PatchSet: 21
Gerrit-Owner: Dominic Farolino <domfa...@google.com>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Dominic Farolino <domfa...@google.com>
Gerrit-Comment-Date: Thu, 24 Jul 2025 19:55:15 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Dominic Farolino (Gerrit)

unread,
Jul 27, 2025, 2:24:02 PM7/27/25
to Daniel Cheng, Nidhi Jaju, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

Dominic Farolino voted and added 3 comments

Votes added by Dominic Farolino

Commit-Queue+1

3 comments

Patchset-level comments
File-level comment, Patchset 3 (Latest):
Dominic Farolino . resolved

nasko@: For //content/browser
dcheng@: To weigh in on the comments I've left, and double-checks some of the shared memory buffer handling in blink::CrashReportStorage
nidhijaju@: For reporting_browsertest.cc

File content/browser/renderer_host/render_frame_host_impl.cc
Line 16070, Patchset 1: const uint32_t data_size = *mapping.GetMemoryAs<uint32_t>();
Dominic Farolino . unresolved

I believe this—where the browser process starts to read from shared memory—is where we discussed the possibility of needing to copy the entire buffer before JSON parsing it, since we can't really parse its bytes atomically.

But I don't think I see a path for the renderer to still be writing to the buffer (or pass a writable/unsafe end of the buffer to another still-living renderer) such that the renderer can write to the browser while the browser is reading it.

Do you think we should still copy here, or can we get away without it? I'm asking just because the max size is 5mb, which feels non-trivial to me to maintain another copy of. But maybe it's not a big deal 🤷‍♂️

File third_party/blink/renderer/core/frame/crash_report_storage.cc
Line 191, Patchset 1: // The `if` statement above ensures the destination buffer is large enough.
Dominic Farolino . unresolved

dcheng@: How do you feel about this? I feel like you're the best person to sign off on this kind of change and justification.

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
  • Nasko Oskov
  • Nidhi Jaju
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
Gerrit-Change-Number: 6788146
Gerrit-PatchSet: 3
Gerrit-Owner: Dominic Farolino <d...@chromium.org>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
Gerrit-Attention: Nasko Oskov <na...@chromium.org>
Gerrit-Comment-Date: Sun, 27 Jul 2025 18:23:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Dominic Farolino (Gerrit)

unread,
Jul 28, 2025, 1:45:03 PM7/28/25
to Chromium LUCI CQ, Daniel Cheng, Nidhi Jaju, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

Dominic Farolino voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
  • Nasko Oskov
  • Nidhi Jaju
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
Gerrit-Change-Number: 6788146
Gerrit-PatchSet: 5
Gerrit-Owner: Dominic Farolino <d...@chromium.org>
Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
Gerrit-Attention: Nasko Oskov <na...@chromium.org>
Gerrit-Comment-Date: Mon, 28 Jul 2025 17:44:58 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Nidhi Jaju (Gerrit)

unread,
Jul 29, 2025, 2:17:32 AM7/29/25
to Dominic Farolino, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
Attention needed from Daniel Cheng, Dominic Farolino and Nasko Oskov

Nidhi Jaju voted and added 1 comment

Votes added by Nidhi Jaju

Code-Review+1

1 comment

Patchset-level comments
File-level comment, Patchset 6 (Latest):
Nidhi Jaju . resolved

reporting_browsertest.cc lgtm

Open in Gerrit

Related details

Attention is currently required from:
  • Daniel Cheng
  • Dominic Farolino
  • Nasko Oskov
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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
    Gerrit-Change-Number: 6788146
    Gerrit-PatchSet: 6
    Gerrit-Owner: Dominic Farolino <d...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
    Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
    Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
    Gerrit-Attention: Dominic Farolino <d...@chromium.org>
    Gerrit-Attention: Nasko Oskov <na...@chromium.org>
    Gerrit-Comment-Date: Tue, 29 Jul 2025 06:17:03 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Nasko Oskov (Gerrit)

    unread,
    Jul 29, 2025, 11:11:43 AM7/29/25
    to Dominic Farolino, Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
    Attention needed from Daniel Cheng and Dominic Farolino

    Nasko Oskov added 3 comments

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 16066, Patchset 6 (Latest): base::WritableSharedMemoryMapping mapping =
    Nasko Oskov . unresolved

    Can't we just create a regular memory buffer instead of shared memory?

    Line 16070, Patchset 1: const uint32_t data_size = *mapping.GetMemoryAs<uint32_t>();
    Dominic Farolino . unresolved

    I believe this—where the browser process starts to read from shared memory—is where we discussed the possibility of needing to copy the entire buffer before JSON parsing it, since we can't really parse its bytes atomically.

    But I don't think I see a path for the renderer to still be writing to the buffer (or pass a writable/unsafe end of the buffer to another still-living renderer) such that the renderer can write to the browser while the browser is reading it.

    Do you think we should still copy here, or can we get away without it? I'm asking just because the max size is 5mb, which feels non-trivial to me to maintain another copy of. But maybe it's not a big deal 🤷‍♂️

    Nasko Oskov

    Let's make a copy. It is a lot easier to reason about, does not vary in semantics per platform (like shared memory does), and it is not a performance critical path.

    Every time we try to ask "can we get away with it" ... inevitably someone comes later on to demonstrate why we can't : ). I'd rather we be defensive than optimistic.

    Line 16079, Patchset 6 (Latest): if (mapping.size() >= sizeof(data_size) + data_size) {
    Nasko Oskov . unresolved

    Shouldn't this be strict equality check?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Cheng
    • Dominic Farolino
    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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
    Gerrit-Change-Number: 6788146
    Gerrit-PatchSet: 6
    Gerrit-Owner: Dominic Farolino <d...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
    Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
    Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
    Gerrit-Attention: Dominic Farolino <d...@chromium.org>
    Gerrit-Comment-Date: Tue, 29 Jul 2025 15:11:26 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Daniel Cheng (Gerrit)

    unread,
    Jul 29, 2025, 4:59:40 PM7/29/25
    to Dominic Farolino, Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
    Attention needed from Dominic Farolino

    Daniel Cheng added 8 comments

    Patchset-level comments
    Daniel Cheng . unresolved

    Have you discussed OS-specific limits around shmem? How was the limit of 5MB determined? Are there any platform-specific limits we need to be concerned about? Can a renderer easily use up all allocatable shmem regions on a machine just with JS calls, whereas maybe it was harder before?

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 14400, Patchset 6 (Latest):
    // The renderer is not trusted, so we don't trust it to write in bounds of the
    // valid memory. Therefore, this region is created as unsafe.
    Daniel Cheng . unresolved

    To be clear, "unsafe" in this context means "we cannot vend out a version of the region which allows readonly mappings"; it is not about spatial memory safety.

    Line 16066, Patchset 6 (Latest): base::WritableSharedMemoryMapping mapping =
    Nasko Oskov . unresolved

    Can't we just create a regular memory buffer instead of shared memory?

    Daniel Cheng

    An unsafe shmem region can only be mapped as writable. Strictly speaking, I guess we could implement a method `MapReadOnly()` that returns a `ReadOnlySharedMemoryRegion`... but it would be read-only in name only (as the underlying bytes could still be modified).

    So when we refactored the API, we chose to make this explicitly visible in the type system.

    Line 16069, Patchset 6 (Latest): if (mapping.IsValid() && mapping.size() >= sizeof(uint32_t)) {
    Daniel Cheng . unresolved

    I suggest using SpanReader, which has helpers for reading integers as well as larger spans.

    Line 16070, Patchset 1: const uint32_t data_size = *mapping.GetMemoryAs<uint32_t>();
    Dominic Farolino . unresolved

    I believe this—where the browser process starts to read from shared memory—is where we discussed the possibility of needing to copy the entire buffer before JSON parsing it, since we can't really parse its bytes atomically.

    But I don't think I see a path for the renderer to still be writing to the buffer (or pass a writable/unsafe end of the buffer to another still-living renderer) such that the renderer can write to the browser while the browser is reading it.

    Do you think we should still copy here, or can we get away without it? I'm asking just because the max size is 5mb, which feels non-trivial to me to maintain another copy of. But maybe it's not a big deal 🤷‍♂️

    Nasko Oskov

    Let's make a copy. It is a lot easier to reason about, does not vary in semantics per platform (like shared memory does), and it is not a performance critical path.

    Every time we try to ask "can we get away with it" ... inevitably someone comes later on to demonstrate why we can't : ). I'd rather we be defensive than optimistic.

    Daniel Cheng

    We need to copy. The renderer can collaborate with another malicious renderer and send it a clone of the region, and the second malicious renderer could modify the bytes while we try to read here.

    Line 16089, Patchset 6 (Latest): body.Set(it.first, it.second.GetString());
    Daniel Cheng . unresolved

    Is it OK that this might overwrite keys that we've already set? Perhaps that's intentional though?

    File third_party/blink/renderer/core/frame/crash_report_storage.cc
    Line 72, Patchset 6 (Latest): length,
    Daniel Cheng . unresolved

    Do we anticipate using the async bits of this for other stuff in the future?

    It feels a bit hard to use TBH, though I guess if we're going through promises, it's already async so maybe it doesn't matter.

    Line 191, Patchset 1: // The `if` statement above ensures the destination buffer is large enough.
    Dominic Farolino . unresolved

    dcheng@: How do you feel about this? I feel like you're the best person to sign off on this kind of change and justification.

    Daniel Cheng

    HOw about `base::as_bytes(utf8.AsStringView())`?

    `SpanWriter` might be a nice option as well here.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Dominic Farolino
    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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
    Gerrit-Change-Number: 6788146
    Gerrit-PatchSet: 6
    Gerrit-Owner: Dominic Farolino <d...@chromium.org>
    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
    Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
    Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
    Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: Dominic Farolino <d...@chromium.org>
    Gerrit-Comment-Date: Tue, 29 Jul 2025 20:59:30 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
    Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Dominic Farolino (Gerrit)

    unread,
    Aug 1, 2025, 2:18:56 PM8/1/25
    to Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
    Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

    Dominic Farolino added 7 comments

    File content/browser/renderer_host/render_frame_host_impl.cc

    // The renderer is not trusted, so we don't trust it to write in bounds of the
    // valid memory. Therefore, this region is created as unsafe.
    Daniel Cheng . resolved

    To be clear, "unsafe" in this context means "we cannot vend out a version of the region which allows readonly mappings"; it is not about spatial memory safety.

    Dominic Farolino

    Yeah, I think I learned this after this comment. I'll just remove this comment since I don't think it adds anything.

    Line 16066, Patchset 6: base::WritableSharedMemoryMapping mapping =
    Nasko Oskov . resolved

    Can't we just create a regular memory buffer instead of shared memory?

    Daniel Cheng

    An unsafe shmem region can only be mapped as writable. Strictly speaking, I guess we could implement a method `MapReadOnly()` that returns a `ReadOnlySharedMemoryRegion`... but it would be read-only in name only (as the underlying bytes could still be modified).

    So when we refactored the API, we chose to make this explicitly visible in the type system.

    Dominic Farolino

    This is as I expected. Given that limitation and the fact that this CL is using the API as intended, I think I'm OK to resolve this.

    Line 16069, Patchset 6: if (mapping.IsValid() && mapping.size() >= sizeof(uint32_t)) {
    Daniel Cheng . unresolved

    I suggest using SpanReader, which has helpers for reading integers as well as larger spans.

    Dominic Farolino

    I'll work on this now.

    Line 16079, Patchset 6: if (mapping.size() >= sizeof(data_size) + data_size) {
    Nasko Oskov . resolved

    Shouldn't this be strict equality check?

    Dominic Farolino

    No because it's possible that the renderer wrote less bytes than it actually requested, not completely filling up the buffer. In that case, `data_size` can be quite low. As long as `data_size` (plus the size of `data_size` itself) is `<=` the maximum size that the renderer requested, we can proceed to read.

    Line 16089, Patchset 6: body.Set(it.first, it.second.GetString());
    Daniel Cheng . resolved

    Is it OK that this might overwrite keys that we've already set? Perhaps that's intentional though?

    Dominic Farolino

    Correct, the thought is that whatever the developer decides to supply here should override any other defaults. This could change in the future if we have some keys in the report that we decide should be untouchable by the web-exposed API, but no such keys exist yet. I will document this in the specification text.

    File third_party/blink/renderer/core/frame/crash_report_storage.cc
    Daniel Cheng . unresolved

    Do we anticipate using the async bits of this for other stuff in the future?

    It feels a bit hard to use TBH, though I guess if we're going through promises, it's already async so maybe it doesn't matter.

    Dominic Farolino

    What do you mean "use the async bits in the future"? I'm just default to async IPC + Promise exposed through Web IDL because sync IPCs are so expensive, and the async-ness here gives us the ability to change the backing implementation to anything we want in the future, or make other non-web-observable optimizations at a later time, if we choose to do so. Does that answer your question?

    Line 191, Patchset 1: // The `if` statement above ensures the destination buffer is large enough.
    Dominic Farolino . resolved

    dcheng@: How do you feel about this? I feel like you're the best person to sign off on this kind of change and justification.

    Daniel Cheng

    HOw about `base::as_bytes(utf8.AsStringView())`?

    `SpanWriter` might be a nice option as well here.

    Dominic Farolino

    `base::SpanWriter` worked great here! This is lovely, thanks a lot.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Daniel Cheng
    • Nasko Oskov
    • Nidhi Jaju
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
      Gerrit-Change-Number: 6788146
      Gerrit-PatchSet: 9
      Gerrit-Owner: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
      Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
      Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
      Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Comment-Date: Fri, 01 Aug 2025 18:18:51 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Dominic Farolino (Gerrit)

      unread,
      Aug 1, 2025, 3:10:12 PM8/1/25
      to Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
      Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

      Dominic Farolino voted and added 2 comments

      Votes added by Dominic Farolino

      Commit-Queue+1

      2 comments

      File content/browser/renderer_host/render_frame_host_impl.cc
      Line 16069, Patchset 6: if (mapping.IsValid() && mapping.size() >= sizeof(uint32_t)) {
      Daniel Cheng . resolved

      I suggest using SpanReader, which has helpers for reading integers as well as larger spans.

      Dominic Farolino

      I'll work on this now.

      Dominic Farolino

      Done. I'm reading the bytes into a span and making a copy via std::string, and parsing the std::string as JSON now.

      Line 16070, Patchset 1: const uint32_t data_size = *mapping.GetMemoryAs<uint32_t>();
      Dominic Farolino . resolved

      I believe this—where the browser process starts to read from shared memory—is where we discussed the possibility of needing to copy the entire buffer before JSON parsing it, since we can't really parse its bytes atomically.

      But I don't think I see a path for the renderer to still be writing to the buffer (or pass a writable/unsafe end of the buffer to another still-living renderer) such that the renderer can write to the browser while the browser is reading it.

      Do you think we should still copy here, or can we get away without it? I'm asking just because the max size is 5mb, which feels non-trivial to me to maintain another copy of. But maybe it's not a big deal 🤷‍♂️

      Nasko Oskov

      Let's make a copy. It is a lot easier to reason about, does not vary in semantics per platform (like shared memory does), and it is not a performance critical path.

      Every time we try to ask "can we get away with it" ... inevitably someone comes later on to demonstrate why we can't : ). I'd rather we be defensive than optimistic.

      Daniel Cheng

      We need to copy. The renderer can collaborate with another malicious renderer and send it a clone of the region, and the second malicious renderer could modify the bytes while we try to read here.

      Dominic Farolino

      Copy it is! I've made a std::string copy out of the span produced from `base::SpanReader::ReadInto()`. That seemed to be the best way of doing it, but let me know if you know a better way of holding the API, dcheng@. For now I'll resolve this.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Cheng
      • Nasko Oskov
      • Nidhi Jaju
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
      Gerrit-Change-Number: 6788146
      Gerrit-PatchSet: 13
      Gerrit-Owner: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
      Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
      Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
      Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Comment-Date: Fri, 01 Aug 2025 19:10:07 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      fabian athayde (Gerrit)

      unread,
      Aug 1, 2025, 3:15:52 PM8/1/25
      to Dominic Farolino, Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
      Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

      fabian athayde added 1 comment

      Message

      Ok Dominic can I interest you in a punch bowl ticket

      On Fri, Aug 1, 2025, 2:10 PM Dominic Farolino (Gerrit) <noreply-gerritcodereview+MGSawfHioM8TkEuRPWcghA==@> wrote: chromium.org

      1 comment

      Patchset-level comments
      File-level comment, Patchset 13 (Latest):
      fabian athayde . resolved

      Ok Dominic can I interest you in a punch bowl ticket

      On Fri, Aug 1, 2025, 2:10 PM Dominic Farolino (Gerrit) <noreply-gerritcodereview+MGSawfHioM8TkEuRPWcghA==@> wrote: chromium.org

      Gerrit-Comment-Date: Fri, 01 Aug 2025 19:15:47 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Daniel Cheng (Gerrit)

      unread,
      Aug 1, 2025, 7:09:42 PM8/1/25
      to Dominic Farolino, Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
      Attention needed from Dominic Farolino, Nasko Oskov and Nidhi Jaju

      Daniel Cheng added 4 comments

      Patchset-level comments
      Daniel Cheng . unresolved

      Also, did you have a chance to reach out to security about the shmem questions? Mostly it'd just be good to get some eyes on it that are familiar with any platform-specific quirks/limitations.

      File content/browser/renderer_host/render_frame_host_impl.cc
      Line 16153, Patchset 13 (Latest): std::string body_copy(body_span.begin(), body_span.end());
      Daniel Cheng . unresolved

      Add a comment here like:

      ```
      // Take a copy to snapshot the data so that a malicious writer can't
      // change the data while it's being parsed.
      ```

      File third_party/blink/public/mojom/frame/frame.mojom
      Line 262, Patchset 13 (Latest):// data; see `CreateCrashReportStorage()`.
      Daniel Cheng . unresolved

      Nit: explain some of the rationale behind this. I'm assuming that the actual limit isn't specified; will we have sufficient freedom to change this in the future if needed?

      File third_party/blink/renderer/core/frame/crash_report_storage.cc
      Daniel Cheng . resolved

      Do we anticipate using the async bits of this for other stuff in the future?

      It feels a bit hard to use TBH, though I guess if we're going through promises, it's already async so maybe it doesn't matter.

      Dominic Farolino

      What do you mean "use the async bits in the future"? I'm just default to async IPC + Promise exposed through Web IDL because sync IPCs are so expensive, and the async-ness here gives us the ability to change the backing implementation to anything we want in the future, or make other non-web-observable optimizations at a later time, if we choose to do so. Does that answer your question?

      Daniel Cheng

      As long as you're OK with the general shape of the API, and it fits the usual web platform patterns, I'm fine with it.

      (It didn't seem like we actually needed this to be async, but if it makes it easier to extend in the future/is more consistent with other web platform APIs, I'm 100% fine with it)

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dominic Farolino
      • Nasko Oskov
      • Nidhi Jaju
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
      Gerrit-Change-Number: 6788146
      Gerrit-PatchSet: 13
      Gerrit-Owner: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
      Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
      Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-Attention: Dominic Farolino <d...@chromium.org>
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Comment-Date: Fri, 01 Aug 2025 23:09:33 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Dominic Farolino (Gerrit)

      unread,
      Aug 1, 2025, 7:11:45 PM8/1/25
      to Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
      Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

      Dominic Farolino added 1 comment

      Patchset-level comments
      Daniel Cheng . unresolved

      Also, did you have a chance to reach out to security about the shmem questions? Mostly it'd just be good to get some eyes on it that are familiar with any platform-specific quirks/limitations.

      Dominic Farolino

      Yep, I haven't forgotten about this. I've got an email drafted and will send very soon so we can unblock this. But this CL isn't strictly necessary for the Origin Trial in M140.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Cheng
      • Nasko Oskov
      • Nidhi Jaju
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
      Gerrit-Change-Number: 6788146
      Gerrit-PatchSet: 13
      Gerrit-Owner: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
      Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
      Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
      Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
      Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
      Gerrit-Comment-Date: Fri, 01 Aug 2025 23:11:34 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Nidhi Jaju (Gerrit)

      unread,
      Aug 3, 2025, 10:50:34 PM8/3/25
      to Dominic Farolino, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
      Attention needed from Daniel Cheng, Dominic Farolino and Nasko Oskov

      Nidhi Jaju voted and added 1 comment

      Votes added by Nidhi Jaju

      Code-Review+1

      1 comment

      Patchset-level comments
      Nidhi Jaju . resolved

      reporting_browsertest.cc still lgtm

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Daniel Cheng
      • Dominic Farolino
      • Nasko Oskov
      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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
        Gerrit-Change-Number: 6788146
        Gerrit-PatchSet: 13
        Gerrit-Owner: Dominic Farolino <d...@chromium.org>
        Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
        Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
        Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
        Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
        Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
        Gerrit-Attention: Dominic Farolino <d...@chromium.org>
        Gerrit-Attention: Nasko Oskov <na...@chromium.org>
        Gerrit-Comment-Date: Mon, 04 Aug 2025 02:50:06 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Nidhi Jaju (Gerrit)

        unread,
        Aug 11, 2025, 10:52:42 PM8/11/25
        to Dominic Farolino, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
        Attention needed from Daniel Cheng, Dominic Farolino and Nasko Oskov

        Nidhi Jaju added 1 comment

        Patchset-level comments
        File-level comment, Patchset 14 (Latest):
        Nidhi Jaju . resolved

        Removing myself from reviewers since the files I own are no longer in the latest patchset

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Daniel Cheng
        • Dominic Farolino
        • Nasko Oskov
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
          Gerrit-Change-Number: 6788146
          Gerrit-PatchSet: 14
          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-CC: Nidhi Jaju <nidh...@chromium.org>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Attention: Dominic Farolino <d...@chromium.org>
          Gerrit-Attention: Nasko Oskov <na...@chromium.org>
          Gerrit-Comment-Date: Tue, 12 Aug 2025 02:52:07 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          AI Code Reviewer (Gerrit)

          unread,
          Aug 13, 2025, 1:38:20 PM8/13/25
          to Dominic Farolino, Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
          Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

          AI Code Reviewer added 2 comments

          File third_party/blink/renderer/core/frame/crash_report_storage.h
          Line 50, Patchset 15 (Latest): base::WritableSharedMemoryMapping shm_mapping_;
          AI Code Reviewer . unresolved

          This comment was generated by [Experimental Blink C++ Code Review Agent](http://go/blink-c++-code-review-agent) \
          To opt out permanently, please join [Blink AIAgent Optout](https://ganpati2.corp.google.com/group/peep-genai-blink-agent-optout.prod)

          Blink Style Guide: Prefer blink:: types over STL and base types. `base::WritableSharedMemoryMapping` is a `base` type used as a member variable. While necessary for shared memory interoperability, the style guide indicates that such exceptions should be explicitly annotated. Please add `ALLOW_DISCOURAGED_TYPE("For shared memory interop with the browser process")` after the member variable.
          For a quick and terse communication, please consider using one of these options: \
          Done | b/<bug_id> | Invalid: reason | Won't fix: reason<br/>

          NOTE: AI reviews can give wrong results. \
          We apologize in advance for any inconvenience and would love to take your feedback to make this better. \
          [file a bug](http://go/blink-c++-code-review-agent-feedback) or [ping us on chat](https://chat.google.com/room/AAQA0zhQHe0?cls=4)

          File third_party/blink/renderer/core/frame/crash_report_storage.cc
          Line 150, Patchset 15 (Latest): auto json_object = std::make_unique<JSONObject>();
          AI Code Reviewer . unresolved

          This comment was generated by [Experimental Blink C++ Code Review Agent](http://go/blink-c++-code-review-agent) \
          To opt out permanently, please join [Blink AIAgent Optout](https://ganpati2.corp.google.com/group/peep-genai-blink-agent-optout.prod)

          Blink Style Guide: Don't mix Create () factory methods and public constructors in one class. `JSONObject` is a `WTF::RefCounted` object that provides a `JSONObject::Create()` factory method. Please use `auto json_object = JSONObject::Create();` instead of `std::make_unique` to follow the idiomatic creation pattern for this Blink platform object.
          For a quick and terse communication, please consider using one of these options: \
          Done | b/<bug_id> | Invalid: reason | Won't fix: reason<br/>

          NOTE: AI reviews can give wrong results. \
          We apologize in advance for any inconvenience and would love to take your feedback to make this better. \
          [file a bug](http://go/blink-c++-code-review-agent-feedback) or [ping us on chat](https://chat.google.com/room/AAQA0zhQHe0?cls=4)

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Cheng
          • Nasko Oskov
          • Nidhi Jaju
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
          Gerrit-Change-Number: 6788146
          Gerrit-PatchSet: 15
          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
          Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
          Gerrit-Attention: Nasko Oskov <na...@chromium.org>
          Gerrit-Comment-Date: Wed, 13 Aug 2025 17:38:14 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Dominic Farolino (Gerrit)

          unread,
          Aug 13, 2025, 5:16:50 PM8/13/25
          to AI Code Reviewer, Nidhi Jaju, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
          Attention needed from Daniel Cheng, Nasko Oskov and Nidhi Jaju

          Dominic Farolino added 6 comments

          Patchset-level comments
          Daniel Cheng . unresolved

          Have you discussed OS-specific limits around shmem? How was the limit of 5MB determined? Are there any platform-specific limits we need to be concerned about? Can a renderer easily use up all allocatable shmem regions on a machine just with JS calls, whereas maybe it was harder before?

          Dominic Farolino

          I'm hoping the security review will help flesh some of this out, specifically around the OS-specific and platform-specific limits. I don't know enough about what to be concerned with there, outside of what you mentioned regarding shared memory being a scarce resource on some platforms. I suspect we may end up with some limits around how many times this API can be called within a tab, or how many bytes can be allocated in a tab that has platform-specific constraints or so, but I don't know enough about the platform limitations myself, so I'd like to hear more from security reviewers.

          File-level comment, Patchset 13:
          Daniel Cheng . resolved

          Also, did you have a chance to reach out to security about the shmem questions? Mostly it'd just be good to get some eyes on it that are familiar with any platform-specific quirks/limitations.

          Dominic Farolino

          Yep, I haven't forgotten about this. I've got an email drafted and will send very soon so we can unblock this. But this CL isn't strictly necessary for the Origin Trial in M140.

          Dominic Farolino

          Resolving this, since it's currently under the extra security review in http://g/chrome-security-reviews/c/ug0-uatcaFE

          File content/browser/renderer_host/render_frame_host_impl.cc
          Line 16153, Patchset 13: std::string body_copy(body_span.begin(), body_span.end());
          Daniel Cheng . resolved

          Add a comment here like:

          ```
          // Take a copy to snapshot the data so that a malicious writer can't
          // change the data while it's being parsed.
          ```

          Dominic Farolino

          Done

          File third_party/blink/public/mojom/frame/frame.mojom
          Line 262, Patchset 13:// data; see `CreateCrashReportStorage()`.
          Daniel Cheng . resolved

          Nit: explain some of the rationale behind this. I'm assuming that the actual limit isn't specified; will we have sufficient freedom to change this in the future if needed?

          Dominic Farolino

          We've talked about this offline, but I've added comments describing what we discussed, and mentioning the fact that this value can grow in the future.

          File third_party/blink/renderer/core/frame/crash_report_storage.h
          Line 50, Patchset 15: base::WritableSharedMemoryMapping shm_mapping_;
          AI Code Reviewer . resolved

          This comment was generated by [Experimental Blink C++ Code Review Agent](http://go/blink-c++-code-review-agent) \
          To opt out permanently, please join [Blink AIAgent Optout](https://ganpati2.corp.google.com/group/peep-genai-blink-agent-optout.prod)

          Blink Style Guide: Prefer blink:: types over STL and base types. `base::WritableSharedMemoryMapping` is a `base` type used as a member variable. While necessary for shared memory interoperability, the style guide indicates that such exceptions should be explicitly annotated. Please add `ALLOW_DISCOURAGED_TYPE("For shared memory interop with the browser process")` after the member variable.
          For a quick and terse communication, please consider using one of these options: \
          Done | b/<bug_id> | Invalid: reason | Won't fix: reason<br/>

          NOTE: AI reviews can give wrong results. \
          We apologize in advance for any inconvenience and would love to take your feedback to make this better. \
          [file a bug](http://go/blink-c++-code-review-agent-feedback) or [ping us on chat](https://chat.google.com/room/AAQA0zhQHe0?cls=4)

          Dominic Farolino

          Invalid: does not make sense.

          File third_party/blink/renderer/core/frame/crash_report_storage.cc
          Line 150, Patchset 15: auto json_object = std::make_unique<JSONObject>();
          AI Code Reviewer . resolved

          This comment was generated by [Experimental Blink C++ Code Review Agent](http://go/blink-c++-code-review-agent) \
          To opt out permanently, please join [Blink AIAgent Optout](https://ganpati2.corp.google.com/group/peep-genai-blink-agent-optout.prod)

          Blink Style Guide: Don't mix Create () factory methods and public constructors in one class. `JSONObject` is a `WTF::RefCounted` object that provides a `JSONObject::Create()` factory method. Please use `auto json_object = JSONObject::Create();` instead of `std::make_unique` to follow the idiomatic creation pattern for this Blink platform object.
          For a quick and terse communication, please consider using one of these options: \
          Done | b/<bug_id> | Invalid: reason | Won't fix: reason<br/>

          NOTE: AI reviews can give wrong results. \
          We apologize in advance for any inconvenience and would love to take your feedback to make this better. \
          [file a bug](http://go/blink-c++-code-review-agent-feedback) or [ping us on chat](https://chat.google.com/room/AAQA0zhQHe0?cls=4)

          Dominic Farolino

          Invalid: Doesn't seem relevant since this is not how the object is created throughout the code base, from what I can tell from a cursory search.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Cheng
          • Nasko Oskov
          • Nidhi Jaju
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
          Gerrit-Change-Number: 6788146
          Gerrit-PatchSet: 16
          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
          Gerrit-Reviewer: Nidhi Jaju <nidh...@chromium.org>
          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Attention: Nidhi Jaju <nidh...@chromium.org>
          Gerrit-Attention: Nasko Oskov <na...@chromium.org>
          Gerrit-Comment-Date: Wed, 13 Aug 2025 21:16:43 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
          Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Dominic Farolino (Gerrit)

          unread,
          Aug 20, 2025, 9:32:26 AM8/20/25
          to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
          Attention needed from Daniel Cheng and Nasko Oskov

          Dominic Farolino added 1 comment

          Patchset-level comments
          File-level comment, Patchset 16 (Latest):
          Dominic Farolino . resolved

          Removing nidhi

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Cheng
          • Nasko Oskov
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
          Gerrit-Change-Number: 6788146
          Gerrit-PatchSet: 16
          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Attention: Nasko Oskov <na...@chromium.org>
          Gerrit-Comment-Date: Wed, 20 Aug 2025 13:32:20 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Nasko Oskov (Gerrit)

          unread,
          Aug 22, 2025, 3:48:58 PM8/22/25
          to Dominic Farolino, AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
          Attention needed from Daniel Cheng and Dominic Farolino

          Nasko Oskov added 2 comments

          File content/browser/renderer_host/render_frame_host_impl.cc
          Line 16153, Patchset 16 (Latest): reader.ReadU32LittleEndian(data_size);
          Nasko Oskov . unresolved

          Not sure whether LittleEndian or NativeEndian is the right thing here, will defer to dcheng@ on that one. It seems to me that NativeEndian is better choice, as we never persist this anywhere, but the warning on the API header is worth another opinion.

          Line 16164, Patchset 16 (Latest): // parsed.
          Nasko Oskov . unresolved

          The malicious renderer still has opportunity for changing the data between the read of the size int and reading the data. I don't know whether a clever attack can be performed by manipulating the actual data once we have read its size ... but the alternatives are likely more complicated to implement. So mostly sharing my thoughts, not sure if there is an action item at this point.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Cheng
          • Dominic Farolino
          Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
          Gerrit-Change-Number: 6788146
          Gerrit-PatchSet: 16
          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
          Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
          Gerrit-Attention: Dominic Farolino <d...@chromium.org>
          Gerrit-Comment-Date: Fri, 22 Aug 2025 19:48:46 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Dominic Farolino (Gerrit)

          unread,
          Oct 16, 2025, 9:51:25 PM10/16/25
          to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
          Attention needed from Daniel Cheng and Nasko Oskov

          Dominic Farolino added 2 comments

          File content/browser/renderer_host/render_frame_host_impl.cc
          Line 16153, Patchset 16: reader.ReadU32LittleEndian(data_size);
          Nasko Oskov . resolved

          Not sure whether LittleEndian or NativeEndian is the right thing here, will defer to dcheng@ on that one. It seems to me that NativeEndian is better choice, as we never persist this anywhere, but the warning on the API header is worth another opinion.

          Dominic Farolino

          Yep, I think you're right, this at least seems the most general option, and I don't think we need to make a non-native decision one way or another, so let's defer to the platform. Fixed this here, and the "write" counterpart in the renderer.

          Line 16164, Patchset 16: // parsed.
          Nasko Oskov . resolved

          The malicious renderer still has opportunity for changing the data between the read of the size int and reading the data. I don't know whether a clever attack can be performed by manipulating the actual data once we have read its size ... but the alternatives are likely more complicated to implement. So mostly sharing my thoughts, not sure if there is an action item at this point.

          Dominic Farolino

          Is the malicious renderer in this case, one that the crashed process handed the handle of writable memory to? So there are three processes:

           - Browser process
          - R1: Malicious renderer that crashes
          - R2: Malicious renderer that colludes with the crashing process

          The scenario you envision is:

           1. R1 initializes crash reporting storage
          1. R1 hands off its writable shared memory handle to R2, a different renderer
          1. R1 crashes
          1. Browser process reads the size int from the shared memory
          1. R2 mutates the contents of the shared memory
          1. Browser process reads the remaining body contents of the shared memory, which has been mutated since it last read the first "size" int parts of the memory

          Just to be clear, this is the scenario you had in mind, right?

          I agree, I don't think there's any action that needs to be taken right now, but I've captured the concern in documentation here. So I'll resolve this.

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Daniel Cheng
          • Nasko Oskov
          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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
            Gerrit-Change-Number: 6788146
            Gerrit-PatchSet: 19
            Gerrit-Owner: Dominic Farolino <d...@chromium.org>
            Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
            Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
            Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
            Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
            Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
            Gerrit-Attention: Nasko Oskov <na...@chromium.org>
            Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
            Gerrit-Comment-Date: Fri, 17 Oct 2025 01:51:20 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Dominic Farolino (Gerrit)

            unread,
            Oct 16, 2025, 9:52:02 PM10/16/25
            to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org

            Dominic Farolino added 1 comment

            Patchset-level comments
            File-level comment, Patchset 19 (Latest):
            Dominic Farolino . resolved

            Clearing the attention set since I still need to resolve some of the questions on the internal security review thread.

            Open in Gerrit

            Related details

            Attention set is empty
            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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
            Gerrit-Change-Number: 6788146
            Gerrit-PatchSet: 19
            Gerrit-Owner: Dominic Farolino <d...@chromium.org>
            Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
            Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
            Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
            Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
            Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
            Gerrit-Comment-Date: Fri, 17 Oct 2025 01:51:53 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Dominic Farolino (Gerrit)

            unread,
            Dec 1, 2025, 3:07:40 PM12/1/25
            to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
            Attention needed from Daniel Cheng and Nasko Oskov

            Dominic Farolino voted and added 2 comments

            Votes added by Dominic Farolino

            Commit-Queue+1

            2 comments

            Patchset-level comments
            File-level comment, Patchset 6:
            Daniel Cheng . resolved

            Have you discussed OS-specific limits around shmem? How was the limit of 5MB determined? Are there any platform-specific limits we need to be concerned about? Can a renderer easily use up all allocatable shmem regions on a machine just with JS calls, whereas maybe it was harder before?

            Dominic Farolino

            I'm hoping the security review will help flesh some of this out, specifically around the OS-specific and platform-specific limits. I don't know enough about what to be concerned with there, outside of what you mentioned regarding shared memory being a scarce resource on some platforms. I suspect we may end up with some limits around how many times this API can be called within a tab, or how many bytes can be allocated in a tab that has platform-specific constraints or so, but I don't know enough about the platform limitations myself, so I'd like to hear more from security reviewers.

            Dominic Farolino

            I'll resolve this since we're discussing the security implications of this CL in https://groups.google.com/a/google.com/g/chrome-security-reviews/c/ug0-uatcaFE

            File-level comment, Patchset 26 (Latest):
            Dominic Farolino . resolved

            nasko@ PTAL at //content/browser
            dcheng@ PTAL at the parsing/serialization code in render_frame_host_impl.cc, as well as the renderer-side changes

            Note that this feature is still under security review, but I'm hopeful we can land this CL now, and implement any restrictions that we decide on in https://groups.google.com/a/google.com/g/chrome-security-reviews/c/ug0-uatcaFE in a separate CL. We of course cannot ship the API until security signs off, so I think it should be OK to land this CL while this is under a flag.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Daniel Cheng
            • Nasko Oskov
            Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
              Gerrit-Change-Number: 6788146
              Gerrit-PatchSet: 26
              Gerrit-Owner: Dominic Farolino <d...@chromium.org>
              Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
              Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
              Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
              Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
              Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
              Gerrit-Attention: Nasko Oskov <na...@chromium.org>
              Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
              Gerrit-Comment-Date: Mon, 01 Dec 2025 20:07:29 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: Yes
              Comment-In-Reply-To: Dominic Farolino <d...@chromium.org>
              Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Dominic Farolino (Gerrit)

              unread,
              Dec 8, 2025, 9:12:47 AM12/8/25
              to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
              Attention needed from Daniel Cheng and Nasko Oskov

              Dominic Farolino voted and added 1 comment

              Votes added by Dominic Farolino

              Commit-Queue+1

              1 comment

              Patchset-level comments
              File-level comment, Patchset 27 (Latest):
              Dominic Farolino . resolved

              dcheng@: I've updated the shared memory size limit after Friday's resolution. PTAL!

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Daniel Cheng
              • Nasko Oskov
              Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
              Gerrit-Change-Number: 6788146
              Gerrit-PatchSet: 27
              Gerrit-Owner: Dominic Farolino <d...@chromium.org>
              Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
              Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
              Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
              Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
              Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
              Gerrit-Attention: Nasko Oskov <na...@chromium.org>
              Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
              Gerrit-Comment-Date: Mon, 08 Dec 2025 14:12:42 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: Yes
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Daniel Cheng (Gerrit)

              unread,
              Dec 8, 2025, 12:23:56 PM12/8/25
              to Dominic Farolino, AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
              Attention needed from Dominic Farolino and Nasko Oskov

              Daniel Cheng added 7 comments

              File content/browser/renderer_host/render_frame_host_impl.h
              Line 5583, Patchset 27 (Latest): base::UnsafeSharedMemoryRegion crash_report_storage_region_;
              Daniel Cheng . unresolved

              Do we need this here too?

              File content/browser/renderer_host/render_frame_host_impl.cc
              Line 10985, Patchset 27 (Latest): if (length > blink::mojom::kMaxCrashReportStorageSize) {
              Daniel Cheng . unresolved

              I would like to adjust this limit before we land this.

              Line 16321, Patchset 27 (Latest): if (mapping.size() >= sizeof(data_size) + data_size) {
              Daniel Cheng . unresolved

              Should we report bad message and early return on general principle here?

              Line 16322, Patchset 27 (Latest): base::span<const uint8_t> body_span;
              // Take a copy of the entire crash report API memory, to snapshot the
              // data so that a malicious writer can't change it while it's being
              // parsed. Note that technically malicious writer could technically
              // change the data that we're about to snapshot, after we've read
              // `data_size`, but changing the contents or format of this data after
              // we snapshot the body below shouldn't matter; the worst that can
              // happen is the data is no longer valid JSON, and does not get added to
              // the report.
              DCHECK(reader.ReadInto(data_size, body_span));
              std::string body_copy(body_span.begin(), body_span.end());
              Daniel Cheng . unresolved

              Would it make sense to use `SpanReader::ReadCopy()` here?

              Line 16348, Patchset 27 (Latest): body.Set("crash_report_api", std::move(crash_report_api_body));
              Daniel Cheng . unresolved

              Or is it important to still do these steps even if the preconditions above are violated?

              File third_party/blink/renderer/core/frame/crash_report_storage.cc
              Line 7, Patchset 27 (Latest):#include "base/bits.h"
              Daniel Cheng . unresolved

              Is this needed?

              Line 163, Patchset 27 (Latest): base::CheckedNumeric<size_t> total_size = utf8.size();
              total_size += sizeof(uint32_t);

              if (!base::IsValueInRangeForNumericType<uint32_t>(utf8.size()) ||
              total_size.ValueOrDie() > shm_mapping_.size()) {
              Daniel Cheng . unresolved
              ```suggestion
              if (base::CheckedAdd(utf8.size(), sizeof(uint32_t)).IsInvalidOr(
              [this] (uint32_t val) { return val > shm_mapping_.size(); }) {
              ```
              Open in Gerrit

              Related details

              Attention is currently required from:
              • Dominic Farolino
              • Nasko Oskov
              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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                Gerrit-Change-Number: 6788146
                Gerrit-PatchSet: 27
                Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                Gerrit-Comment-Date: Mon, 08 Dec 2025 17:23:44 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Dominic Farolino (Gerrit)

                unread,
                Dec 10, 2025, 3:54:26 PM12/10/25
                to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                Attention needed from Daniel Cheng and Nasko Oskov

                Dominic Farolino added 6 comments

                File content/browser/renderer_host/render_frame_host_impl.h
                Line 5583, Patchset 27: base::UnsafeSharedMemoryRegion crash_report_storage_region_;
                Daniel Cheng . resolved

                Do we need this here too?

                Dominic Farolino

                Nope, I missed this while rebasing, sorry. Removed.

                File content/browser/renderer_host/render_frame_host_impl.cc
                Line 10985, Patchset 27: if (length > blink::mojom::kMaxCrashReportStorageSize) {
                Daniel Cheng . resolved

                I would like to adjust this limit before we land this.

                Dominic Farolino

                It has been adjusted already in `frame.mojom` in this PS, to `65536` (i.e., 64KiB as we discussed). So I think we're OK to resolve this? (Sorry, I'm assuming that you missed the change, but if *I'm* actually missing something, lmk.

                Line 16321, Patchset 27: if (mapping.size() >= sizeof(data_size) + data_size) {
                Daniel Cheng . unresolved

                Should we report bad message and early return on general principle here?

                Dominic Farolino

                We don't want to early-return. Just because a compromised renderer abused the `window.crashReport` API, I don't think the origin should be deprived of the other trusted data that the browser is equipped to supply in the crash report. As for bad messaging... I'm not sure it's useful if the renderer process has already crashed—does bad messaging do anything else useful to us, besides crashing? (Maybe some statistics are reported internally?).

                I'm happy leaving this alone here, but lmk if you'd liek something different.

                Line 16322, Patchset 27: base::span<const uint8_t> body_span;

                // Take a copy of the entire crash report API memory, to snapshot the
                // data so that a malicious writer can't change it while it's being
                // parsed. Note that technically malicious writer could technically
                // change the data that we're about to snapshot, after we've read
                // `data_size`, but changing the contents or format of this data after
                // we snapshot the body below shouldn't matter; the worst that can
                // happen is the data is no longer valid JSON, and does not get added to
                // the report.
                DCHECK(reader.ReadInto(data_size, body_span));
                std::string body_copy(body_span.begin(), body_span.end());
                Daniel Cheng . unresolved

                Would it make sense to use `SpanReader::ReadCopy()` here?

                Dominic Farolino

                Can you clarify what you envision here? I tried the following:

                ```
                std::string body_copy(data_size, '\0');
                base::span<const uint8_t> body_span = base::byte_span_from_cstring(body_copy.c_str());
                DCHECK(reader.ReadCopy(body_span));
                ```

                In order to get a byte span from the string with appropriate size, so we could read the copy into *that* byte span, but that didn't work. The compiler didn't like it:

                ```
                ../../content/browser/renderer_host/render_frame_host_impl.cc:16366:47: error: no matching function for call to 'byte_span_from_cstring'
                16366 | base::span<const uint8_t> body_span = base::byte_span_from_cstring(body_copy.c_str());
                | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ../../base/containers/span.h:1651:16: note: candidate template ignored: could not match 'CharT[Extent]' against 'const value_type *' (aka 'const char *')
                1651 | constexpr auto byte_span_from_cstring(const CharT (&str LIFETIME_BOUND)[Extent])
                | ^
                ../../content/browser/renderer_host/render_frame_host_impl.cc:16367:32: error: no viable conversion from 'span<const uint8_t>' to 'span<std::remove_const_t<const unsigned char>>'
                16367 | DCHECK(reader.ReadCopy(body_span));
                ```

                Do you have a different way in mind, of getting the byte span to read the copy into? Or am I just going about this wrong.

                Line 16348, Patchset 27: body.Set("crash_report_api", std::move(crash_report_api_body));
                Daniel Cheng . resolved

                Or is it important to still do these steps even if the preconditions above are violated?

                Dominic Farolino

                Correct, as discussed above (so I'll resolve this).

                File third_party/blink/renderer/core/frame/crash_report_storage.cc
                Line 7, Patchset 27:#include "base/bits.h"
                Daniel Cheng . resolved

                Is this needed?

                Dominic Farolino

                No, removed.

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Daniel Cheng
                • Nasko Oskov
                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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                Gerrit-Change-Number: 6788146
                Gerrit-PatchSet: 28
                Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
                Gerrit-Comment-Date: Wed, 10 Dec 2025 20:54:19 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Nasko Oskov (Gerrit)

                unread,
                Dec 10, 2025, 4:06:06 PM12/10/25
                to Dominic Farolino, AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                Attention needed from Daniel Cheng and Dominic Farolino

                Nasko Oskov added 2 comments

                File content/browser/renderer_host/render_frame_host_impl.cc
                Line 16297, Patchset 27: // Read the key/value data from the `crash_report_storage_region_` shared
                Nasko Oskov . unresolved

                This should be updated to be the document associated data, not the private member of RFH, based on the code below.

                Line 16325, Patchset 27: // parsed. Note that technically malicious writer could technically
                Nasko Oskov . unresolved

                nit: used technically twice technically : )

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Daniel Cheng
                • Dominic Farolino
                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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                Gerrit-Change-Number: 6788146
                Gerrit-PatchSet: 28
                Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
                Gerrit-Comment-Date: Wed, 10 Dec 2025 21:05:56 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Daniel Cheng (Gerrit)

                unread,
                Dec 11, 2025, 12:20:45 AM12/11/25
                to Dominic Farolino, AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                Attention needed from Dominic Farolino

                Daniel Cheng added 5 comments

                File content/browser/renderer_host/render_frame_host_impl.cc
                Line 16305, Patchset 27: base::WritableSharedMemoryMapping mapping =
                Daniel Cheng . unresolved

                I would suggest pulling this entire block out into a helper function.

                Line 16308, Patchset 27: if (mapping.IsValid() && mapping.size() >= sizeof(uint32_t)) {
                Daniel Cheng . unresolved

                Because then we can just early return when things are invalid. And we don't need the sizeof check

                Line 16314, Patchset 27: reader.ReadU32NativeEndian(data_size);
                Daniel Cheng . unresolved

                Because we can just use the return value here to determine if the span was big enough.

                Line 16321, Patchset 27: if (mapping.size() >= sizeof(data_size) + data_size) {
                Daniel Cheng . resolved

                Should we report bad message and early return on general principle here?

                Dominic Farolino

                We don't want to early-return. Just because a compromised renderer abused the `window.crashReport` API, I don't think the origin should be deprived of the other trusted data that the browser is equipped to supply in the crash report. As for bad messaging... I'm not sure it's useful if the renderer process has already crashed—does bad messaging do anything else useful to us, besides crashing? (Maybe some statistics are reported internally?).

                I'm happy leaving this alone here, but lmk if you'd liek something different.

                Daniel Cheng

                That's fine. But I think we should pull this logic out to make it less deeply-nested/a bit easier to read.

                Line 16322, Patchset 27: base::span<const uint8_t> body_span;

                // Take a copy of the entire crash report API memory, to snapshot the
                // data so that a malicious writer can't change it while it's being
                // parsed. Note that technically malicious writer could technically
                // change the data that we're about to snapshot, after we've read
                // `data_size`, but changing the contents or format of this data after
                // we snapshot the body below shouldn't matter; the worst that can
                // happen is the data is no longer valid JSON, and does not get added to
                // the report.
                DCHECK(reader.ReadInto(data_size, body_span));
                std::string body_copy(body_span.begin(), body_span.end());
                Daniel Cheng . unresolved

                Would it make sense to use `SpanReader::ReadCopy()` here?

                Dominic Farolino

                Can you clarify what you envision here? I tried the following:

                ```
                std::string body_copy(data_size, '\0');
                base::span<const uint8_t> body_span = base::byte_span_from_cstring(body_copy.c_str());
                DCHECK(reader.ReadCopy(body_span));
                ```

                In order to get a byte span from the string with appropriate size, so we could read the copy into *that* byte span, but that didn't work. The compiler didn't like it:

                ```
                ../../content/browser/renderer_host/render_frame_host_impl.cc:16366:47: error: no matching function for call to 'byte_span_from_cstring'
                16366 | base::span<const uint8_t> body_span = base::byte_span_from_cstring(body_copy.c_str());
                | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ../../base/containers/span.h:1651:16: note: candidate template ignored: could not match 'CharT[Extent]' against 'const value_type *' (aka 'const char *')
                1651 | constexpr auto byte_span_from_cstring(const CharT (&str LIFETIME_BOUND)[Extent])
                | ^
                ../../content/browser/renderer_host/render_frame_host_impl.cc:16367:32: error: no viable conversion from 'span<const uint8_t>' to 'span<std::remove_const_t<const unsigned char>>'
                16367 | DCHECK(reader.ReadCopy(body_span));
                ```

                Do you have a different way in mind, of getting the byte span to read the copy into? Or am I just going about this wrong.

                Daniel Cheng
                I think there are several possible approaches here. The simplest is probably:

                ```
                std::string body_copy(data_size, '\0');
                        DCHECK(reader.ReadCopy(base::as_bytes(base::span(body_copy))));
                ```
                Open in Gerrit

                Related details

                Attention is currently required from:
                • Dominic Farolino
                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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                Gerrit-Change-Number: 6788146
                Gerrit-PatchSet: 28
                Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                Gerrit-Comment-Date: Thu, 11 Dec 2025 05:20:34 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Dominic Farolino (Gerrit)

                unread,
                Jan 7, 2026, 3:35:31 PM (3 days ago) Jan 7
                to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                Attention needed from Daniel Cheng and Nasko Oskov

                Dominic Farolino voted and added 8 comments

                Votes added by Dominic Farolino

                Code-Review+1

                8 comments

                Patchset-level comments
                File-level comment, Patchset 31 (Latest):
                Dominic Farolino . resolved

                I think this is ready to go! PTAL!

                File content/browser/renderer_host/render_frame_host_impl.cc
                Line 16297, Patchset 27: // Read the key/value data from the `crash_report_storage_region_` shared
                Nasko Oskov . resolved

                This should be updated to be the document associated data, not the private member of RFH, based on the code below.

                Dominic Farolino

                Done

                Line 16305, Patchset 27: base::WritableSharedMemoryMapping mapping =
                Daniel Cheng . resolved

                I would suggest pulling this entire block out into a helper function.

                Dominic Farolino

                Done

                Line 16308, Patchset 27: if (mapping.IsValid() && mapping.size() >= sizeof(uint32_t)) {
                Daniel Cheng . resolved

                Because then we can just early return when things are invalid. And we don't need the sizeof check

                Dominic Farolino

                Done

                Line 16314, Patchset 27: reader.ReadU32NativeEndian(data_size);
                Daniel Cheng . resolved

                Because we can just use the return value here to determine if the span was big enough.

                Dominic Farolino

                Done

                Line 16325, Patchset 27: // parsed. Note that technically malicious writer could technically
                Nasko Oskov . resolved

                nit: used technically twice technically : )

                Dominic Farolino

                Eek, nice catch. Done!

                Line 16322, Patchset 27: base::span<const uint8_t> body_span;
                // Take a copy of the entire crash report API memory, to snapshot the
                // data so that a malicious writer can't change it while it's being
                // parsed. Note that technically malicious writer could technically
                // change the data that we're about to snapshot, after we've read
                // `data_size`, but changing the contents or format of this data after
                // we snapshot the body below shouldn't matter; the worst that can
                // happen is the data is no longer valid JSON, and does not get added to
                // the report.
                DCHECK(reader.ReadInto(data_size, body_span));
                std::string body_copy(body_span.begin(), body_span.end());
                Daniel Cheng . resolved

                Would it make sense to use `SpanReader::ReadCopy()` here?

                Dominic Farolino

                Can you clarify what you envision here? I tried the following:

                ```
                std::string body_copy(data_size, '\0');
                base::span<const uint8_t> body_span = base::byte_span_from_cstring(body_copy.c_str());
                DCHECK(reader.ReadCopy(body_span));
                ```

                In order to get a byte span from the string with appropriate size, so we could read the copy into *that* byte span, but that didn't work. The compiler didn't like it:

                ```
                ../../content/browser/renderer_host/render_frame_host_impl.cc:16366:47: error: no matching function for call to 'byte_span_from_cstring'
                16366 | base::span<const uint8_t> body_span = base::byte_span_from_cstring(body_copy.c_str());
                | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                ../../base/containers/span.h:1651:16: note: candidate template ignored: could not match 'CharT[Extent]' against 'const value_type *' (aka 'const char *')
                1651 | constexpr auto byte_span_from_cstring(const CharT (&str LIFETIME_BOUND)[Extent])
                | ^
                ../../content/browser/renderer_host/render_frame_host_impl.cc:16367:32: error: no viable conversion from 'span<const uint8_t>' to 'span<std::remove_const_t<const unsigned char>>'
                16367 | DCHECK(reader.ReadCopy(body_span));
                ```

                Do you have a different way in mind, of getting the byte span to read the copy into? Or am I just going about this wrong.

                Daniel Cheng
                I think there are several possible approaches here. The simplest is probably:
                ```
                std::string body_copy(data_size, '\0');
                DCHECK(reader.ReadCopy(base::as_bytes(base::span(body_copy))));
                ```
                Dominic Farolino

                I needed `as_writable_bytes`, but looks like that did the trick. So close. Thanks.

                File third_party/blink/renderer/core/frame/crash_report_storage.cc
                Line 163, Patchset 27: base::CheckedNumeric<size_t> total_size = utf8.size();

                total_size += sizeof(uint32_t);

                if (!base::IsValueInRangeForNumericType<uint32_t>(utf8.size()) ||
                total_size.ValueOrDie() > shm_mapping_.size()) {
                Daniel Cheng . resolved
                ```suggestion
                if (base::CheckedAdd(utf8.size(), sizeof(uint32_t)).IsInvalidOr(
                [this] (uint32_t val) { return val > shm_mapping_.size(); }) {
                ```
                Dominic Farolino

                Done

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Daniel Cheng
                • Nasko Oskov
                Submit Requirements:
                  • requirement satisfiedCode-Coverage
                  • requirement is not satisfiedCode-Owners
                  • requirement is not satisfiedCode-Review
                  • 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                  Gerrit-Change-Number: 6788146
                  Gerrit-PatchSet: 31
                  Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                  Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                  Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                  Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                  Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                  Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                  Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                  Gerrit-Attention: Daniel Cheng <dch...@chromium.org>
                  Gerrit-Comment-Date: Wed, 07 Jan 2026 20:35:25 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: Yes
                  Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Dominic Farolino (Gerrit)

                  unread,
                  Jan 7, 2026, 3:35:39 PM (3 days ago) Jan 7
                  to AI Code Reviewer, Chromium LUCI CQ, Daniel Cheng, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                  Attention needed from Daniel Cheng and Nasko Oskov

                  Dominic Farolino voted and added 1 comment

                  Votes added by Dominic Farolino

                  Code-Review+0
                  Commit-Queue+1

                  1 comment

                  Patchset-level comments
                  Dominic Farolino . resolved

                  (oops)

                  Gerrit-Comment-Date: Wed, 07 Jan 2026 20:35:33 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Daniel Cheng (Gerrit)

                  unread,
                  Jan 7, 2026, 8:53:10 PM (3 days ago) Jan 7
                  to Dominic Farolino, Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                  Attention needed from Dominic Farolino and Nasko Oskov

                  Daniel Cheng voted and added 2 comments

                  Votes added by Daniel Cheng

                  Code-Review+1

                  2 comments

                  Patchset-level comments
                  Daniel Cheng . resolved

                  LGTM

                  File content/browser/renderer_host/render_frame_host_impl.h
                  Line 4071, Patchset 31 (Latest): void ReadCrashReportAPIBody(base::Value::Dict&);
                  Daniel Cheng . unresolved

                  Nit: return a `base::Value::Dict` here rather than using an out param

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Dominic Farolino
                  • Nasko Oskov
                  Submit Requirements:
                    • requirement satisfiedCode-Coverage
                    • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                    Gerrit-Change-Number: 6788146
                    Gerrit-PatchSet: 31
                    Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                    Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                    Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                    Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                    Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                    Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                    Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                    Gerrit-Comment-Date: Thu, 08 Jan 2026 01:53:00 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: Yes
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Dominic Farolino (Gerrit)

                    unread,
                    Jan 8, 2026, 7:58:56 AM (3 days ago) Jan 8
                    to Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                    Attention needed from Nasko Oskov and mmenke

                    Dominic Farolino voted and added 2 comments

                    Votes added by Dominic Farolino

                    Commit-Queue+1

                    2 comments

                    Patchset-level comments
                    File-level comment, Patchset 32 (Latest):
                    Dominic Farolino . resolved

                    Adding mmenke@ for reporting_browsertest.cc

                    File content/browser/renderer_host/render_frame_host_impl.h
                    Line 4071, Patchset 31: void ReadCrashReportAPIBody(base::Value::Dict&);
                    Daniel Cheng . resolved

                    Nit: return a `base::Value::Dict` here rather than using an out param

                    Dominic Farolino

                    Done

                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Nasko Oskov
                    • mmenke
                    Submit Requirements:
                      • requirement satisfiedCode-Coverage
                      • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                      Gerrit-Change-Number: 6788146
                      Gerrit-PatchSet: 32
                      Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                      Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                      Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                      Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                      Gerrit-Reviewer: mmenke <mme...@chromium.org>
                      Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                      Gerrit-Attention: mmenke <mme...@chromium.org>
                      Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                      Gerrit-Comment-Date: Thu, 08 Jan 2026 12:58:49 +0000
                      Gerrit-HasComments: Yes
                      Gerrit-Has-Labels: Yes
                      Comment-In-Reply-To: Daniel Cheng <dch...@chromium.org>
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      mmenke (Gerrit)

                      unread,
                      Jan 8, 2026, 11:30:25 AM (3 days ago) Jan 8
                      to Dominic Farolino, Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                      Attention needed from Dominic Farolino and Nasko Oskov

                      mmenke voted and added 3 comments

                      Votes added by mmenke

                      Code-Review+1

                      3 comments

                      Patchset-level comments
                      mmenke . resolved

                      LGTM. Comments are optional.

                      File chrome/browser/net/reporting_browsertest.cc
                      Line 803, Patchset 32 (Latest): // page. In this case, just a custom key that gets written to twice, to verify
                      // that the most recent write gets recorded and comes out on the other end of
                      // the crash report.
                      mmenke . unresolved

                      Not a sentence - needs a verb (pre-existing issue). `use it to write a custom key twice, to...` maybe?

                      Line 885, Patchset 32 (Latest): // Verify the contents of the report that we received.
                      const base::Value::Dict& report = request.begin()->GetDict();
                      const std::string* type = report.FindString("type");
                      const std::string* url = report.FindString("url");
                      const base::Value::Dict* body = report.FindDict("body");
                      const std::string* reason = body->FindString("reason");
                      const base::Value::Dict* crash_report_api_body =
                      body->FindDict("crash_report_api");
                      const std::string* custom_key =
                      crash_report_api_body->FindString("custom_key");
                      mmenke . unresolved

                      optional: Suggest using values_test_util.

                      ```
                      EXPECT_THAT(report, base::test::IsJson(<multi-line-json-string>));
                      (IsJson supports std::strings in addition to Values/Lists/Dicts)
                      ```

                      If you don't want to do an exact match, there's also IsSupersetOfValue(). I believe its superset logic is recursive.

                      Given that we hard-code the length of the JSON object, though, I think exact match is fine, since we'd need to update the test anyways if that changes?

                      Open in Gerrit

                      Related details

                      Attention is currently required from:
                      • Dominic Farolino
                      • Nasko Oskov
                      Submit Requirements:
                        • requirement satisfiedCode-Coverage
                        • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                        Gerrit-Change-Number: 6788146
                        Gerrit-PatchSet: 32
                        Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                        Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                        Gerrit-Reviewer: mmenke <mme...@chromium.org>
                        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                        Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                        Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                        Gerrit-Comment-Date: Thu, 08 Jan 2026 16:30:19 +0000
                        Gerrit-HasComments: Yes
                        Gerrit-Has-Labels: Yes
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Nasko Oskov (Gerrit)

                        unread,
                        Jan 9, 2026, 5:00:25 PM (2 days ago) Jan 9
                        to Dominic Farolino, Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                        Attention needed from Dominic Farolino

                        Nasko Oskov added 2 comments

                        File content/browser/renderer_host/render_frame_host_impl.cc
                        Line 16356, Patchset 32 (Latest): // Read the key/value data from the document associated data' shared memory
                        Nasko Oskov . unresolved

                        nit: Unnecessary?

                        Line 16433, Patchset 32 (Latest): DCHECK(reader.ReadCopy(base::as_writable_bytes(base::span(body_copy))));
                        Nasko Oskov . unresolved

                        If DCHECKs are disabled, wouldn't this result in the `ReadCopy` call being skipped entirely? It will then operate on empty body and not attach anything to the actual report.

                        Open in Gerrit

                        Related details

                        Attention is currently required from:
                        • Dominic Farolino
                        Submit Requirements:
                        • requirement satisfiedCode-Coverage
                        • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                        Gerrit-Change-Number: 6788146
                        Gerrit-PatchSet: 32
                        Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                        Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                        Gerrit-Reviewer: mmenke <mme...@chromium.org>
                        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                        Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                        Gerrit-Comment-Date: Fri, 09 Jan 2026 22:00:13 +0000
                        Gerrit-HasComments: Yes
                        Gerrit-Has-Labels: No
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Dominic Farolino (Gerrit)

                        unread,
                        Jan 9, 2026, 7:10:48 PM (2 days ago) Jan 9
                        to Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                        Attention needed from Nasko Oskov

                        Dominic Farolino voted and added 3 comments

                        Votes added by Dominic Farolino

                        Commit-Queue+1

                        3 comments

                        Patchset-level comments
                        File-level comment, Patchset 33 (Latest):
                        Dominic Farolino . resolved

                        PTAL! (will look at mmenke@'s review later, since it won't impact the CR statuses).

                        File content/browser/renderer_host/render_frame_host_impl.cc
                        Line 16356, Patchset 32: // Read the key/value data from the document associated data' shared memory
                        Nasko Oskov . resolved

                        nit: Unnecessary?

                        Dominic Farolino

                        Yep. Removed.

                        Line 16433, Patchset 32: DCHECK(reader.ReadCopy(base::as_writable_bytes(base::span(body_copy))));
                        Nasko Oskov . resolved

                        If DCHECKs are disabled, wouldn't this result in the `ReadCopy` call being skipped entirely? It will then operate on empty body and not attach anything to the actual report.

                        Dominic Farolino

                        Yep (and we talked about this offline). Good catch, done.

                        Open in Gerrit

                        Related details

                        Attention is currently required from:
                        • Nasko Oskov
                        Submit Requirements:
                        • requirement satisfiedCode-Coverage
                        • requirement is not 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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                        Gerrit-Change-Number: 6788146
                        Gerrit-PatchSet: 33
                        Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                        Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                        Gerrit-Reviewer: mmenke <mme...@chromium.org>
                        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                        Gerrit-Attention: Nasko Oskov <na...@chromium.org>
                        Gerrit-Comment-Date: Sat, 10 Jan 2026 00:10:40 +0000
                        Gerrit-HasComments: Yes
                        Gerrit-Has-Labels: Yes
                        Comment-In-Reply-To: Nasko Oskov <na...@chromium.org>
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Nasko Oskov (Gerrit)

                        unread,
                        Jan 9, 2026, 9:05:46 PM (2 days ago) Jan 9
                        to Dominic Farolino, Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org
                        Attention needed from Dominic Farolino

                        Nasko Oskov voted Code-Review+1

                        Code-Review+1
                        Open in Gerrit

                        Related details

                        Attention is currently required from:
                        • Dominic Farolino
                        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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                        Gerrit-Change-Number: 6788146
                        Gerrit-PatchSet: 33
                        Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                        Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                        Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                        Gerrit-Reviewer: mmenke <mme...@chromium.org>
                        Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                        Gerrit-Attention: Dominic Farolino <d...@chromium.org>
                        Gerrit-Comment-Date: Sat, 10 Jan 2026 02:05:36 +0000
                        Gerrit-HasComments: No
                        Gerrit-Has-Labels: Yes
                        satisfied_requirement
                        unsatisfied_requirement
                        open
                        diffy

                        Dominic Farolino (Gerrit)

                        unread,
                        Jan 10, 2026, 1:05:53 PM (14 hours ago) Jan 10
                        to Daniel Cheng, AI Code Reviewer, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org

                        Dominic Farolino voted and added 2 comments

                        Votes added by Dominic Farolino

                        Commit-Queue+2

                        2 comments

                        File chrome/browser/net/reporting_browsertest.cc
                        Line 803, Patchset 32: // page. In this case, just a custom key that gets written to twice, to verify

                        // that the most recent write gets recorded and comes out on the other end of
                        // the crash report.
                        mmenke . resolved

                        Not a sentence - needs a verb (pre-existing issue). `use it to write a custom key twice, to...` maybe?

                        Dominic Farolino

                        Fixed this differently, more more to what I was trying to achieve in the first place. Thanks for catching.

                        Line 885, Patchset 32: // Verify the contents of the report that we received.

                        const base::Value::Dict& report = request.begin()->GetDict();
                        const std::string* type = report.FindString("type");
                        const std::string* url = report.FindString("url");
                        const base::Value::Dict* body = report.FindDict("body");
                        const std::string* reason = body->FindString("reason");
                        const base::Value::Dict* crash_report_api_body =
                        body->FindDict("crash_report_api");
                        const std::string* custom_key =
                        crash_report_api_body->FindString("custom_key");
                        mmenke . resolved

                        optional: Suggest using values_test_util.

                        ```
                        EXPECT_THAT(report, base::test::IsJson(<multi-line-json-string>));
                        (IsJson supports std::strings in addition to Values/Lists/Dicts)
                        ```

                        If you don't want to do an exact match, there's also IsSupersetOfValue(). I believe its superset logic is recursive.

                        Given that we hard-code the length of the JSON object, though, I think exact match is fine, since we'd need to update the test anyways if that changes?

                        Dominic Farolino

                        I think that's reasonable, but yeah since everything is hardcoded and this matches the other tests, I will opt to leave it be.

                        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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                          Gerrit-Change-Number: 6788146
                          Gerrit-PatchSet: 34
                          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                          Gerrit-Reviewer: mmenke <mme...@chromium.org>
                          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                          Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
                          Gerrit-Comment-Date: Sat, 10 Jan 2026 18:05:47 +0000
                          Gerrit-HasComments: Yes
                          Gerrit-Has-Labels: Yes
                          Comment-In-Reply-To: mmenke <mme...@chromium.org>
                          satisfied_requirement
                          open
                          diffy

                          Chromium LUCI CQ (Gerrit)

                          unread,
                          Jan 10, 2026, 2:09:08 PM (13 hours ago) Jan 10
                          to Dominic Farolino, Daniel Cheng, AI Code Reviewer, Chromium Metrics Reviews, chromium...@chromium.org, alexmo...@chromium.org, android-web...@chromium.org, ashleynewson+w...@chromium.org, asvitkine...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, creis...@chromium.org, ipc-securi...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, navigation...@chromium.org, net-r...@chromium.org

                          Chromium LUCI CQ submitted the change with unreviewed changes

                          Unreviewed changes

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

                          ```
                          The name of the file: chrome/browser/net/reporting_browsertest.cc
                          Insertions: 3, Deletions: 3.

                          @@ -800,9 +800,9 @@
                          EXPECT_TRUE(NavigateToURL(contents, main_url));

                          // Use the crash reporting storage API, to collect some data about the current
                          - // page. In this case, just a custom key that gets written to twice, to verify
                          - // that the most recent write gets recorded and comes out on the other end of
                          - // the crash report.
                          + // page. In this case, a custom key gets written to twice, to verify that the
                          + // most recent write gets recorded and comes out on the other end of the crash
                          + // report.
                          EXPECT_TRUE(content::EvalJs(contents->GetPrimaryMainFrame(), R"(
                          (async () => {
                          await crashReport.initialize(100);
                          ```

                          Change information

                          Commit message:
                          CrashReportStorage API uses shared memory instead of sync IPCs

                          This CL refactors the CrashReportStorage API to remove the synchronous
                          set()/remove() IPCs in favor of shared memory that is directly
                          written to by the renderer. The crash report shared memory is read from
                          the browser process after a renderer crash, in
                          RenderFrameHostImpl::MaybeGenerateCrashReport(). The motivation for this
                          change is that the sync IPCs were found to be prohibitively expensive
                          for sites to deploy this API without putting an excessive amount of
                          thought into the paths that this this API was being used on. This cuts
                          against the intent of the API, which is meant to be a drop-in crash
                          debugging assist tool. See
                          https://github.com/WICG/crash-reporting/blob/gh-pages/crashReport-explainer.md.

                          This CL makes the CrashReportStorage#initialize() Web IDL method send
                          its requested size, in bytes, to the browser process, which vends a
                          writable shared memory buffer handle to the renderer.

                          Note that the shared memory buffer that the browser vends is exactly N
                          bytes in size, where N is:
                          - The developer's requested length in bytes (enforced to be less than
                          `kMaxCrashReportStorageSize`); plus
                          - `sizeof(unt32_t)`

                          This is so that the renderer can write a leading integer at the front
                          of the buffer, recording the number of bytes used in the buffer after
                          every set()/remove() call. The browser reads this leading integer when
                          parsing and serializing the bytes into JSON, to be attached to the
                          web-exposed crash report.

                          R=dcheng, nasko
                          Bug: 400432195
                          Change-Id: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                          Reviewed-by: mmenke <mme...@chromium.org>
                          Reviewed-by: Nasko Oskov <na...@chromium.org>
                          Reviewed-by: Daniel Cheng <dch...@chromium.org>
                          Commit-Queue: Dominic Farolino <d...@chromium.org>
                          Cr-Commit-Position: refs/heads/main@{#1567428}
                          Files:
                          • M chrome/browser/net/reporting_browsertest.cc
                          • M content/browser/renderer_host/document_associated_data.cc
                          • M content/browser/renderer_host/document_associated_data.h
                          • M content/browser/renderer_host/render_frame_host_impl.cc
                          • M content/browser/renderer_host/render_frame_host_impl.h
                          • M third_party/blink/public/mojom/frame/frame.mojom
                          • M third_party/blink/renderer/core/frame/DEPS
                          • M third_party/blink/renderer/core/frame/crash_report_storage.cc
                          • M third_party/blink/renderer/core/frame/crash_report_storage.h
                          • M third_party/blink/renderer/core/testing/fake_local_frame_host.cc
                          • M third_party/blink/renderer/core/testing/fake_local_frame_host.h
                          Change size: L
                          Delta: 11 files changed, 234 insertions(+), 173 deletions(-)
                          Branch: refs/heads/main
                          Submit Requirements:
                          • requirement satisfiedCode-Review: +1 by mmenke, +1 by Nasko Oskov, +1 by Daniel Cheng
                          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: Id1021b891ca190f66f4f7b35cd52300e53245f4a
                          Gerrit-Change-Number: 6788146
                          Gerrit-PatchSet: 35
                          Gerrit-Owner: Dominic Farolino <d...@chromium.org>
                          Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
                          Gerrit-Reviewer: Daniel Cheng <dch...@chromium.org>
                          Gerrit-Reviewer: Dominic Farolino <d...@chromium.org>
                          Gerrit-Reviewer: Nasko Oskov <na...@chromium.org>
                          Gerrit-Reviewer: mmenke <mme...@chromium.org>
                          Gerrit-CC: AI Code Reviewer <peep-gen...@system.gserviceaccount.com>
                          open
                          diffy
                          satisfied_requirement
                          Reply all
                          Reply to author
                          Forward
                          0 new messages