Add performance.speculations.preloads for speculation measurement [chromium/src : main]

0 views
Skip to first unread message

Yoav Weiss (@Shopify) (Gerrit)

unread,
Mar 31, 2026, 10:37:43 AMMar 31
to Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
Attention needed from Kouhei Ueno

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

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Kouhei Ueno
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
Gerrit-Change-Number: 7715319
Gerrit-PatchSet: 9
Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
Gerrit-CC: Kentaro Hara <har...@chromium.org>
Gerrit-CC: Nate Chapin <jap...@chromium.org>
Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
Gerrit-Comment-Date: Tue, 31 Mar 2026 14:37:29 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Kouhei Ueno (Gerrit)

unread,
Apr 6, 2026, 3:04:07 AMApr 6
to Yoav Weiss (@Shopify), Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
Attention needed from Yoav Weiss (@Shopify)

Kouhei Ueno added 2 comments

File third_party/blink/renderer/core/timing/performance.idl
Line 81, Patchset 10 (Latest): [Exposed=Window, RuntimeEnabled=SpeculationMeasurement] readonly attribute SpeculationData speculations;
Kouhei Ueno . unresolved

Since speculations returns a new object on every access, it doesn't maintain object identity, which is typically expected for attributes. According to the W3C Web Platform Design Principles:

"Returning a new value from a getter each time is not allowed. If this does not hold, the getter should be a method."

To align with this and existing Performance API patterns like getEntries(), we should consider making this a method (e.g., getSpeculations()) instead of a getter.

