Fix DSE prewarm metrics for RenderProcess reuse [chromium/src : main]

0 views
Skip to first unread message

Keita Suzuki (Gerrit)

unread,
Nov 13, 2025, 1:59:53 AMNov 13
to Takashi Toyoshima, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
Attention needed from Jiacheng Guo and Takashi Toyoshima

New activity on the change

Open in Gerrit

Related details

Attention is currently required from:
  • Jiacheng Guo
  • Takashi Toyoshima
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: Ifa65203507afb4f4a5de93f4f386e728346cf995
Gerrit-Change-Number: 7116488
Gerrit-PatchSet: 11
Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Attention: Takashi Toyoshima <toyo...@chromium.org>
Gerrit-Attention: Jiacheng Guo <g...@google.com>
Gerrit-Comment-Date: Thu, 13 Nov 2025 06:59:24 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Jiacheng Guo (Gerrit)

unread,
Nov 13, 2025, 2:45:03 AMNov 13
to Keita Suzuki, Takashi Toyoshima, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
Attention needed from Keita Suzuki and Takashi Toyoshima

Jiacheng Guo added 4 comments

Patchset-level comments
File-level comment, Patchset 11 (Latest):
Jiacheng Guo . unresolved

Since the logic change is non-trivial, would I ask for a browser test to verify the UMA values are recorded as expected?

File components/page_load_metrics/google/browser/gws_page_load_metrics_observer.cc
Line 366, Patchset 11 (Latest): content::SiteInstanceProcessAssignment::REUSED_EXISTING_PROCESS));
Jiacheng Guo . unresolved

`REUSED_EXISTING_PROCESS` will be the process assignment source in multiple cases not only the RPH reuse for the prerender page. If DSEKeepAlive or multiple SRP in the same renderer feature is enabled, the process assignment will be the same value. A typical case will be:

Prewarm page -> Reuse as SRP A -> Host another SRP B -> Keep alive after closing A and B -> Reuse for C.

Do we want to record prewarm reuse for the page B and C as well?

File content/browser/renderer_host/render_frame_host_impl.cc
Line 15552, Patchset 11 (Latest): auto* prewarm_data =
Jiacheng Guo . unresolved

IIUC, the code here is trying to query if there was once a prewarm page committed in the renderer process. Maybe it is better to do so in `GWSPageLoadMetricsObserver::OnCommit` rather than `RenderFrameHostImpl` since this class is for RFH rather than RPH. Please also add comments about what the code is trying to accomplish since it is a bit hard to understand.

Line 15556, Patchset 11 (Latest): GetProcess(), prewarm_data->prewarm_committed());
Jiacheng Guo . unresolved

Another question is that we are using the navigation request and the process when getting and setting the user data. Can we fetch the previous `prewarm_committed` value stored in the user data of the `RenderProcessHost` with a `NavigationRequest`? I assume them to be different maps.

Open in Gerrit

Related details