File third_party/blink/renderer/core/timing/preload_data.cc
Line 20, Patchset 10 (Latest):V8CrossOriginMode PreloadData::crossorigin() const {
Kouhei Ueno . unresolved

This reverse-engineering works for the current mapping, but it might be a bit brittle if network modes or credentials mappings evolve in the future.

It might be more robust to store the original attribute value (or a mapped enum) in PreloadInfo directly when the preload is created in ResourceFetcher.

Open in Gerrit

Related details

Attention is currently required from:
  • Yoav Weiss (@Shopify)
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
    Gerrit-Change-Number: 7715319
    Gerrit-PatchSet: 10
    Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
    Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-CC: Kentaro Hara <har...@chromium.org>
    Gerrit-CC: Nate Chapin <jap...@chromium.org>
    Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
    Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
    Gerrit-Comment-Date: Mon, 06 Apr 2026 07:03:30 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Yoav Weiss (@Shopify) (Gerrit)

    unread,
    Apr 8, 2026, 6:08:55 AMApr 8
    to AyeAye, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
    Attention needed from Kouhei Ueno

    Yoav Weiss (@Shopify) added 2 comments

    File third_party/blink/renderer/core/timing/performance.idl
    Line 81, Patchset 10: [Exposed=Window, RuntimeEnabled=SpeculationMeasurement] readonly attribute SpeculationData speculations;
    Kouhei Ueno . resolved

    Since speculations returns a new object on every access, it doesn't maintain object identity, which is typically expected for attributes. According to the W3C Web Platform Design Principles:

    "Returning a new value from a getter each time is not allowed. If this does not hold, the getter should be a method."

    To align with this and existing Performance API patterns like getEntries(), we should consider making this a method (e.g., getSpeculations()) instead of a getter.

    Yoav Weiss (@Shopify)

    Done

    File third_party/blink/renderer/core/timing/preload_data.cc
    Line 20, Patchset 10:V8CrossOriginMode PreloadData::crossorigin() const {
    Kouhei Ueno . resolved

    This reverse-engineering works for the current mapping, but it might be a bit brittle if network modes or credentials mappings evolve in the future.

    It might be more robust to store the original attribute value (or a mapped enum) in PreloadInfo directly when the preload is created in ResourceFetcher.

    Yoav Weiss (@Shopify)

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Kouhei Ueno
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
      Gerrit-Change-Number: 7715319
      Gerrit-PatchSet: 11
      Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
      Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
      Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
      Gerrit-CC: Kentaro Hara <har...@chromium.org>
      Gerrit-CC: Nate Chapin <jap...@chromium.org>
      Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
      Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
      Gerrit-Comment-Date: Wed, 08 Apr 2026 10:08:43 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Kouhei Ueno <kou...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Kouhei Ueno (Gerrit)

      unread,
      Apr 9, 2026, 11:41:00 AMApr 9
      to Yoav Weiss (@Shopify), AyeAye, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
      Attention needed from Yoav Weiss (@Shopify)

      Kouhei Ueno added 5 comments

      Patchset-level comments
      File-level comment, Patchset 11 (Latest):
      Kouhei Ueno . resolved

      Please make sure the measurement/recording code is also flag guarded - only enabled when the document has SpeculationMeasurement enabled

      File third_party/blink/renderer/core/timing/window_performance.cc
      Line 1609, Patchset 11 (Latest): used = MonotonicTimeToDOMHighResTimeStamp(info.used_time.value());
      Kouhei Ueno . unresolved

      Do we want to use the default TimeOrigin() here?

      Line 1623, Patchset 11 (Latest): preloads.push_back(MakeGarbageCollected<PreloadData>(
      Kouhei Ueno . unresolved

      The bindings logics (conversion of kCrossOriginAttributeFoo to V8CrossOriginMode::Enum, ResourceTypeToAsAttributeString, MonotonicTimeToDOMHighResTimeStamp) should be handled in PreloadData binding getters.

      File third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
      Line 246, Patchset 11 (Latest): kCrossOriginAttributeNotSet;
      Kouhei Ueno . unresolved

      This shouldn't be needed? You can look inside `resource_request_`

      File third_party/blink/renderer/platform/loader/fetch/resource.cc
      Line 74, Patchset 11 (Latest):String ResourceTypeToAsAttributeString(ResourceType type) {
      Kouhei Ueno . unresolved
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Yoav Weiss (@Shopify)
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 11
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Comment-Date: Thu, 09 Apr 2026 15:40:23 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Yoav Weiss (@Shopify) (Gerrit)

        unread,
        Apr 9, 2026, 3:57:56 PMApr 9
        to AyeAye, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Kouhei Ueno

        Yoav Weiss (@Shopify) added 4 comments

        File third_party/blink/renderer/core/timing/window_performance.cc
        Line 1609, Patchset 11: used = MonotonicTimeToDOMHighResTimeStamp(info.used_time.value());
        Kouhei Ueno . resolved

        Do we want to use the default TimeOrigin() here?

        Yoav Weiss (@Shopify)

        I believe so.

        Line 1623, Patchset 11: preloads.push_back(MakeGarbageCollected<PreloadData>(
        Kouhei Ueno . resolved

        The bindings logics (conversion of kCrossOriginAttributeFoo to V8CrossOriginMode::Enum, ResourceTypeToAsAttributeString, MonotonicTimeToDOMHighResTimeStamp) should be handled in PreloadData binding getters.

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
        Line 246, Patchset 11: kCrossOriginAttributeNotSet;
        Kouhei Ueno . unresolved

        This shouldn't be needed? You can look inside `resource_request_`

        Yoav Weiss (@Shopify)

        AFAICT resource_request_ has the mode and credentials mode, but not the attribute value. I can decipher the value from those, but didn't we say in a previous iteration that we should avoid doing that?

        File third_party/blink/renderer/platform/loader/fetch/resource.cc
        Line 74, Patchset 11:String ResourceTypeToAsAttributeString(ResourceType type) {
        Kouhei Ueno . unresolved

        I find this to be unfortunate that we need to have this + https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/loader/fetch/resource.cc;l=1249;bpv=1;bpt=1?q=return%20%22manifest%22;&ss=chromium

        Would it be too difficult to merge?

        Yoav Weiss (@Shopify)

        They seem to be returning different values. One is returning the `as` attribute value, while the other is returning a string that describes the resource type (e.g. "style" vs "CSS Stylesheet")

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Kouhei Ueno
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 11
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Comment-Date: Thu, 09 Apr 2026 19:57:34 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Kouhei Ueno <kou...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Kouhei Ueno (Gerrit)

        unread,
        Apr 16, 2026, 6:25:04 AM (11 days ago) Apr 16
        to Yoav Weiss (@Shopify), android-bu...@system.gserviceaccount.com, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Yoav Weiss (@Shopify)

        Kouhei Ueno added 6 comments

        Patchset-level comments
        File-level comment, Patchset 11:
        Kouhei Ueno . unresolved

        Please make sure the measurement/recording code is also flag guarded - only enabled when the document has SpeculationMeasurement enabled

        Kouhei Ueno

        Please address this.

        File-level comment, Patchset 12 (Latest):
        Kouhei Ueno . resolved

        +@nhi...@chromium.org who'll help me on this review

        File third_party/blink/renderer/core/timing/preload_data.cc
        Line 41, Patchset 12 (Latest): return performance_->MonotonicTimeToDOMHighResTimeStamp(used_time_.value());
        Kouhei Ueno . unresolved

        Can we omit `performance_` by annotating the idl with [CallWith=ScriptState], and we can access WindowPerformance from ScriptState*.

        File third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
        Line 246, Patchset 11: kCrossOriginAttributeNotSet;
        Kouhei Ueno . unresolved

        This shouldn't be needed? You can look inside `resource_request_`

        Yoav Weiss (@Shopify)

        AFAICT resource_request_ has the mode and credentials mode, but not the attribute value. I can decipher the value from those, but didn't we say in a previous iteration that we should avoid doing that?

        Kouhei Ueno

        Hmm ok. I searched for better alternatives but I couldn't come up with something better. Would you add a comment this is specifically for the speculation measurement API?

        File third_party/blink/renderer/platform/loader/fetch/resource.cc
        Line 74, Patchset 11:String ResourceTypeToAsAttributeString(ResourceType type) {
        Kouhei Ueno . resolved

        I find this to be unfortunate that we need to have this + https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/platform/loader/fetch/resource.cc;l=1249;bpv=1;bpt=1?q=return%20%22manifest%22;&ss=chromium

        Would it be too difficult to merge?

        Yoav Weiss (@Shopify)

        They seem to be returning different values. One is returning the `as` attribute value, while the other is returning a string that describes the resource type (e.g. "style" vs "CSS Stylesheet")

        Kouhei Ueno

        Acknowledged

        File third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
        Line 260, Patchset 12 (Latest): struct PreloadInfo {
        Kouhei Ueno . unresolved

        (Copying over the comments from the chat)

        Taking a step back, between PreloadInfo, PreloadInfoWithUrl, and PreloadData, there seems to be a fair amount of duplication and double-copying of data. I suspect we can remove GetPreloadRecords(), and potentially eliminate the other intermediate structs entirely if we store PreloadData directly in ResourceFetcher (leveraging [CallWith=ScriptState] for time conversion).

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Yoav Weiss (@Shopify)
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 12
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Comment-Date: Thu, 16 Apr 2026 10:24:25 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Comment-In-Reply-To: Kouhei Ueno <kou...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Yoav Weiss (@Shopify) (Gerrit)

        unread,
        Apr 16, 2026, 4:15:03 PM (11 days ago) Apr 16
        to android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Kouhei Ueno

        Yoav Weiss (@Shopify) added 4 comments

        Patchset-level comments
        File-level comment, Patchset 11:
        Kouhei Ueno . resolved

        Please make sure the measurement/recording code is also flag guarded - only enabled when the document has SpeculationMeasurement enabled

        Kouhei Ueno

        Please address this.

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/renderer/core/timing/preload_data.cc
        Line 41, Patchset 12 (Latest): return performance_->MonotonicTimeToDOMHighResTimeStamp(used_time_.value());
        Kouhei Ueno . resolved

        Can we omit `performance_` by annotating the idl with [CallWith=ScriptState], and we can access WindowPerformance from ScriptState*.

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
        Line 246, Patchset 11: kCrossOriginAttributeNotSet;
        Kouhei Ueno . resolved

        This shouldn't be needed? You can look inside `resource_request_`

        Yoav Weiss (@Shopify)

        AFAICT resource_request_ has the mode and credentials mode, but not the attribute value. I can decipher the value from those, but didn't we say in a previous iteration that we should avoid doing that?

        Kouhei Ueno

        Hmm ok. I searched for better alternatives but I couldn't come up with something better. Would you add a comment this is specifically for the speculation measurement API?

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
        Line 260, Patchset 12 (Latest): struct PreloadInfo {
        Kouhei Ueno . unresolved

        (Copying over the comments from the chat)

        Taking a step back, between PreloadInfo, PreloadInfoWithUrl, and PreloadData, there seems to be a fair amount of duplication and double-copying of data. I suspect we can remove GetPreloadRecords(), and potentially eliminate the other intermediate structs entirely if we store PreloadData directly in ResourceFetcher (leveraging [CallWith=ScriptState] for time conversion).

        Yoav Weiss (@Shopify)

        PreloadInfoWithUrl is gone.

        PreloadInfo and PreloadData are both needed IMO (the former to store preload info in ResourceFetcher in platform/ and the latter as a ScriptWrappable web-exposed entries in core/)

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Kouhei Ueno
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 12
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Comment-Date: Thu, 16 Apr 2026 20:14:42 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Hiroki Nakagawa (Gerrit)

        unread,
        Apr 17, 2026, 4:08:07 AM (10 days ago) Apr 17
        to Yoav Weiss (@Shopify), android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Kouhei Ueno and Yoav Weiss (@Shopify)

        Hiroki Nakagawa added 7 comments

        File third_party/blink/renderer/core/timing/preload_data.h
        Line 20, Patchset 13 (Latest):// https://github.com/WICG/speculative_load_measurement
        Hiroki Nakagawa . unresolved

        This link should be placed right before `class PreloadData`, not `class ScriptState`.

        File third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
        Line 248, Patchset 13 (Latest): kCrossOriginAttributeNotSet;
        Hiroki Nakagawa . unresolved

        Can we make this `std::optional<CrossOriginAttributeValue>` to avoid it from being used for security checks in unrelated contexts?

        File third_party/blink/renderer/platform/loader/fetch/resource.cc
        Line 74, Patchset 13 (Latest):String ResourceTypeToAsAttributeString(ResourceType type) {
        Hiroki Nakagawa . unresolved

        Can we place this function next to `PreloadHelper::GetResourceTypeFromAsAttribute()` to keep this consistent with that?
        https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/loader/preload_helper.cc;l=394;drc=d4203fb18d457eb93924af6bb2d24c954402978e

        Also, can we add a link to a corresponding spec part that defines the string representation of resource types? I guess it's `preload destination` and `module preload destination` linked from:
        https://html.spec.whatwg.org/multipage/semantics.html#attr-link-as

        File third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
        Line 1988, Patchset 13 (Latest): // Only track <link rel=preload> in preload_records_ for the
        Hiroki Nakagawa . unresolved

        \`preload_records_\` (adding back quotes)

        File third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/support/speculation-measurement-utils.js
        Line 32, Patchset 13 (Latest): if (!href) href = supportFileUrl(as);
        Hiroki Nakagawa . unresolved

        Can we wrap this braces? It's more consistent.

        ```
        if (!href) {
        href = supportFileUrl(as);
        }
        ```
        Line 60, Patchset 13 (Latest): if (crossorigin !== null) el.crossOrigin = crossorigin;
        Hiroki Nakagawa . unresolved

        Ditto(braces)

        Line 65, Patchset 13 (Latest): if (crossorigin !== null) el.crossOrigin = crossorigin;
        Hiroki Nakagawa . unresolved

        Ditto(braces)

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Kouhei Ueno
        • Yoav Weiss (@Shopify)
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 13
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Comment-Date: Fri, 17 Apr 2026 08:07:32 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Yoav Weiss (@Shopify) (Gerrit)

        unread,
        Apr 17, 2026, 5:27:13 AM (10 days ago) Apr 17
        to Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Hiroki Nakagawa and Kouhei Ueno

        Yoav Weiss (@Shopify) added 6 comments

        File third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
        Line 248, Patchset 13: kCrossOriginAttributeNotSet;
        Hiroki Nakagawa . resolved

        Can we make this `std::optional<CrossOriginAttributeValue>` to avoid it from being used for security checks in unrelated contexts?

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/renderer/platform/loader/fetch/resource.cc
        Line 74, Patchset 13:String ResourceTypeToAsAttributeString(ResourceType type) {
        Hiroki Nakagawa . resolved

        Can we place this function next to `PreloadHelper::GetResourceTypeFromAsAttribute()` to keep this consistent with that?
        https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/loader/preload_helper.cc;l=394;drc=d4203fb18d457eb93924af6bb2d24c954402978e

        Also, can we add a link to a corresponding spec part that defines the string representation of resource types? I guess it's `preload destination` and `module preload destination` linked from:
        https://html.spec.whatwg.org/multipage/semantics.html#attr-link-as

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
        Line 1988, Patchset 13: // Only track <link rel=preload> in preload_records_ for the
        Hiroki Nakagawa . resolved

        \`preload_records_\` (adding back quotes)

        Yoav Weiss (@Shopify)

        Done

        File third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/support/speculation-measurement-utils.js
        Line 32, Patchset 13: if (!href) href = supportFileUrl(as);
        Hiroki Nakagawa . resolved

        Can we wrap this braces? It's more consistent.

        ```
        if (!href) {
        href = supportFileUrl(as);
        }
        ```
        Yoav Weiss (@Shopify)

        Done

        Line 60, Patchset 13: if (crossorigin !== null) el.crossOrigin = crossorigin;
        Hiroki Nakagawa . resolved

        Ditto(braces)

        Yoav Weiss (@Shopify)

        Done

        Line 65, Patchset 13: if (crossorigin !== null) el.crossOrigin = crossorigin;
        Hiroki Nakagawa . resolved

        Ditto(braces)

        Yoav Weiss (@Shopify)

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Hiroki Nakagawa
        • Kouhei Ueno
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 13
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Hiroki Nakagawa <nhi...@chromium.org>
        Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Comment-Date: Fri, 17 Apr 2026 09:26:56 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Hiroki Nakagawa <nhi...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Yoav Weiss (@Shopify) (Gerrit)

        unread,
        Apr 17, 2026, 5:27:30 AM (10 days ago) Apr 17
        to Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Hiroki Nakagawa and Kouhei Ueno

        Yoav Weiss (@Shopify) added 1 comment

        File third_party/blink/renderer/core/timing/preload_data.h

        This link should be placed right before `class PreloadData`, not `class ScriptState`.

        Yoav Weiss (@Shopify)

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Hiroki Nakagawa
        • Kouhei Ueno
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement 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: I6693be2f65d2fb83d5fc1137168d75b22a438917
        Gerrit-Change-Number: 7715319
        Gerrit-PatchSet: 14
        Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
        Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
        Gerrit-CC: Kentaro Hara <har...@chromium.org>
        Gerrit-CC: Nate Chapin <jap...@chromium.org>
        Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
        Gerrit-Attention: Hiroki Nakagawa <nhi...@chromium.org>
        Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
        Gerrit-Comment-Date: Fri, 17 Apr 2026 09:27:08 +0000
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Hiroki Nakagawa (Gerrit)

        unread,
        Apr 17, 2026, 11:24:34 AM (10 days ago) Apr 17
        to Yoav Weiss (@Shopify), android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
        Attention needed from Kouhei Ueno and Yoav Weiss (@Shopify)

        Hiroki Nakagawa voted and added 2 comments

        Votes added by Hiroki Nakagawa

        Code-Review+1

        2 comments

        Patchset-level comments
        File-level comment, Patchset 14 (Latest):
        Hiroki Nakagawa . resolved

        LTGM, thanks!

        File third_party/blink/renderer/core/loader/preload_helper.h
        Line 108, Patchset 14 (Latest): // This is the inverse of GetResourceTypeFromAsAttribute().
        Hiroki Nakagawa . unresolved

        This can return types that are not supported in `GetResourceTypeFromAsAttribute()`. Can we avoid returning them and instead add NOTREACHED()?

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Kouhei Ueno
        • Yoav Weiss (@Shopify)
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement satisfiedCode-Owners
          • requirement satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: I6693be2f65d2fb83d5fc1137168d75b22a438917
          Gerrit-Change-Number: 7715319
          Gerrit-PatchSet: 14
          Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
          Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
          Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
          Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
          Gerrit-CC: Kentaro Hara <har...@chromium.org>
          Gerrit-CC: Nate Chapin <jap...@chromium.org>
          Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
          Gerrit-Attention: Yoav Weiss (@Shopify) <yoav...@chromium.org>
          Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
          Gerrit-Comment-Date: Fri, 17 Apr 2026 15:23:57 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Hiroki Nakagawa (Gerrit)

          unread,
          Apr 17, 2026, 11:24:59 AM (10 days ago) Apr 17
          to Yoav Weiss (@Shopify), android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
          Attention needed from Kouhei Ueno and Yoav Weiss (@Shopify)

          Hiroki Nakagawa added 1 comment

          Patchset-level comments
          Hiroki Nakagawa . resolved

          LTGM, thanks!

          Hiroki Nakagawa

          LGTM 😜

          Gerrit-Comment-Date: Fri, 17 Apr 2026 15:24:31 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Yoav Weiss (@Shopify) (Gerrit)

          unread,
          Apr 17, 2026, 12:12:06 PM (10 days ago) Apr 17
          to Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
          Attention needed from Kouhei Ueno

          Yoav Weiss (@Shopify) added 2 comments

          File third_party/blink/renderer/core/loader/preload_helper.h
          Line 108, Patchset 14: // This is the inverse of GetResourceTypeFromAsAttribute().
          Hiroki Nakagawa . resolved

          This can return types that are not supported in `GetResourceTypeFromAsAttribute()`. Can we avoid returning them and instead add NOTREACHED()?

          Yoav Weiss (@Shopify)

          Done

          File third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
          Line 260, Patchset 12: struct PreloadInfo {
          Kouhei Ueno . resolved

          (Copying over the comments from the chat)

          Taking a step back, between PreloadInfo, PreloadInfoWithUrl, and PreloadData, there seems to be a fair amount of duplication and double-copying of data. I suspect we can remove GetPreloadRecords(), and potentially eliminate the other intermediate structs entirely if we store PreloadData directly in ResourceFetcher (leveraging [CallWith=ScriptState] for time conversion).

          Yoav Weiss (@Shopify)

          PreloadInfoWithUrl is gone.

          PreloadInfo and PreloadData are both needed IMO (the former to store preload info in ResourceFetcher in platform/ and the latter as a ScriptWrappable web-exposed entries in core/)

          Yoav Weiss (@Shopify)

          Resolving

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Kouhei Ueno
          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: I6693be2f65d2fb83d5fc1137168d75b22a438917
            Gerrit-Change-Number: 7715319
            Gerrit-PatchSet: 15
            Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
            Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
            Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Nate Chapin <jap...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
            Gerrit-Comment-Date: Fri, 17 Apr 2026 16:11:44 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Hiroki Nakagawa <nhi...@chromium.org>
            satisfied_requirement
            open
            diffy

            Blink W3C Test Autoroller (Gerrit)

            unread,
            Apr 17, 2026, 12:26:13 PM (10 days ago) Apr 17
            to Yoav Weiss (@Shopify), Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
            Attention needed from Kouhei Ueno

            Message from Blink W3C Test Autoroller

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

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

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

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Kouhei Ueno
            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: I6693be2f65d2fb83d5fc1137168d75b22a438917
            Gerrit-Change-Number: 7715319
            Gerrit-PatchSet: 15
            Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
            Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
            Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-CC: Blink W3C Test Autoroller <blink-w3c-te...@chromium.org>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Nate Chapin <jap...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-Attention: Kouhei Ueno <kou...@chromium.org>
            Gerrit-Comment-Date: Fri, 17 Apr 2026 16:26:04 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: No
            satisfied_requirement
            open
            diffy

            Yoav Weiss (@Shopify) (Gerrit)

            unread,
            Apr 17, 2026, 3:35:25 PM (10 days ago) Apr 17
            to Blink W3C Test Autoroller, Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, Chromium LUCI CQ, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org
            Attention needed from Kouhei Ueno

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

            Commit-Queue+2
            Gerrit-Comment-Date: Fri, 17 Apr 2026 19:35:03 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: Yes
            satisfied_requirement
            open
            diffy

            Chromium LUCI CQ (Gerrit)

            unread,
            Apr 17, 2026, 4:00:47 PM (10 days ago) Apr 17
            to Yoav Weiss (@Shopify), Blink W3C Test Autoroller, Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org

            Chromium LUCI CQ submitted the change with unreviewed changes

            Unreviewed changes

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

            ```
            The name of the file: third_party/blink/renderer/core/loader/preload_helper.h
            Insertions: 2, Deletions: 1.

            @@ -105,7 +105,8 @@
            const String& as);

            // Returns the "as" attribute value string for a given ResourceType.
            - // This is the inverse of GetResourceTypeFromAsAttribute().
            + // Only supports types returned by GetResourceTypeFromAsAttribute();
            + // crashes with NOTREACHED() for unsupported types.
            // https://html.spec.whatwg.org/C/#preload-destination
            static String GetAsAttributeFromResourceType(ResourceType type);
            };
            ```
            ```
            The name of the file: third_party/blink/renderer/core/loader/preload_helper.cc
            Insertions: 9, Deletions: 14.

            @@ -417,28 +417,23 @@
            case ResourceType::kScript:
            return "script";
            case ResourceType::kCSSStyleSheet:
            - case ResourceType::kXSLStyleSheet:
            return "style";
            case ResourceType::kTextTrack:
            return "track";
            case ResourceType::kFont:
            return "font";
            - case ResourceType::kAudio:
            - return "audio";
            - case ResourceType::kVideo:
            - return "video";
            - case ResourceType::kManifest:
            - return "manifest";
            - case ResourceType::kSpeculationRules:
            - return "speculationrules";
            - case ResourceType::kDictionary:
            - return "dictionary";
            - case ResourceType::kSVGDocument:
            - return "document";
            case ResourceType::kRaw:
            + return "fetch";
            + case ResourceType::kAudio:
            + case ResourceType::kVideo:
            + case ResourceType::kManifest:
            + case ResourceType::kSpeculationRules:
            + case ResourceType::kDictionary:
            + case ResourceType::kSVGDocument:
            + case ResourceType::kXSLStyleSheet:
            case ResourceType::kLinkPrefetch:
            case ResourceType::kMock:
            - return "fetch";
            + NOTREACHED();
            }
            }

            ```

            Change information

            Commit message:
            Add performance.speculations.preloads for speculation measurement

            Expose preload measurement data on the Performance object.
            This provides a live API that can be queried at any time, not just
            during page unload.

            The "used" attribute contains a coarsened timestamp indicating when the
            resource was used.

            The "crossorigin" and "as" attributes contain the relevant attributes
            of the fetched resource.

            Co-Authored-By: AI (Claude Opus 4.6 via Pi) <nor...@pi.dev>
            Change-Id: I6693be2f65d2fb83d5fc1137168d75b22a438917
            Bug: 481590676
            Reviewed-by: Hiroki Nakagawa <nhi...@chromium.org>
            Commit-Queue: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Cr-Commit-Position: refs/heads/main@{#1616799}
            Files:
            • M android_webview/test/data/web_tests/webexposed/global-interface-listing-expected.txt
            • M third_party/blink/renderer/bindings/generated_in_core.gni
            • M third_party/blink/renderer/bindings/idl_in_core.gni
            • M third_party/blink/renderer/core/loader/preload_helper.cc
            • M third_party/blink/renderer/core/loader/preload_helper.h
            • M third_party/blink/renderer/core/timing/build.gni
            • M third_party/blink/renderer/core/timing/performance.cc
            • M third_party/blink/renderer/core/timing/performance.h
            • M third_party/blink/renderer/core/timing/performance.idl
            • A third_party/blink/renderer/core/timing/preload_data.cc
            • A third_party/blink/renderer/core/timing/preload_data.h
            • A third_party/blink/renderer/core/timing/preload_data.idl
            • A third_party/blink/renderer/core/timing/speculation_data.cc
            • A third_party/blink/renderer/core/timing/speculation_data.h
            • A third_party/blink/renderer/core/timing/speculation_data.idl
            • M third_party/blink/renderer/core/timing/window_performance.cc
            • M third_party/blink/renderer/core/timing/window_performance.h
            • M third_party/blink/renderer/platform/loader/fetch/fetch_parameters.cc
            • M third_party/blink/renderer/platform/loader/fetch/fetch_parameters.h
            • M third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
            • M third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
            • M third_party/blink/renderer/platform/runtime_enabled_features.json5
            • A third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/performance-speculations-unused-preload.tentative.html
            • A third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/performance-speculations-used-preload.tentative.html
            • A third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/support/preloaded-data.txt
            • A third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/support/preloaded-script.js
            • A third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/support/preloaded-style.css
            • A third_party/blink/web_tests/external/wpt/speculation-rules/speculation-measurement/support/speculation-measurement-utils.js
            • M third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
            Change size: L
            Delta: 29 files changed, 582 insertions(+), 0 deletions(-)
            Branch: refs/heads/main
            Submit Requirements:
            • requirement satisfiedCode-Review: +1 by Hiroki Nakagawa
            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: I6693be2f65d2fb83d5fc1137168d75b22a438917
            Gerrit-Change-Number: 7715319
            Gerrit-PatchSet: 16
            Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
            Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
            Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
            Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-CC: Blink W3C Test Autoroller <blink-w3c-te...@chromium.org>
            open
            diffy
            satisfied_requirement

            Blink W3C Test Autoroller (Gerrit)

            unread,
            Apr 17, 2026, 6:28:43 PM (10 days ago) Apr 17
            to Chromium LUCI CQ, Yoav Weiss (@Shopify), Hiroki Nakagawa, android-bu...@system.gserviceaccount.com, Kouhei Ueno, chromium...@chromium.org, Kentaro Hara, Nate Chapin, Raphael Kubo da Costa, android-web...@chromium.org, ashleynewson+w...@chromium.org, blink-revie...@chromium.org, blink-re...@chromium.org, blink-revi...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org, core-timi...@chromium.org, gavinp...@chromium.org, jmedle...@chromium.org, kinuko...@chromium.org, loading-re...@chromium.org, loading...@chromium.org, speed-metrics...@chromium.org

            Message from Blink W3C Test Autoroller

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

            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: I6693be2f65d2fb83d5fc1137168d75b22a438917
            Gerrit-Change-Number: 7715319
            Gerrit-PatchSet: 16
            Gerrit-Owner: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
            Gerrit-Reviewer: Hiroki Nakagawa <nhi...@chromium.org>
            Gerrit-Reviewer: Kouhei Ueno <kou...@chromium.org>
            Gerrit-Reviewer: Yoav Weiss (@Shopify) <yoav...@chromium.org>
            Gerrit-CC: Blink W3C Test Autoroller <blink-w3c-te...@chromium.org>
            Gerrit-CC: Kentaro Hara <har...@chromium.org>
            Gerrit-CC: Nate Chapin <jap...@chromium.org>
            Gerrit-CC: Raphael Kubo da Costa <ku...@igalia.com>
            Gerrit-Comment-Date: Fri, 17 Apr 2026 22:28:38 +0000
            Gerrit-HasComments: No
            Gerrit-Has-Labels: No
            satisfied_requirement
            open
            diffy
            Reply all
            Reply to author
            Forward
            0 new messages