Attention is currently required from:
  • Keita Suzuki
  • Takashi Toyoshima
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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 11
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-Attention: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Comment-Date: Thu, 13 Nov 2025 07:44:32 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Takashi Toyoshima (Gerrit)

    unread,
    Nov 18, 2025, 5:39:17 AMNov 18
    to Keita Suzuki, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Keita Suzuki

    Takashi Toyoshima added 3 comments

    Patchset-level comments
    Takashi Toyoshima . resolved

    Sorry for the delay.
    Here are high-level feedback from the viewpoint of //content/public regulations.

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 37, Patchset 11 (Latest): static PrerenderPrewarmNavigationData* Get(
    Takashi Toyoshima . unresolved

    We can still inherit content/public/browser/navigation_handle_user_data.h?

    Line 1, Patchset 11 (Latest):// Copyright 2025 The Chromium Authors
    Takashi Toyoshima . unresolved

    High-level comment:

    https://chromium.googlesource.com/chromium/src/+/main/content/public/README.md

    Regarding the //content/public, we have some strict rules, and here are some rules that this CL is related, or might be related in the future.

    //content/public should contain only interfaces, enums, structs and (rarely) static functions.

    Interfaces that content implements usually should be pure abstract, because usually there's only one implementation. These should not be implemented outside of content. (i.e., content will freely assume that it can cast to its implementation(s)).

    It‘s acceptable to put implementation files that hold constructors/destructors of interfaces/structs which might have member variables. For structs, this covers initializing member variables. For interfaces (i.e. RenderFrameObserver) this might cover things like automatic registration/unregistration. Normally we would put this small code in headers, but because of the clang checks against putting code in headers, we’re forced to put it in .cc files (we don't want to make a clang exception for the content/public directory since that would lead to confusion).

    Only expose methods in the public API that embedders need. If a method is only used by other code in content, it belongs in foo_impl.h and not foo.h.


    So, the implementation file contains some logic other than ctor/dtor, we need to split the implementation to _impl.cc so that we can hide actual implementation from outside //content, and to make the PrerenderPrewarmNavigationData pure virtual (== interface).

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Keita Suzuki
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 11
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Comment-Date: Tue, 18 Nov 2025 10:38:41 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Keita Suzuki (Gerrit)

    unread,
    Nov 28, 2025, 1:54:37 AMNov 28
    to Code Review Nudger, Takashi Toyoshima, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Jiacheng Guo and Takashi Toyoshima

    Keita Suzuki voted and added 5 comments

    Votes added by Keita Suzuki

    Commit-Queue+1

    5 comments

    File components/page_load_metrics/google/browser/gws_page_load_metrics_observer.cc
    Line 366, Patchset 11: content::SiteInstanceProcessAssignment::REUSED_EXISTING_PROCESS));
    Jiacheng Guo . unresolved

    `REUSED_EXISTING_PROCESS` will be the process assignment source in multiple cases not only the RPH reuse for the prerender page. If DSEKeepAlive or multiple SRP in the same renderer feature is enabled, the process assignment will be the same value. A typical case will be:

    Prewarm page -> Reuse as SRP A -> Host another SRP B -> Keep alive after closing A and B -> Reuse for C.

    Do we want to record prewarm reuse for the page B and C as well?

    Keita Suzuki

    To clarify, what we want to know is the conversion rate of the prewarm.

    Personally, I think it is OK to have both

    DSE Prewarm -> DSE A
    and
    DSE Prewarm -> [Multiple Sites on same RenderProcessHost] -> DSE A

    as any subsequent navigations would also benefit from the Prewarm feature.

    Does this make sense?

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 15552, Patchset 11: auto* prewarm_data =
    Jiacheng Guo . unresolved

    IIUC, the code here is trying to query if there was once a prewarm page committed in the renderer process. Maybe it is better to do so in `GWSPageLoadMetricsObserver::OnCommit` rather than `RenderFrameHostImpl` since this class is for RFH rather than RPH. Please also add comments about what the code is trying to accomplish since it is a bit hard to understand.

    Keita Suzuki

    This is trying to query whether a committed `NavigationHandle` has the `PrerenderPrewarmNavigationData` associated with them.
    I think it is OK to do so in PLMO, but I personally believe this should be set here for clarity.

    Line 15556, Patchset 11: GetProcess(), prewarm_data->prewarm_committed());
    Jiacheng Guo . unresolved

    Another question is that we are using the navigation request and the process when getting and setting the user data. Can we fetch the previous `prewarm_committed` value stored in the user data of the `RenderProcessHost` with a `NavigationRequest`? I assume them to be different maps.

    Keita Suzuki

    Hmm, my understanding is that `NavigationRequest` might not exist when `RenderProcessHost` is querying for the previous commit, so we need to copy them to `RenderProcessHost`.

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 37, Patchset 11: static PrerenderPrewarmNavigationData* Get(
    Takashi Toyoshima . unresolved

    We can still inherit content/public/browser/navigation_handle_user_data.h?

    Keita Suzuki

    I'm a bit torn on two opinions.
    On one hand, I want to keep inheriting the `NavigationHandleUserData`, since that provides us with all the utils for NavigationHandle.
    On the other hand, we are adding the same UserData to `RenderProcessHost` as well, which cannot use the NavigationHandle utils.

    Because of this, I prepared a seperate utils for this UserData, and figured if we are using them, it might not be useful to inherit the `NavigationHandleUserData`.

    WDYT?

    Line 1, Patchset 11:// Copyright 2025 The Chromium Authors
    Takashi Toyoshima . unresolved

    High-level comment:

    https://chromium.googlesource.com/chromium/src/+/main/content/public/README.md

    Regarding the //content/public, we have some strict rules, and here are some rules that this CL is related, or might be related in the future.

    //content/public should contain only interfaces, enums, structs and (rarely) static functions.

    Interfaces that content implements usually should be pure abstract, because usually there's only one implementation. These should not be implemented outside of content. (i.e., content will freely assume that it can cast to its implementation(s)).

    It‘s acceptable to put implementation files that hold constructors/destructors of interfaces/structs which might have member variables. For structs, this covers initializing member variables. For interfaces (i.e. RenderFrameObserver) this might cover things like automatic registration/unregistration. Normally we would put this small code in headers, but because of the clang checks against putting code in headers, we’re forced to put it in .cc files (we don't want to make a clang exception for the content/public directory since that would lead to confusion).

    Only expose methods in the public API that embedders need. If a method is only used by other code in content, it belongs in foo_impl.h and not foo.h.


    So, the implementation file contains some logic other than ctor/dtor, we need to split the implementation to _impl.cc so that we can hide actual implementation from outside //content, and to make the PrerenderPrewarmNavigationData pure virtual (== interface).

    Keita Suzuki

    Thanks for the pointers!
    So just to clarify (and looking at the existing use case of the //content/public), the static methods seems to still be OK to exist in //cotent/public, but the `GetNavigationStatus` seems to be out of place?
    In that case, I'll split it to a seperate file (or maybe move it under gws_plmo since it is not used in //content).

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Jiacheng Guo
    • Takashi Toyoshima
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 13
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-Attention: Jiacheng Guo <g...@google.com>
    Gerrit-Comment-Date: Fri, 28 Nov 2025 06:54:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Takashi Toyoshima <toyo...@chromium.org>
    Comment-In-Reply-To: Jiacheng Guo <g...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Takashi Toyoshima (Gerrit)

    unread,
    Dec 1, 2025, 3:59:17 AMDec 1
    to Keita Suzuki, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Jiacheng Guo and Keita Suzuki

    Takashi Toyoshima added 1 comment

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 1, Patchset 11:// Copyright 2025 The Chromium Authors
    Takashi Toyoshima . unresolved

    High-level comment:

    https://chromium.googlesource.com/chromium/src/+/main/content/public/README.md

    Regarding the //content/public, we have some strict rules, and here are some rules that this CL is related, or might be related in the future.

    //content/public should contain only interfaces, enums, structs and (rarely) static functions.

    Interfaces that content implements usually should be pure abstract, because usually there's only one implementation. These should not be implemented outside of content. (i.e., content will freely assume that it can cast to its implementation(s)).

    It‘s acceptable to put implementation files that hold constructors/destructors of interfaces/structs which might have member variables. For structs, this covers initializing member variables. For interfaces (i.e. RenderFrameObserver) this might cover things like automatic registration/unregistration. Normally we would put this small code in headers, but because of the clang checks against putting code in headers, we’re forced to put it in .cc files (we don't want to make a clang exception for the content/public directory since that would lead to confusion).

    Only expose methods in the public API that embedders need. If a method is only used by other code in content, it belongs in foo_impl.h and not foo.h.


    So, the implementation file contains some logic other than ctor/dtor, we need to split the implementation to _impl.cc so that we can hide actual implementation from outside //content, and to make the PrerenderPrewarmNavigationData pure virtual (== interface).

    Keita Suzuki

    Thanks for the pointers!
    So just to clarify (and looking at the existing use case of the //content/public), the static methods seems to still be OK to exist in //cotent/public, but the `GetNavigationStatus` seems to be out of place?
    In that case, I'll split it to a seperate file (or maybe move it under gws_plmo since it is not used in //content).

    Takashi Toyoshima

    Right. The proposed approach sgtm. that seems a reasonable idea!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Jiacheng Guo
    • Keita Suzuki
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 13
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Jiacheng Guo <g...@google.com>
    Gerrit-Attention: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Comment-Date: Mon, 01 Dec 2025 08:58:52 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Takashi Toyoshima <toyo...@chromium.org>
    Comment-In-Reply-To: Keita Suzuki <suzuk...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Takashi Toyoshima (Gerrit)

    unread,
    Dec 1, 2025, 4:01:30 AMDec 1
    to Keita Suzuki, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Jiacheng Guo and Keita Suzuki

    Takashi Toyoshima added 1 comment

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 37, Patchset 11: static PrerenderPrewarmNavigationData* Get(
    Takashi Toyoshima . unresolved

    We can still inherit content/public/browser/navigation_handle_user_data.h?

    Keita Suzuki

    I'm a bit torn on two opinions.
    On one hand, I want to keep inheriting the `NavigationHandleUserData`, since that provides us with all the utils for NavigationHandle.
    On the other hand, we are adding the same UserData to `RenderProcessHost` as well, which cannot use the NavigationHandle utils.

    Because of this, I prepared a seperate utils for this UserData, and figured if we are using them, it might not be useful to inherit the `NavigationHandleUserData`.

    WDYT?

    Takashi Toyoshima

    Ah, I see. OK, your proposal SGTM.

    Gerrit-Comment-Date: Mon, 01 Dec 2025 09:00:56 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jiacheng Guo (Gerrit)

    unread,
    Dec 1, 2025, 8:02:00 AMDec 1
    to Keita Suzuki, Code Review Nudger, Takashi Toyoshima, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Keita Suzuki

    Jiacheng Guo added 3 comments

    File components/page_load_metrics/google/browser/gws_page_load_metrics_observer.cc
    Line 366, Patchset 11: content::SiteInstanceProcessAssignment::REUSED_EXISTING_PROCESS));
    Jiacheng Guo . resolved

    `REUSED_EXISTING_PROCESS` will be the process assignment source in multiple cases not only the RPH reuse for the prerender page. If DSEKeepAlive or multiple SRP in the same renderer feature is enabled, the process assignment will be the same value. A typical case will be:

    Prewarm page -> Reuse as SRP A -> Host another SRP B -> Keep alive after closing A and B -> Reuse for C.

    Do we want to record prewarm reuse for the page B and C as well?

    Keita Suzuki

    To clarify, what we want to know is the conversion rate of the prewarm.

    Personally, I think it is OK to have both

    DSE Prewarm -> DSE A
    and
    DSE Prewarm -> [Multiple Sites on same RenderProcessHost] -> DSE A

    as any subsequent navigations would also benefit from the Prewarm feature.

    Does this make sense?

    Jiacheng Guo

    Thanks, that makes sense to me.

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 15556, Patchset 11: GetProcess(), prewarm_data->prewarm_committed());
    Jiacheng Guo . resolved

    Another question is that we are using the navigation request and the process when getting and setting the user data. Can we fetch the previous `prewarm_committed` value stored in the user data of the `RenderProcessHost` with a `NavigationRequest`? I assume them to be different maps.

    Keita Suzuki

    Hmm, my understanding is that `NavigationRequest` might not exist when `RenderProcessHost` is querying for the previous commit, so we need to copy them to `RenderProcessHost`.

    Jiacheng Guo

    Ah I missed you're copying to the RPH. Thanks for clarifying and the comments.

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 63, Patchset 13 (Latest): // True when webcontent had dse prewarm.
    Jiacheng Guo . unresolved

    Since the user data is now bound to the navigation request and the RPH, the comments need update.
    Would you explain that the `prewarm_committed_` will be true for the RPH once a prewarm page is committed in the process and will stay true in further reuses?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Keita Suzuki
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 13
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Comment-Date: Mon, 01 Dec 2025 13:01:23 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Jiacheng Guo <g...@google.com>
    Comment-In-Reply-To: Keita Suzuki <suzuk...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Keita Suzuki (Gerrit)

    unread,
    Dec 3, 2025, 8:08:16 AM (14 days ago) Dec 3
    to Code Review Nudger, Takashi Toyoshima, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Takashi Toyoshima

    Keita Suzuki added 1 comment

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 37, Patchset 11: static PrerenderPrewarmNavigationData* Get(
    Takashi Toyoshima . resolved

    We can still inherit content/public/browser/navigation_handle_user_data.h?

    Keita Suzuki

    I'm a bit torn on two opinions.
    On one hand, I want to keep inheriting the `NavigationHandleUserData`, since that provides us with all the utils for NavigationHandle.
    On the other hand, we are adding the same UserData to `RenderProcessHost` as well, which cannot use the NavigationHandle utils.

    Because of this, I prepared a seperate utils for this UserData, and figured if we are using them, it might not be useful to inherit the `NavigationHandleUserData`.

    WDYT?

    Takashi Toyoshima

    Ah, I see. OK, your proposal SGTM.

    Keita Suzuki

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Takashi Toyoshima
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 14
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-Comment-Date: Wed, 03 Dec 2025 13:07:53 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Takashi Toyoshima (Gerrit)

    unread,
    Dec 4, 2025, 7:57:24 AM (13 days ago) Dec 4
    to Keita Suzuki, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Keita Suzuki

    Takashi Toyoshima added 6 comments

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 15552, Patchset 11: auto* prewarm_data =
    Jiacheng Guo . unresolved

    IIUC, the code here is trying to query if there was once a prewarm page committed in the renderer process. Maybe it is better to do so in `GWSPageLoadMetricsObserver::OnCommit` rather than `RenderFrameHostImpl` since this class is for RFH rather than RPH. Please also add comments about what the code is trying to accomplish since it is a bit hard to understand.

    Keita Suzuki

    This is trying to query whether a committed `NavigationHandle` has the `PrerenderPrewarmNavigationData` associated with them.
    I think it is OK to do so in PLMO, but I personally believe this should be set here for clarity.

    Takashi Toyoshima

    Sorry for overlooking this in the initial high-level review, but +1 for the Jiacheng's suggestion now.

    Another factor to decide the direction here is that the prewarm is a concept outside //content. So, if we want to handle this here, we need to abstract it as a embedder-triggered prerendering common operation. There would be no technical difficulty for that. It's just a small editorial changes, but it also remove the benefit of the code clarity here, i.e. we could only have ambiguous comment rather precise readable comment here.

    On the other hand, if we can have this operation in the PLMO, we can keep having everything outside the //content and say "prewarm". Also code change could be smaller as we don't need to replace the struct.

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 53, Patchset 14 (Latest): // True when the corresponding UserData had dse prewarm.
    Takashi Toyoshima . unresolved

    `DSE` (large capital to be consistent)

    Line 48, Patchset 14 (Latest): ~PrerenderPrewarmNavigationData() override = default;
    Takashi Toyoshima . unresolved

    also, disallow copy, and so on?

    Line 21, Patchset 14 (Latest): // The key to store and retrieve this data from RenderProcessHost.
    Takashi Toyoshima . unresolved

    `NavigationHandle and`?
    Also can this be in the private section?
    I think external users don't need to know this key as they always access the instance via the Get{OrCreate} class method below.

    Line 18, Patchset 14 (Latest):class CONTENT_EXPORT PrerenderPrewarmNavigationData
    Takashi Toyoshima . unresolved

    As discussed above, this class name is also problematic as the prewarm is a concept outside the //content.

    Line 1, Patchset 11:// Copyright 2025 The Chromium Authors
    Takashi Toyoshima . resolved

    High-level comment:

    https://chromium.googlesource.com/chromium/src/+/main/content/public/README.md

    Regarding the //content/public, we have some strict rules, and here are some rules that this CL is related, or might be related in the future.

    //content/public should contain only interfaces, enums, structs and (rarely) static functions.

    Interfaces that content implements usually should be pure abstract, because usually there's only one implementation. These should not be implemented outside of content. (i.e., content will freely assume that it can cast to its implementation(s)).

    It‘s acceptable to put implementation files that hold constructors/destructors of interfaces/structs which might have member variables. For structs, this covers initializing member variables. For interfaces (i.e. RenderFrameObserver) this might cover things like automatic registration/unregistration. Normally we would put this small code in headers, but because of the clang checks against putting code in headers, we’re forced to put it in .cc files (we don't want to make a clang exception for the content/public directory since that would lead to confusion).

    Only expose methods in the public API that embedders need. If a method is only used by other code in content, it belongs in foo_impl.h and not foo.h.


    So, the implementation file contains some logic other than ctor/dtor, we need to split the implementation to _impl.cc so that we can hide actual implementation from outside //content, and to make the PrerenderPrewarmNavigationData pure virtual (== interface).

    Keita Suzuki

    Thanks for the pointers!
    So just to clarify (and looking at the existing use case of the //content/public), the static methods seems to still be OK to exist in //cotent/public, but the `GetNavigationStatus` seems to be out of place?
    In that case, I'll split it to a seperate file (or maybe move it under gws_plmo since it is not used in //content).

    Takashi Toyoshima

    Right. The proposed approach sgtm. that seems a reasonable idea!

    Takashi Toyoshima

    Acknowledged

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Keita Suzuki
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 14
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Comment-Date: Thu, 04 Dec 2025 12:56:52 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Takashi Toyoshima <toyo...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Keita Suzuki (Gerrit)

    unread,
    Dec 7, 2025, 11:16:02 PM (9 days ago) Dec 7
    to Code Review Nudger, Takashi Toyoshima, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Jiacheng Guo and Takashi Toyoshima

    Keita Suzuki added 6 comments

    Patchset-level comments
    File-level comment, Patchset 15:
    Keita Suzuki . resolved

    THanks for the reviews. I am still working on the test (might make it a seperate CL, since I am trying to add them to PLMO's browsertest, which requires adding setups for the prewarm .

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 15552, Patchset 11: auto* prewarm_data =
    Jiacheng Guo . unresolved

    IIUC, the code here is trying to query if there was once a prewarm page committed in the renderer process. Maybe it is better to do so in `GWSPageLoadMetricsObserver::OnCommit` rather than `RenderFrameHostImpl` since this class is for RFH rather than RPH. Please also add comments about what the code is trying to accomplish since it is a bit hard to understand.

    Keita Suzuki

    This is trying to query whether a committed `NavigationHandle` has the `PrerenderPrewarmNavigationData` associated with them.
    I think it is OK to do so in PLMO, but I personally believe this should be set here for clarity.

    Takashi Toyoshima

    Sorry for overlooking this in the initial high-level review, but +1 for the Jiacheng's suggestion now.

    Another factor to decide the direction here is that the prewarm is a concept outside //content. So, if we want to handle this here, we need to abstract it as a embedder-triggered prerendering common operation. There would be no technical difficulty for that. It's just a small editorial changes, but it also remove the benefit of the code clarity here, i.e. we could only have ambiguous comment rather precise readable comment here.

    On the other hand, if we can have this operation in the PLMO, we can keep having everything outside the //content and say "prewarm". Also code change could be smaller as we don't need to replace the struct.

    Keita Suzuki

    OK, sounds good. Moved it to GWS PLMO.

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 53, Patchset 14: // True when the corresponding UserData had dse prewarm.
    Takashi Toyoshima . resolved

    `DSE` (large capital to be consistent)

    Keita Suzuki

    Done

    Line 48, Patchset 14: ~PrerenderPrewarmNavigationData() override = default;
    Takashi Toyoshima . resolved

    also, disallow copy, and so on?

    Keita Suzuki

    Done

    Line 21, Patchset 14: // The key to store and retrieve this data from RenderProcessHost.
    Takashi Toyoshima . resolved

    `NavigationHandle and`?
    Also can this be in the private section?
    I think external users don't need to know this key as they always access the instance via the Get{OrCreate} class method below.

    Keita Suzuki

    Done

    Line 18, Patchset 14:class CONTENT_EXPORT PrerenderPrewarmNavigationData
    Takashi Toyoshima . resolved

    As discussed above, this class name is also problematic as the prewarm is a concept outside the //content.

    Keita Suzuki

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Jiacheng Guo
    • Takashi Toyoshima
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 15
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-Attention: Jiacheng Guo <g...@google.com>
    Gerrit-Comment-Date: Mon, 08 Dec 2025 04:15:40 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Takashi Toyoshima (Gerrit)

    unread,
    Dec 9, 2025, 1:27:24 AM (8 days ago) Dec 9
    to Keita Suzuki, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Jiacheng Guo and Keita Suzuki

    Takashi Toyoshima voted and added 2 comments

    Votes added by Takashi Toyoshima

    Code-Review+1

    2 comments

    File components/page_load_metrics/google/browser/gws_page_load_metrics_observer.cc
    Line 145, Patchset 17 (Latest): HISTOGRAM_PREFIX "Prerender.PrewarmNavigationStatus";
    Takashi Toyoshima . unresolved

    Should this have a suffix 2? (IIUC, you changed the condition to record this only for the renderer-initiated cases.)

    File content/browser/renderer_host/render_frame_host_impl.cc
    Line 15552, Patchset 11: auto* prewarm_data =
    Jiacheng Guo . resolved

    IIUC, the code here is trying to query if there was once a prewarm page committed in the renderer process. Maybe it is better to do so in `GWSPageLoadMetricsObserver::OnCommit` rather than `RenderFrameHostImpl` since this class is for RFH rather than RPH. Please also add comments about what the code is trying to accomplish since it is a bit hard to understand.

    Keita Suzuki

    This is trying to query whether a committed `NavigationHandle` has the `PrerenderPrewarmNavigationData` associated with them.
    I think it is OK to do so in PLMO, but I personally believe this should be set here for clarity.

    Takashi Toyoshima

    Sorry for overlooking this in the initial high-level review, but +1 for the Jiacheng's suggestion now.

    Another factor to decide the direction here is that the prewarm is a concept outside //content. So, if we want to handle this here, we need to abstract it as a embedder-triggered prerendering common operation. There would be no technical difficulty for that. It's just a small editorial changes, but it also remove the benefit of the code clarity here, i.e. we could only have ambiguous comment rather precise readable comment here.

    On the other hand, if we can have this operation in the PLMO, we can keep having everything outside the //content and say "prewarm". Also code change could be smaller as we don't need to replace the struct.

    Keita Suzuki

    OK, sounds good. Moved it to GWS PLMO.

    Takashi Toyoshima

    Acknowledged

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Jiacheng Guo
    • Keita Suzuki
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
    Gerrit-Change-Number: 7116488
    Gerrit-PatchSet: 17
    Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
    Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
    Gerrit-Attention: Jiacheng Guo <g...@google.com>
    Gerrit-Attention: Keita Suzuki <suzuk...@chromium.org>
    Gerrit-Comment-Date: Tue, 09 Dec 2025 06:26:57 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Keita Suzuki (Gerrit)

    unread,
    Dec 10, 2025, 7:44:40 PM (6 days ago) Dec 10
    to Takashi Toyoshima, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Jiacheng Guo

    Keita Suzuki added 4 comments

    Patchset-level comments
    File-level comment, Patchset 11:
    Jiacheng Guo . resolved

    Since the logic change is non-trivial, would I ask for a browser test to verify the UMA values are recorded as expected?

    Keita Suzuki

    Done

    File components/page_load_metrics/google/browser/gws_page_load_metrics_observer.cc
    Line 145, Patchset 17 (Latest): HISTOGRAM_PREFIX "Prerender.PrewarmNavigationStatus";
    Takashi Toyoshima . resolved

    Should this have a suffix 2? (IIUC, you changed the condition to record this only for the renderer-initiated cases.)

    Keita Suzuki

    True. Updated.

    Line 145, Patchset 17 (Latest): HISTOGRAM_PREFIX "Prerender.PrewarmNavigationStatus";
    Takashi Toyoshima . resolved

    Should this have a suffix 2? (IIUC, you changed the condition to record this only for the renderer-initiated cases.)

    Keita Suzuki

    I don't think we need to rename this, since we are not getting any data on the original histogram due to the implicaton errors.

    Let's keep the original name

    File content/public/browser/prerender_prewarm_navigation_data.h
    Line 63, Patchset 13: // True when webcontent had dse prewarm.
    Jiacheng Guo . resolved

    Since the user data is now bound to the navigation request and the RPH, the comments need update.
    Would you explain that the `prewarm_committed_` will be true for the RPH once a prewarm page is committed in the process and will stay true in further reuses?

    Keita Suzuki

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Jiacheng Guo
    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: Ifa65203507afb4f4a5de93f4f386e728346cf995
      Gerrit-Change-Number: 7116488
      Gerrit-PatchSet: 17
      Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
      Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
      Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
      Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: Code Review Nudger <android-build...@prod.google.com>
      Gerrit-Attention: Jiacheng Guo <g...@google.com>
      Gerrit-Comment-Date: Thu, 11 Dec 2025 00:44:13 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      open
      diffy

      Keita Suzuki (Gerrit)

      unread,
      Dec 15, 2025, 7:00:33 PM (yesterday) Dec 15
      to Takashi Toyoshima, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, Chromium LUCI CQ, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org
      Attention needed from Jiacheng Guo

      Keita Suzuki voted Commit-Queue+2

      Commit-Queue+2
      Gerrit-Comment-Date: Mon, 15 Dec 2025 23:59:52 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      Chromium LUCI CQ (Gerrit)

      unread,
      Dec 15, 2025, 8:03:30 PM (yesterday) Dec 15
      to Keita Suzuki, Takashi Toyoshima, Code Review Nudger, Jiacheng Guo, Chromium Metrics Reviews, AyeAye, asvitkine...@chromium.org, creis...@chromium.org, speed-metr...@chromium.org, tburkar...@chromium.org, navigation...@chromium.org, bmcquad...@chromium.org, gavin...@chromium.org, prerenderi...@chromium.org, csharris...@chromium.org, loading-rev...@chromium.org, alexmo...@chromium.org, speed-metrics...@chromium.org

      Chromium LUCI CQ submitted the change

      Change information

      Commit message:
      Fix DSE prewarm metrics for RenderProcess reuse

      The current DSE prewarm metrics can be inaccurate in scenarios involving
      RenderProcessHost reuse. The prewarm status was tracked on the
      NavigationHandle, which failed to correctly attribute prewarming when a
      prewarmed process was reused for a subsequent, different navigation.
      This resulted in undercounting prewarmed navigations.

      This change moves the responsibility of storing the prewarm status to
      the RenderProcessHost itself. When a prewarmed prerender navigation
      commits, the status is attached directly to the process. The page load
      metrics observer can then reliably check the process to determine if the
      navigation occurred in a prewarmed renderer, regardless of process
      reuse.

      To facilitate this, PrerenderPrewarmNavigationData is moved from
      //components/page_load_metrics to the content layer in
      //content/public/browser.

      Details (internal doc):
      https://docs.google.com/document/d/1N9u6oE5EjJPyuDINnMKTWxNpNiSF6u71B5aTGmEgVAo/edit?tab=t.0

      NO_IFTTT=Moving the target file to a new directory
      Bug: 454263659
      Change-Id: Ifa65203507afb4f4a5de93f4f386e728346cf995
      Reviewed-by: Takashi Toyoshima <toyo...@chromium.org>
      Commit-Queue: Keita Suzuki <suzuk...@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#1559078}
      Files:
      • M chrome/browser/preloading/prerender/prerender_manager.cc
      • M chrome/browser/preloading/prerender/prerender_manager.h
      • M components/page_load_metrics/google/browser/gws_page_load_metrics_observer.cc
      • M components/page_load_metrics/google/browser/gws_page_load_metrics_observer.h
      • M components/page_load_metrics/google/browser/prerender_prewarm_navigation_data.cc
      • M components/page_load_metrics/google/browser/prerender_prewarm_navigation_data.h
      Change size: M
      Delta: 6 files changed, 103 insertions(+), 85 deletions(-)
      Branch: refs/heads/main
      Submit Requirements:
      • requirement satisfiedCode-Review: +1 by Takashi Toyoshima
      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: Ifa65203507afb4f4a5de93f4f386e728346cf995
      Gerrit-Change-Number: 7116488
      Gerrit-PatchSet: 18
      Gerrit-Owner: Keita Suzuki <suzuk...@chromium.org>
      Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
      Gerrit-Reviewer: Jiacheng Guo <g...@google.com>
      Gerrit-Reviewer: Keita Suzuki <suzuk...@chromium.org>
      Gerrit-Reviewer: Takashi Toyoshima <toyo...@chromium.org>
      open
      diffy
      satisfied_requirement
      Reply all
      Reply to author
      Forward
      0 new messages