chromium/tools/metrics/histograms/metadata/page/histograms.xml

<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of Page histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
[email protected].
-->

<histogram-configuration>

<histograms>

<variants name="BackgroundSuffix">
  <variant name="" summary="never backgrounded during the navigation"/>
  <variant name=".WasBackgrounded"
      summary="backgrounded at least once during the navigation"/>
</variants>

<variants name="BrowserInitializationStatus">
  <variant name="" summary="any"/>
  <variant name=".IsBrowserStarting"
      summary="browser initilization in progress"/>
</variants>

<variants name="Gap">
  <variant name="1000ms"/>
</variants>

<variants name="HiddenSuffix">
  <variant name="" summary="never hidden during the navigation"/>
  <variant name=".WasHidden"
      summary="hidden at least once during the navigation"/>
</variants>

<variants name="LoadedIdleVisibility">
  <variant name="" summary="all pages"/>
  <variant name=".Background"
      summary="pages that were hidden during the navigation"/>
  <variant name=".Foreground"
      summary="pages that were visible during the navigation"/>
  <variant name=".MixedBGFG"
      summary="pages that were hidden for only part of the navigation"/>
</variants>

<variants name="MaxWindowSize">
  <variant name="5000ms"/>
</variants>

<variants name="NavigationAbandonReason">
  <variant name="" summary="any reason"/>
  <variant name=".AppBackgrounded" summary="AppBackgrounded"/>
  <variant name=".ErrorPage" summary="ErrorPage"/>
  <variant name=".ExplicitCancellation" summary="ExplicitCancellation"/>
  <variant name=".FailedSecurityCheck" summary="FailedSecurityCheck"/>
  <variant name=".FrameRemoved" summary="FrameRemoved"/>
  <variant name=".Hidden" summary="Hidden"/>
  <variant name=".InternalCancellation" summary="InternalCancellation"/>
  <variant name=".NeverStarted" summary="NeverStarted"/>
  <variant name=".NewHistoryNavigation" summary="NewHistoryNavigation"/>
  <variant name=".NewOtherNavigationBrowserInitiated"
      summary="NewOtherNavigationBrowserInitiated"/>
  <variant name=".NewOtherNavigationRendererInitiated"
      summary="NewOtherNavigationRendererInitiated"/>
  <variant name=".NewReloadNavigation" summary="NewReloadNavigation"/>
  <variant name=".Other" summary="Other"/>
  <variant name=".RenderProcessGone" summary="RenderProcessGone"/>
</variants>

<variants name="NavigationCountType">
  <variant name="IsFirstNavigation"
      summary="first navigation after browser started"/>
  <variant name="IsSubsequentNavigation"
      summary="subsequent navigation after browser started"/>
</variants>

<!-- LINT.IfChange(NavigationMilestone) -->

<variants name="NavigationMilestone">
  <variant name="AFTEnd"/>
  <variant name="AFTStart"/>
  <variant name="BodyChunkEnd" summary="BodyChunkEnd (added in M129)"/>
  <variant name="BodyChunkStart" summary="BodyChunkStart (added inM129)"/>
  <variant name="CommitReceived"/>
  <variant name="CommitSent"/>
  <variant name="DidCommit"/>
  <variant name="DOMContentLoaded"/>
  <variant name="FirstContentfulPaint"/>
  <variant name="FirstRedirectedRequestStart"/>
  <variant name="FirstRedirectResponseLoaderCallback"/>
  <variant name="FirstRedirectResponseStart"/>
  <variant name="HeaderChunkEnd" summary="HeaderChunkEnd (added in M129)"/>
  <variant name="HeaderChunkStart" summary="HeaderChunkStart (added in M129)"/>
  <variant name="LargestContentfulPaint"
      summary="LargestContentfulPaint (Warning: There were some duplicated
               records in M128-129, crrev.com/c/5802697 for more details)"/>
  <variant name="LoaderStart"/>
  <variant name="LoadEventStarted"/>
  <variant name="NavigationStart"/>
  <variant name="NonRedirectedRequestStart"/>
  <variant name="NonRedirectResponseLoaderCallback"/>
  <variant name="NonRedirectResponseStart"/>
  <variant name="ParseStart"/>
</variants>

<!-- LINT.ThenChange(//components/page_load_metrics/browser/observers/abandoned_page_load_metrics_observer.h:NavigationMilestone) -->

<variants name="NonSRPSuffix">
  <variant name="" summary="the navigation never targeted non-SRP URL"/>
  <variant name=".WasNonSRP"
      summary="the navigation previously targeted non-SRP URL"/>
</variants>

<variants name="ObservedNavigation">
  <variant name="" summary="all navigations"/>
  <variant name=".GoogleSearch" summary="SRP navigations"/>
</variants>

<variants name="PageLoadType">
  <variant name="" summary="regular"/>
  <variant name=".AfterBackForwardCacheRestore" summary="bfcache restoration"/>
  <variant name=".Prerender" summary="prerendered"/>
</variants>

<!-- LINT.IfChange(PagePreloadingTriggerType) -->

<variants name="PagePreloadingTriggerType">
  <variant name=".Embedder_BookmarkBar"/>
  <variant name=".Embedder_DefaultSearchEngine"/>
  <variant name=".Embedder_DirectURLInput"/>
  <variant name=".Embedder_NewTabPage"/>
  <variant name=".SpeculationRule"/>
  <variant name=".SpeculationRuleFromAutoSpeculationRules"/>
  <variant name=".SpeculationRuleFromIsolatedWorld"/>
</variants>

<!-- LINT.ThenChange(//tools/metrics/histograms/metadata/navigation/histograms.xml:PagePreloadingTriggerType) -->

<variants name="PrivacySandboxAdsApi">
  <variant name="AttributionReporting"/>
  <variant name="FencedFrames"/>
  <variant name="PrivateAggregation"/>
  <variant name="ProtectedAudienceJoinAdInterestGroup"/>
  <variant name="ProtectedAudienceRunAdAuction"/>
  <variant name="SharedStorage"/>
  <variant name="Topics"/>
</variants>

<!-- LINT.IfChange(BlinkRequestDestination) -->

<variants name="RequestDestination">
  <variant name="audio"/>
  <variant name="audioworklet"/>
  <variant name="document"/>
  <variant name="embed"/>
  <variant name="empty"/>
  <variant name="fencedframe"/>
  <variant name="font"/>
  <variant name="frame"/>
  <variant name="iframe"/>
  <variant name="image"/>
  <variant name="manifest"/>
  <variant name="object"/>
  <variant name="paintworklet"/>
  <variant name="report"/>
  <variant name="script"/>
  <variant name="serviceworker"/>
  <variant name="sharedworker"/>
  <variant name="style"/>
  <variant name="track"/>
  <variant name="video"/>
  <variant name="webbundle"/>
  <variant name="worker"/>
  <variant name="xslt"/>
</variants>

<!-- LINT.ThenChange(//tools/metrics/histograms/metadata/blink/histograms.xml:BlinkRequestDestination) -->

<variants name="RTTBucketSuffix">
  <variant name="" summary="any"/>
  <variant name=".RTT200To450" summary="RTT between 200 to 450ms"/>
  <variant name=".RTTAbove450" summary="RTT greater than 450ms"/>
  <variant name=".RTTBelow200" summary="RTT less than 200ms"/>
  <variant name=".RTTUnkown" summary="RTT unkown"/>
</variants>

<variants name="TabInitializationStatus">
  <variant name="" summary="any"/>
  <variant name=".IsNewTab" summary="navigation directly after a new tab"/>
</variants>

<!-- LINT.IfChange(TopChromeWebUIName) -->

<variants name="WebUIName">
  <variant name=""/>
  <variant name=".BookmarksSidePanel"/>
  <variant name=".CompanionSidePanelUntrusted"/>
  <variant name=".Compose"/>
  <variant name=".CustomizeChrome"/>
  <variant name=".DataSharingBubble"/>
  <variant name=".Emoji"/>
  <variant name=".Feed"/>
  <variant name=".HistoryClustersSidePanel"/>
  <variant name=".LensSearchBubble"/>
  <variant name=".LensUntrusted"/>
  <variant name=".MakoUntrusted"/>
  <variant name=".PerformanceSidePanel"/>
  <variant name=".ReadAnythingUntrusted"/>
  <variant name=".ReadingList"/>
  <variant name=".ShoppingInsightsSidePanel"/>
  <variant name=".TabSearch"/>
  <variant name=".UserNotesSidePanel"/>
</variants>

<!-- LINT.ThenChange(//tools/metrics/histograms/metadata/others/histograms.xml:TopChromeWebUIName) -->

<variants name="Window">
  <variant name="SessionWindow"/>
</variants>

<histogram name="PageActionController.ActionTypeShown2"
    enum="PageActionIconType" expires_after="2024-11-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The type of Page Action currently shown. Logged once per ephemeral page
    action the first time it becomes visible on a given page. Tab switches will
    only trigger logging for any page actions that have not already been logged
    as visible on this page.
  </summary>
</histogram>

<histogram name="PageActionController.ExtensionsWithPageActions" units="units"
    expires_after="2023-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of Extensions that have Page Actions. Measured once per profile
    open.

    Histogram is in the process of being removed in in favor of
    Extensions.ExtensionsWithPageActions that emits only on profile open for
    &quot;user&quot; profiles (profiles where people can install extensions,
    specifically profiles that can have non-component extensions installed).
  </summary>
</histogram>

<histogram name="PageActionController.Icon.CTR2" enum="PageActionCTREvent"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records events related to overall ephemeral page action icon click through
    rate (CTR) calculation.

    The CTR can be calculated by computing &quot;Clicked&quot; /
    &quot;Shown&quot;. &quot;Clicked&quot; means the page action icon was
    clicked. &quot;Shown&quot; means that the page action icon was displayed.
    &quot;Shown&quot; is logged once per page action the first time it becomes
    visible on a given page, and &quot;Clicked&quot; is logged once per click.
  </summary>
</histogram>

<histogram name="PageActionController.Icon.NumberActionsShownWhenClicked"
    units="actions" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of ephemeral Page Actions currently shown. Measured each time a
    page action icon is clicked.
  </summary>
</histogram>

<histogram name="PageActionController.NumberActionsShown2" units="actions"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of ephemeral Page Actions currently shown. Measured each time a
    new page is loaded, and then again when each new page action appears on the
    same page.
  </summary>
</histogram>

<histogram name="PageActionController.PagesWithActionsShown2"
    enum="PageActionPageEvent" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records events related to percentage of pages with actions calculation.

    The percentage of pages with at least one ephemeral action shown can be
    calculated by computing &quot;Action Shown&quot; / &quot;Page Shown&quot;.
    The percentage of pages with multiple ephemeral actions shown can be
    calculated by computing &quot;Multiple Actions Shown&quot; / &quot;Page
    Shown&quot;. &quot;Page Shown&quot; is logged once when a given page is
    first loaded, &quot;Action Shown&quot; is logged when the first page action
    is displayed on a given page, and &quot;Multiple Actions Shown&quot; is
    logged the first time a page action appears on a given page alongside a
    second page action.
  </summary>
</histogram>

<histogram name="PageActionController.{PageActionType}.Icon.CTR2"
    enum="PageActionCTREvent" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records events related to {PageActionType} page action icon click through
    rate (CTR) calculation.

    The CTR can be calculated by computing &quot;Clicked&quot; /
    &quot;Shown&quot;. &quot;Clicked&quot; means the page action icon was
    clicked. &quot;Shown&quot; means that the page action icon was displayed.
    &quot;Shown&quot; is logged once per page action the first time it becomes
    visible on a given page, and &quot;Clicked&quot; is logged once per click.
  </summary>
  <token key="PageActionType">
    <variant name="BookmarksStar"/>
    <variant name="ClickToCall"/>
    <variant name="CookieControls"/>
    <variant name="FileSystemAccess"/>
    <variant name="Find"/>
    <variant name="IntentPicker"/>
    <variant name="LensOverlay"/>
    <variant name="LocalCardMigration"/>
    <variant name="ManagePasswords"/>
    <variant name="MandatoryReauth"/>
    <variant name="MemorySaver"/>
    <variant name="PaymentsOfferNotification"/>
    <variant name="PriceInsights"/>
    <variant name="PriceTracking"/>
    <variant name="ProductSpecifications"/>
    <variant name="PWAInstall"/>
    <variant name="QRCodeGenerator"/>
    <variant name="ReadAnything"/>
    <variant name="ReaderMode"/>
    <variant name="SaveAutofillAddress"/>
    <variant name="SaveCard"/>
    <variant name="SaveIban"/>
    <variant name="SendTabToSelf"/>
    <variant name="SharingHub"/>
    <variant name="SideSearch"/>
    <variant name="SMSRemoteFetcher"/>
    <variant name="Translate"/>
    <variant name="VirtualCardEnroll"/>
    <variant name="VirtualCardManualFeedback"/>
    <variant name="Zoom"/>
  </token>
</histogram>

<histogram base="true"
    name="PageLoad.AdPaintTiming.NavigationToFirstContentfulPaint3" units="ms"
    expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from frame navigation start to FirstContentfulPaint of each
    ad frame that receives a FirstContentfulPaint. The time could be quite
    large, as some ads don't paint until they're scrolled into view. But the
    metric is still useful in aggregate.

    Recorded for all ad frames with non-zero bytes or cpu usage that receive a
    FirstContentfulPaint. Recorded when the ad frame or page is destroyed.

    Changes to how cross-origin content is loaded (e.g., security policies,
    network prioritization) or to iframes can certainly affect this metric.

    Do not modify this metric in any way without contacting
    [email protected].
  </summary>
</histogram>

<histogram base="true"
    name="PageLoad.AdPaintTiming.TopFrameNavigationToFirstContentfulPaint"
    units="ms" expires_after="2024-10-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from top frame navigation start to FirstContentfulPaint of
    each ad frame that receives a FirstContentfulPaint. The time could be quite
    large, as some ads don't paint until they're scrolled into view. But the
    metric is still useful in aggregate.

    Recorded for all ad frames with non-zero bytes or cpu usage that receive a
    FirstContentfulPaint. Recorded when the ad frame or page is destroyed.

    Changes to how cross-origin content is loaded (e.g., security policies,
    network prioritization) or to iframes can certainly affect this metric.
  </summary>
</histogram>

<histogram name="PageLoad.BackForwardCache.Event"
    enum="PageLoadBackForwardCacheEvent" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the events related to the back-forward cache, like when the page is
    put into the back-forward cache.
  </summary>
</histogram>

<histogram name="PageLoad.BeforeSoftNavigation.CumulativeLayoutShift"
    units="ms" expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in a session window before any soft navigation happens. The gap
    between two consecutive shifts in a window is not bigger than 1000ms and the
    maximum window size is 5000ms. This metric's integral value is 100x the
    fractional cumulative layout shift score described in the explainer.
  </summary>
</histogram>

<histogram name="PageLoad.BeforeSoftNavigation.InteractionToNextPaint"
    units="ms" expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    An approximation of a high percentile of user interaction latency of a page
    load before any soft navigation happens, in ms. For this metric, we measure
    the latency of user interactions as described here: https://web.dev/inp
  </summary>
</histogram>

<histogram base="true" name="PageLoad.Bytes" units="KB"
    expires_after="2025-07-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Only recorded if the page has at least one identified ad frame. Recorded in
    PageLoadMetrics when the page is destroyed. Bytes include all bytes used by
    the network to load a resource and response body bytes for cached resources
    (from both the HTTP and memory caches). An ad frame consists of the
    identified ad frame and all of its children (which may also be ads, but are
    counted as part of the ancestor ad frame). Includes resources that did not
    finish loading.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.Ads.AdPaintTiming.TopFrameNavigationToFirstAdFirstContentfulPaint"
    units="ms" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from the top frame navigation until the first ad-frame on
    the page reaches FirstContentfulPaint. Note that offscreen iframes don't
    reach FCP until they're scrolled into view, so it can be long.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.Ads.AdPaintTiming.TopFrameNavigationToFirstAdFirstContentfulPaintAfterNoAuction"
    units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from the top frame navigation until the first ad-frame on
    the page reaches FirstContentfulPaint. Only recorded if no Fledge auction
    (on-device or server) was completed before the frame was painted (but an
    auction could have been aborted). Note that offscreen iframes don't reach
    FCP until they're scrolled into view, so it can be long.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.Ads.AdPaintTiming.TopFrameNavigationToFirstAdFirstContentfulPaintAfterServerAndDeviceAuctions"
    units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from the top frame navigation until the first ad-frame on
    the page reaches FirstContentfulPaint. Only recorded if both a server and an
    on-device Fledge auction completed with or without a winner (and was not
    aborted). This could have been multiple auctions or a single hybrid auction.
    Note that offscreen iframes don't reach FCP until they're scrolled into
    view, so it can be long.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.Ads.AdPaintTiming.TopFrameNavigationToFirstAdFirstContentfulPaintAfter{AuctionType}Auction"
    units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time from the top frame navigation until the first ad-frame on
    the page reaches FirstContentfulPaint. Only recorded if a Fledge
    {AuctionType} auction completed with or without a winner (and was not
    aborted) and no non-{AuctionType} auction was completed before the frame was
    painted. Note that offscreen iframes don't reach FCP until they're scrolled
    into view, so it can be long.
  </summary>
  <token key="AuctionType">
    <variant name="Device" summary="on-device"/>
    <variant name="Server" summary="server"/>
  </token>
</histogram>

<histogram name="PageLoad.Clients.Ads.AllPages.NonAdNetworkBytes" units="KB"
    expires_after="2024-10-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Total number of network bytes that went towards loading non-ad resources for
    a single page over its entire lifetime. This includes resources that did not
    finish or were canceled. Only recorded for pages with non-zero total bytes,
    including those without an ad frame and pages with no ad resources. Recorded
    when the page is destroyed.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.AllPages.PercentNetworkBytesAds"
    units="%" expires_after="2024-10-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The percentage of network bytes loaded by the page that are attributed to ad
    resources (including ad resources in the main frame) across the entire page
    load. Only recorded for pages with non-zero network bytes, including those
    without an ad frame and pages with no ad resources. Recorded when the page
    is destroyed.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.AllPages.PercentTotalBytesAds" units="%"
    expires_after="2025-04-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The percentage of all bytes loaded by the page that are attributed to ad
    resources (including ad resources in the main frame) across the entire page
    load. Only recorded for pages with non-zero total bytes, including those
    without an ad frame and pages with no ad resources. Recorded when the page
    is destroyed.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.AverageViewportAdDensity" units="%"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The estimated average viewport ad density. Each density sample value is
    calculated as the area of (iframe and img) ads within the viewport * 100 /
    viewport area, where each overlapping area is counted once. And this metric
    takes the average of the densities accumulated over the page load time
    rounded to the nearest integer. Recorded when the page is destroyed.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.HeavyAds.DisallowedByBlocklist"
    enum="BooleanBlocked" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the heavy ad intervention was disallowed by the blocklist on
    a frame. Only recorded when the heavy ad blocklist is enabled and available
    (e.g. this is not recorded in incognito mode).
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.HeavyAds.NetworkBytesAtFrameUnload"
    units="bytes" expires_after="2025-04-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of network bytes used by a heavy ad unloaded due to
    network usage by the heavy ad intervention. It is recorded at the time of
    unload and the value may be larger than the heavy ads threshold due to the
    delay in unloading an ad.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.Memory.MainFrame.Max" units="KiB"
    expires_after="2024-11-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The maximum reported number of kilobytes of memory used by V8 by the main
    frame in this pageload.

    Only recorded if the page has at least one identified ad frame. Recorded in
    PageLoadMetrics when the page is destroyed. An ad frame consists of the
    identified ad frame and all of its children (which may also be ads, but are
    counted as part of the ancestor ad frame).

    Warning: This histogram has incomplete data. It expired in 03/2022 and was
    unexpired in 11/2023.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.Memory.UpdateCount" units="count"
    expires_after="2024-11-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of V8 memory measurement updates received by
    AdsPageLoadMetricsObserver per pageload. Only recorded if the page has at
    least one identified ad frame. Recorded in PageLoadMetrics when the page is
    destroyed.

    Warning: This histogram has incomplete data. It expired in 06/2022 and was
    unexpired in 11/2023.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Ads.Resources.Bytes.Ads2" units="KB"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Total number of network bytes that went towards loading ad resources for a
    single page over it's entire lifetime. This includes resources that did not
    finish or were canceled. Only recorded for pages with non-zero ad bytes.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.Experimental.PageTiming.InputToNavigation.Subframe"
    units="ms" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from the user input that triggers the top-level navigation for an
    AMP document to the time that the navigation for the AMP document is
    initiated in the AMP frame. This gives insight into how often AMP documents
    are navigated to via same document navigations without being prerendered.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.Experimental.PageTiming.MainFrameToSubFrameNavigationDelta.Subframe"
    units="ms" expires_after="2023-04-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from the main frame navigation to the subsequent subframe
    navigation for the AMP document. Only recorded for non-same-page
    navigations.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.InteractiveTiming.FirstInputDelay4.Subframe.FullNavigation"
    units="ms" expires_after="M97">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per navigation, in an AMP subframe document. Recorded on first page
    interaction. See https://goo.gl/tr1oTZ for a detailed explanation. Excludes
    scrolls. Only non-same-document navigations are included.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.InteractiveTiming.NumInteractions.Subframe"
    units="Count" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of interactions of a page load, in AMP subframe. Definition of an
    interaction:
    https://web.dev/better-responsiveness-metric/#group-events-into-interactions
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.InteractiveTiming.{NormalizedResponsivenessMetric}.{UserInteractionLatency}.Subframe{FullNavigation}"
    units="ms" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The {NormalizedResponsivenessMetric} of a page load, in AMP subframes, in
    ms. For this metric, we measure the latency of a user interaction by the
    {UserInteractionLatency} within the user interaction. Full navigation means
    we only include non-same-document navigations, otherwise we only include
    same-document navigations.

    Recorded at the end of the AMP document lifetime, such as when the document
    is being navigated away from.
  </summary>
  <token key="FullNavigation">
    <variant name=""/>
    <variant name=".FullNavigation"/>
  </token>
  <token key="NormalizedResponsivenessMetric">
    <variant name="UserInteractionLatency.HighPercentile2"/>
    <variant name="WorstUserInteractionLatency"/>
  </token>
  <token key="UserInteractionLatency">
    <variant name="MaxEventDuration"/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore.Subframe.SessionWindow.Gap1000ms.Max5000ms2"
    units="scorex10000" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in the AMP subframe. The gap between two consecutive shifts in a
    window is not bigger than 1000ms and the maximum window size is 5000ms. This
    metric's integral value is 10000x the fractional cumulative layout shift
    score described in the explainer. If {Bfcache} is triggered, we record the
    metric when the user navigates away or closes the page after the page was
    restored from back-forward cache. Otherwise, we record it at the end of the
    page lifetime, such as when the page is being navigated away from or when a
    tab is being closed.

    Recorded for non same-document AMP navigations in the main frame, at the end
    of the AMP document lifetime, such as when the document is being navigated
    away from.

    Replaces
    PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore.Subframe.SessionWindow.Gap1000ms.Max5000ms
    and increases granularity in order to get more coverage for ~40% of the
    values in the 0-0.1 range.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.LayoutInstability.MaxCumulativeShiftScore.Subframe.{Navigation}{Window}.Gap{Gap}.Max{MaxWindowSize}"
    units="scorex10" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in a {Window}, in the AMP subframe. The gap between two consecutive
    shifts in a window is not bigger than {Gap} and the maximum window size is
    {MaxWindowSize}. This metric's integral value is 100x the fractional
    cumulative layout shift score described in the explainer. If the
    {Navigation} is FullNavigation, we record the metric for non same-document
    AMP navigations in the main frame, at the end of the AMP document lifetime,
    such as when the document is being navigated away from. Otherwise, only
    same-document navigations are included.
  </summary>
  <token key="Navigation">
    <variant name=""/>
    <variant name="FullNavigation."/>
  </token>
  <token key="Window" variants="Window">
    <variant name=""/>
  </token>
  <token key="Gap" variants="Gap">
    <variant name=""/>
  </token>
  <token key="MaxWindowSize" variants="MaxWindowSize">
    <variant name=""/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.PaintTiming.InputToFirstContentfulPaint.Subframe"
    units="ms" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from user input to first &quot;contentful&quot; paint in an AMP
    subframe document. Will be zero or near-zero in cases where the AMP subframe
    document was prerendered. Only same-document navigations are included.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.PaintTiming.InputToFirstContentfulPaint.Subframe.FullNavigation"
    units="ms" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from user input to first &quot;contentful&quot; paint in an AMP
    subframe document. Only non-same-document navigations are included.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.PaintTiming.InputToLargestContentfulPaint.Subframe"
    units="ms" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from user input to largest &quot;contentful&quot; paint in an AMP
    subframe document. Only same-document navigations are included.

    Excludes any content painted after user input. The value is recorded at the
    end of each page load unless there is an abort or user input before text or
    image paint. See http://bit.ly/fcp_plus_plus for details.

    Will be zero or near-zero in cases where the AMP subframe document was
    prerendered.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.AMP.PaintTiming.InputToLargestContentfulPaint.Subframe.FullNavigation"
    units="ms" expires_after="2025-01-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from user input to largest &quot;contentful&quot; paint in an AMP
    subframe document. Only non-same-document navigations are included.

    Excludes any content painted after user input. The value is recorded at the
    end of each page load unless there is an abort or user input before text or
    image paint. See http://bit.ly/fcp_plus_plus for details.

    This histogram has incomplete data. It expired after M78 and was re-added in
    M90, also after 2022-12-11 until M111, and also after 2023-06-18 until M121.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.InteractiveTiming.FirstInputDelay4"
    units="ms" expires_after="2025-10-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per navigation. Recorded on first FencedFrames' page interaction. See
    https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.LayoutInstability.CumulativeShiftScore"
    units="scorex10" expires_after="2024-10-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has
    occurred on the FencedFrames page (including all subframes). Higher values
    correspond to greater instability, which is bad. Recorded at the end of the
    page lifetime, such as when the page is being navigated away from or when a
    tab is being closed. On Android it's done when the browser is backgrounded.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.LayoutInstability.CumulativeShiftScore.MainFrame"
    units="scorex10" expires_after="2025-10-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has
    occurred in the FencedFrames page's main frame. Recorded at the end of the
    page lifetime, such as when the page is being navigated away from or when a
    tab is being closed. On Android, it's done when the browser is backgrounded.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from navigation start to first &quot;contentful&quot; paint. This
    metric does not include all FencedFrames' page loads. Recorded iff the page
    loads and the event happens in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.PaintTiming.NavigationToFirstImagePaint"
    units="ms" expires_after="2025-10-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    first image is painted, for FencedFrames' main frame documents. For images
    that render progressively, this is recorded as soon as any image pixels have
    been drawn iff the page loads and the event happens in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.PaintTiming.NavigationToFirstPaint"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    first paint is performed, for FencedFrames' main frame documents. Recorded
    iff the page loads and the event happens in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FencedFrames.PaintTiming.NavigationToLargestContentfulPaint2"
    units="ms" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted, across all frames under
    the FencedFrames root. Excludes any content painted after user input.
    Includes content that has been removed from the page. See web.dev/lcp for
    more details.

    The value is recorded at the end of each page load or the latest time when
    we can reliably record: when the page is navigated away, the browser is
    closed, or on Android when the browser is backgrounded, iff the page loads
    and the event happens in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FromGoogleSearch.FromSidePanel.InteractiveTiming.FirstInputDelay4"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per navigation. See https://goo.gl/tr1oTZ for a detailed explanation.
    Only recorded for side search navigations from the side panel that happen
    entirely in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FromGoogleSearch.FromSidePanel.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2"
    units="scorex10000" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in a Window. The gap between two consecutive shifts in a window is
    not bigger than 1000ms and the maximum window size is 5000ms. This metric's
    integral value is 10000x the fractional cumulative layout shift score
    described in the explainer. Only recorded for side search navigations from
    the side panel. The metric is emitted when the navigation is completed or
    the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FromGoogleSearch.FromSidePanel.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time in milliseconds from navigation timing's navigation start
    to the time when the page first paints content, in the AMP subframe. A
    contentful paint includes a paint of text, image, SVG, or canvas. Only
    recorded for side search navigations from the side panel that happen
    entirely in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FromGoogleSearch.FromSidePanel.PaintTiming.NavigationToFirstImagePaint"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    first image is painted, for main frame documents. For images that render
    progressively, this is recorded as soon as any image pixels have been drawn.
    Only recorded for side search navigations from the side panel that happen
    entirely in the foreground.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.FromGoogleSearch.FromSidePanel.PaintTiming.NavigationToLargestContentfulPaint2"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time in milliseconds from navigation timing's navigation start
    to the time when the page first paints the experimental largest content
    (text or image) within viewport, in the AMP subframe. See
    http://bit.ly/largest_contentful_paint_explainer for more details. Differs
    from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that removed
    content is still considered a valid candidate. Only recorded for side search
    navigations from the side panel that happen entirely in the foreground. The
    metric is emitted when the navigation is completed or the app is
    backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleHomepage.DomainLookupTiming.NavigationToDomainLookupEnd.{NavigationCountType}{BrowserInitializationStatus}"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time for {NavigationCountType} ({BrowserInitializationStatus})
    from navigation start to the time the domain lookup ended, for Google
    Homepage loads. Only recorded for Homepage navigations that start in the
    foreground and stay in the foreground until domain lookup end. This metric
    is recorded when the browser finished conducting DNS lookup.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleHomepage.DomainLookupTiming.NavigationToDomainLookupStart.{NavigationCountType}{BrowserInitializationStatus}"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time for {NavigationCountType} ({BrowserInitializationStatus})
    from navigation start to the time the domain lookup started, for Google
    Homepage loads. Only recorded for Homepage navigations that start in the
    foreground and stay in the foreground until domain lookup start. This metric
    is recorded when the browser started to conduct DNS lookup.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleHomepage.NavigationTiming.NavigationToConnectStart.{NavigationCountType}{BrowserInitializationStatus}"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time for {NavigationCountType} ({BrowserInitializationStatus})
    from navigation start to connect start, for Google Homepage loads. Only
    recorded for Homepage navigations that start in the foreground and stay in
    the foreground until connect start. This metric is recorded when the browser
    started to establish connection.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleHomepage.ParseTiming.NavigationToParseStart.{NavigationCountType}{BrowserInitializationStatus}"
    units="ms" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time for {NavigationCountType} ({BrowserInitializationStatus})
    from navigation start to parse start, for Google Homepage loads. Only
    recorded for Homepage navigations that start in the foreground and stay in
    the foreground until parse start. This metric is recorded when the parser
    started.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ConnectTiming.FinalRequestConnectDelay"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay caused by connection establishment for the final HTTP request
    which is sent for the main resource of a main frame navigation, for Google
    Search page loads. Only recorded for Search navigations that happen entirely
    in the foreground. The metric is emitted when the navigation is completed or
    the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ConnectTiming.FinalRequestDomainLookupDelay"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay caused by domain lookup for the final HTTP request which is sent
    for the main resource of a main frame navigation, for Google Search page
    loads. Only recorded for Search navigations that happen entirely in the
    foreground. The metric is emitted when the navigation is completed or the
    app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ConnectTiming.FinalRequestSslDelay"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay caused by SSL handshake for the final HTTP request which is sent
    for the main resource of a main frame navigation, for Google Search page
    loads. Only recorded for Search navigations that happen entirely in the
    foreground. The metric is emitted when the navigation is completed or the
    app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ConnectTiming.FirstRequestConnectDelay"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay caused by connection establishment for the first HTTP request
    which is sent for the main resource of a main frame navigation, for Google
    Search page loads. Only recorded for Search navigations that happen entirely
    in the foreground. The metric is emitted when the navigation is completed or
    the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ConnectTiming.FirstRequestDomainLookupDelay"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay caused by domain lookup for the first HTTP request which is sent
    for the main resource of a main frame navigation, for Google Search page
    loads. Only recorded for Search navigations that happen entirely in the
    foreground. The metric is emitted when the navigation is completed or the
    app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ConnectTiming.FirstRequestSslDelay"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay caused by SSL handshake for the first HTTP request which is sent
    for the main resource of a main frame navigation, for Google Search page
    loads. Only recorded for Search navigations that happen entirely in the
    foreground. The metric is emitted when the navigation is completed or the
    app is backgrounded on Android.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.GoogleSearch.CSI.{Event}" units="ms"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time {Event}, for Google Search page loads. The recorded values
    are calculated based on the metrics recorded by the JavaScript, which is
    done after the naivagation commit phase in Search. The metric is emitted
    when the navigation is completed or the app is backgrounded on Android. This
    is onlly recorded in the outermost main frame.

    Note that this event is randomly sampled based on the JavaScript in the
    page, recorded at the frequency of 1%.
  </summary>
  <token key="Event">
    <variant name="HeadChunkContentTime" summary="to process header chunk"/>
    <variant name="SearchContentTime"
        summary="from the server response time to receive the body chunk"/>
    <variant name="TimeBetweenHCTAndSCT"
        summary="between HeadChunkContentTime and SearchContentTime"/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.DomainLookupTiming.NavigationToDomainLookupEnd2.{NavigationCountType}{BrowserInitializationStatus}{TabInitializationStatus}"
    units="ms" expires_after="2025-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    domain lookup ended of {NavigationCountType} ({BrowserInitializationStatus},
    {TabInitializationStatus}), for Google Search page loads. Only recorded for
    Search navigations that start in the foreground and stay in the foreground
    until domain lookup end.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
  <token key="TabInitializationStatus" variants="TabInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.DomainLookupTiming.NavigationToDomainLookupStart2.{NavigationCountType}{BrowserInitializationStatus}{TabInitializationStatus}"
    units="ms" expires_after="2025-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    domain lookup started of {NavigationCountType}
    ({BrowserInitializationStatus}, {TabInitializationStatus}), for Google
    Search page loads. Only recorded for Search navigations that start in the
    foreground and stay in the foreground until domain lookup start.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
  <token key="TabInitializationStatus" variants="TabInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFinalLoaderCallback"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that a callback for the navigation
    loader is last invoked for the main resource of a main frame navigation, for
    Google Search page loads. Only recorded for Search navigations that happen
    entirely in the foreground. The metric is emitted when the navigation is
    completed or the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFinalRequestStart"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the final HTTP request is sent
    for the main resource of a main frame navigation, for Google Search page
    loads. Only recorded for Search navigations that happen entirely in the
    foreground. The metric is emitted when the navigation is completed or the
    app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFinalResponseStart"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the headers of the final HTTP
    response is received for the main resource of a main frame navigation, for
    Google Search page loads. Only recorded for Search navigations that happen
    entirely in the foreground. The metric is emitted when the navigation is
    completed or the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFirstLoaderCallback"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that a callback for the navigation
    loader is first invoked for the main resource of a main frame navigation,
    for Google Search page loads. Only recorded for Search navigations that
    happen entirely in the foreground. The metric is emitted when the navigation
    is completed or the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFirstRequestStart"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the first HTTP request is sent
    for the main resource of a main frame navigation, for Google Search page
    loads. Only recorded for Search navigations that happen entirely in the
    foreground. The metric is emitted when the navigation is completed or the
    app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToFirstResponseStart"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the headers of the first HTTP
    response is received for the main resource of a main frame navigation, for
    Google Search page loads. Only recorded for Search navigations that happen
    entirely in the foreground. The metric is emitted when the navigation is
    completed or the app is backgrounded on Android.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationStartToOnComplete"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the page load metrics observer is
    destructed (i.e. the page is closed), for Google Search page loads. The
    metric is emitted when the navigation is completed.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.NavigationTiming.NavigationToConnectStart2.{NavigationCountType}{BrowserInitializationStatus}{TabInitializationStatus}"
    units="ms" expires_after="2025-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    navigation start of {NavigationCountType} ({BrowserInitializationStatus},
    {TabInitializationStatus}), for Google Search page loads. Only recorded for
    Search navigations that start in the foreground and stay in the foreground
    until connect start.

    In cases where navigation start occurs after connect start (e.g. pre-fetch,
    pre-connect), this metric will contain zero.
  </summary>
  <token key="NavigationCountType" variants="NavigationCountType"/>
  <token key="BrowserInitializationStatus"
      variants="BrowserInitializationStatus"/>
  <token key="TabInitializationStatus" variants="TabInitializationStatus"/>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time in milliseconds from navigation timing's navigation start
    to the time when the page first paints content, for Google Search page
    loads. A contentful paint includes a paint of text, image, SVG, or canvas.
    Only recorded for Search navigations that start in the foreground and stay
    in the foreground until the first contentful paint.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.PaintTiming.NavigationToLargestContentfulPaint"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time in milliseconds from navigation timing's navigation start
    to the time when the page first paints the experimental largest content
    (text or image) within viewport, for Google Search page loads. See
    http://bit.ly/largest_contentful_paint_explainer for more details. Differs
    from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that removed
    content is still considered a valid candidate. Only recorded for Search
    navigations that happen entirely in the foreground. The metric is emitted
    when the navigation is completed or the app is backgrounded on Android.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.GoogleSearch.PaintTiming.{MileStone}"
    units="ms" expires_after="2025-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation start to the time {MileStone}, for Google
    Search page loads. The actual value is recorded via `startTime` in
    performance.mark()'s markOptions. If `startTime` is not set, this metric is
    not recorded. This is recorded by emitting `perforamnce.mark()` in
    JavaScript, which is done after the naivagation commit phase in Search. This
    is onlly recorded in the outermost main frame.
  </summary>
  <token key="MileStone">
    <variant name="AFTEnd" summary="AFT end event is sent"/>
    <variant name="AFTStart" summary="AFT start event is sent"/>
    <variant name="BodyChunkEnd"
        summary="end of the header chunk start event is sent"/>
    <variant name="BodyChunkStart" summary="beginning of the body chunk"/>
    <variant name="HeaderChunkEnd"
        summary="end of the header chunk start event is sent"/>
    <variant name="HeaderChunkStart" summary="beginning of the header chunk"/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients.GoogleSearch.ParseTiming.NavigationToParseStart"
    units="ms" expires_after="2025-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    parser started, for Google Search page loads. Only recorded for Search
    navigations that start in the foreground and stay in the foreground until
    parse start.

    This metric has incomplete data. It was expired between 2023-10-01 and M121.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.LCPP.PaintTiming.ActualLCPIndex"
    units="Index(1 origin)" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>
    src/third_party/blink/renderer/core/lcp_critical_path_predictor/OWNERS
  </owner>
  <summary>
    Records the actual index in learned element locators ordered by frequency up
    to &quot;max_lcpp_histogram_buckets&quot; in LCP timing prediction. If
    actual LCP is out of locators, that is recorded as
    &quot;max_lcpp_histogram_buckets&quot; + 1 value. The metric is emitted only
    for navigations that LCP Critical Path Predictor provided non-empty hint
    data and only once when the user navigates away from the page.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.LCPP.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>
    src/third_party/blink/renderer/core/lcp_critical_path_predictor/OWNERS
  </owner>
  <summary>
    Measures the time from navigation start to the first contentful paint. The
    metric is emitted only for navigations that LCP Critical Path Predictor
    provided non-empty hint data.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.LCPP.PaintTiming.NavigationToLargestContentfulPaint"
    units="ms" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>
    src/third_party/blink/renderer/core/lcp_critical_path_predictor/OWNERS
  </owner>
  <summary>
    Measures the time from navigation start to the largest contentful paint. The
    metric is emitted only for navigations that LCP Critical Path Predictor
    provided non-empty hint data.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.LCPP.PaintTiming.PredictHitIndex"
    units="Index(1 origin)" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>
    src/third_party/blink/renderer/core/lcp_critical_path_predictor/OWNERS
  </owner>
  <summary>
    Records the hit index in learned element locators ordered by frequency up to
    &quot;max_lcpp_histogram_buckets&quot; when LCP timing predicor succeedded.
    The metric is emitted only for navigations that LCP Critical Path Predictor
    provided non-empty hint data and only once when the user navigates away from
    the page.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.LCPP.PaintTiming.PredictLCPResult"
    enum="LcppPredictResult" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>
    src/third_party/blink/renderer/core/lcp_critical_path_predictor/OWNERS
  </owner>
  <summary>
    Records the result of LCP timing predicor. The metric is emitted only for
    navigations that LCP Critical Path Predictor provided non-empty hint data
    and only once when the user navigates away from the page.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.LinkPreview.Usage" enum="LinkPreviewUsage"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/preloading/preview/OWNERS</owner>
  <summary>
    Records the LinkPreview feature usages per page visit. The metric is emitted
    on leaving a page, e.g. primary page changes, or tab closures.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.MultiTabLoading{OtherLoadingCount}.{Timing}{Background}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>{Timing} {OtherLoadingCount} {Background}</summary>
  <token key="OtherLoadingCount">
    <variant name=""
        summary="Only recorded when there were 1 or more other loading tabs
                 (the same as '1OrMore')."/>
    <variant name=".1OrMore"
        summary="Only recorded when there were 1 or more other loading tabs."/>
    <variant name=".2OrMore"
        summary="Only recorded when there were 2 or more other loading tabs."/>
    <variant name=".5OrMore"
        summary="Only recorded when there were 5 or more other loading tabs."/>
    <variant name=".With_0_OtherLoading"
        summary="Only recorded when there was no other loading tab."/>
    <variant name=".With_1_OtherLoading"
        summary="Only recorded when there was 1 other loading tab."/>
    <variant name=".With_2_OtherLoading"
        summary="Only recorded when there were 2 other loading tabs."/>
    <variant name=".With_3_OtherLoading"
        summary="Only recorded when there were 3 other loading tabs."/>
    <variant name=".With_4_OtherLoading"
        summary="Only recorded when there were 4 other loading tabs."/>
    <variant name=".With_5_OtherLoading"
        summary="Only recorded when there were 5 other loading tabs."/>
    <variant name=".WithTabCount_0"
        summary="Only recorded when there was 0 tab."/>
    <variant name=".WithTabCount_1"
        summary="Only recorded when there was 1 tab."/>
    <variant name=".WithTabCount_2_or_3"
        summary="Only recorded when there were 2 or 3 tabs."/>
    <variant name=".WithTabCount_4_to_7"
        summary="Only recorded when there were 3 to 7 tabs."/>
    <variant name=".WithTabCount_8_to_15"
        summary="Only recorded when there were 8 to 15 tabs."/>
    <variant name=".WithTabCount_16_to_31"
        summary="Only recorded when there were 16 to 31 tabs."/>
    <variant name=".WithTabCount_32_to_63"
        summary="Only recorded when there were 32 to 63 tabs."/>
    <variant name=".WithTabCount_64_or_more"
        summary="Only recorded when there were 64 or more tabs."/>
  </token>
  <token key="Timing">
    <variant name="DocumentTiming.NavigationToDOMContentLoadedEventFired"
        summary="Measures the time from navigation timing's navigation start
                 to the time the DOMContentLoaded event is fired, for main
                 frame documents."/>
    <variant name="DocumentTiming.NavigationToLoadEventFired"
        summary="Measures the time from navigation timing's navigation start
                 to the time the load event is fired, for main frame
                 documents."/>
    <variant name="Experimental.PaintTiming.NavigationToFirstMeaningfulPaint"
        summary="Measures the time from navigation start to first meaningful
                 paint."/>
    <variant name="PaintTiming.ForegroundToFirstContentfulPaint"
        summary="Measures the time from a background tab being switched to
                 the foreground to the time the first contentful paint is
                 performed, for main frame documents."/>
    <variant name="PaintTiming.NavigationToFirstContentfulPaint"
        summary="Measures the time from navigation start to first contentful
                 paint."/>
    <variant name="PaintTiming.NavigationToLargestContentfulPaint"
        summary="Measures the time from navigation timing's navigation start
                 to the time the largest content (text or image) is first
                 painted, across all frames. Excludes any content painted
                 after user input. Includes content that has been removed
                 from the page."/>
  </token>
  <token key="Background">
    <variant name="" summary=""/>
    <variant name=".Background"
        summary="The page was backgrounded at least once from navigation
                 start to this event."/>
  </token>
</histogram>

<histogram name="PageLoad.Clients.NavigationToFirstContentfulPaint.Timeout"
    enum="Boolean" expires_after="2025-06-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/components/page_load_metrics/OWNERS</owner>
  <summary>
    Determines if a navigation has not been completed due to not resulting in
    painted content before the maximum timeout allowed. The histogram will be
    emitted with true value once timeout expires and first contentful paint is
    not reached, and it will be emitted with false value if first contentful
    paint is reached before expiring the timeout.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.PerformanceManager.LCPToLoadedIdle{LoadedIdleVisibility}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded for each navigation when the LargestContentfulPaint (LCP) is
    available and the navigation reaches quiescence, as tracked by the
    Performance Manager PageNode::LoadingState::kLoadedIdle state. The value is
    the time between LCP and quiescence, or 0 if quiescence came first. This
    version of the metric is recorded for navigations in {LoadedIdleVisibility}.
  </summary>
  <token key="LoadedIdleVisibility" variants="LoadedIdleVisibility"/>
</histogram>

<histogram
    name="PageLoad.Clients.PerformanceManager.LCPWithoutLoadedIdle{LoadedIdleVisibility}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded for each navigation when the LargestConentfulPaint (LCP) is
    available and the navigation finishes without reaching quiescence (as
    tracked by the Performance Manager PageNode::LoadingState::kLoadedIdle
    state), such as by the page closing or a new navigation starting. The value
    is the time from navigation start to LCP. If the navigation reaches
    quiescense, PageLoad.Clients.PerformanceManager.LCPToLoadedIdle is recorded
    instead. This version of the metric is recorded for navigations in
    {LoadedIdleVisibility}.
  </summary>
  <token key="LoadedIdleVisibility" variants="LoadedIdleVisibility"/>
</histogram>

<histogram
    name="PageLoad.Clients.PerformanceManager.LoadedIdleWithoutLCP{LoadedIdleVisibility}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded for each navigation when it reaches quiescence, as tracked by the
    Performance Manager PageNode::LoadingState::kLoadedIdle state, without the
    LargestContentfulPaint (LCP) being available. The value is the time from
    navigation start to quiescence. If the navigation gets an LCP before
    reaching quiescense, PageLoad.Clients.PerformanceManager.LCPToLoadedIdle is
    recorded instead. This version of the metric is recorded for navigations in
    {LoadedIdleVisibility}.
  </summary>
  <token key="LoadedIdleVisibility" variants="LoadedIdleVisibility"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.InteractiveTiming.FirstInputDelay4{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.InteractiveTiming.FirstInputDelay4, but for page loads that were
    prerendered and were later activated. Note that prerendered page loads are
    excluded from PageLoad.InteractiveTiming.FirstInputDelay4.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.LayoutInstability.CumulativeShiftScore.MainFrame{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame, but for page
    loads that were prerendered and were later activated. Note that prerendered
    page loads are excluded from
    PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.LayoutInstability.CumulativeShiftScore{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.LayoutInstability.CumulativeShiftScore, but for page loads that
    were prerendered and were later activated. Note that prerendered page loads
    are excluded from PageLoad.LayoutInstability.CumulativeShiftScore.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2{PreloadingTriggerType}"
    units="ms" expires_after="2024-09-03">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2,
    but for page loads that were prerendered and were later activated. Note that
    prerendered page loads are excluded from
    PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.NavigationToActivation{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    Measures the time from the start of initial prerendering navigation to the
    start of activation navigation. This corresponds to the activationStart
    attribute of PerformanceNavigationTiming. Recorded when a prerendered page
    is activated.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.PaintTiming.ActivationToFirstContentfulPaint{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint, but for page loads
    that were prerendered and were later activated. This measures the time
    relative to the activation navigation start. Note that prerendered page
    loads are excluded from
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.PaintTiming.ActivationToFirstPaint{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.PaintTiming.NavigationToFirstPaint, but for page loads that were
    prerendered and were later activated. This measures the time relative to the
    activation navigation start. Note that prerendered page loads are excluded
    from PageLoad.PaintTiming.NavigationToFirstPaint.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.Prerender.PaintTiming.ActivationToLargestContentfulPaint2{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, but for page loads
    that were prerendered and were later activated. This measures the time
    relative to the activation navigation start. Note that prerendered page
    loads are excluded from
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram
    name="PageLoad.Clients.PrivacySandboxAds.InteractiveTiming.FirstInputDelay4.{PrivacySandboxAdsApi}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    PageLoad.InteractiveTiming.FirstInputDelay4, but recorded iff
    {PrivacySandboxAdsApi} was used in the page.
  </summary>
  <token key="PrivacySandboxAdsApi" variants="PrivacySandboxAdsApi"/>
</histogram>

<histogram
    name="PageLoad.Clients.PrivacySandboxAds.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2.{PrivacySandboxAdsApi}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2,
    but recorded iff {PrivacySandboxAdsApi} was used in the page.
  </summary>
  <token key="PrivacySandboxAdsApi" variants="PrivacySandboxAdsApi"/>
</histogram>

<histogram
    name="PageLoad.Clients.PrivacySandboxAds.PaintTiming.NavigationToFirstContentfulPaint.{PrivacySandboxAdsApi}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint, but recorded iff
    {PrivacySandboxAdsApi} was used in the page.
  </summary>
  <token key="PrivacySandboxAdsApi" variants="PrivacySandboxAdsApi"/>
</histogram>

<histogram
    name="PageLoad.Clients.PrivacySandboxAds.PaintTiming.NavigationToLargestContentfulPaint2.{PrivacySandboxAdsApi}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, but recorded iff
    {PrivacySandboxAdsApi} was used in the page.
  </summary>
  <token key="PrivacySandboxAdsApi" variants="PrivacySandboxAdsApi"/>
</histogram>

<histogram
    name="PageLoad.Clients.ServiceWorker2.PaintTiming.{Timing}.RaceNetworkRequestEligible"
    units="ms" expires_after="2024-07-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The {Timing} time of pages with the Service Worker fetch handlers. Metrics
    won't be recorded if pages are not controlled by service workers. This is
    recorded only when the ServiceWorker script is eligible for the experiment.
  </summary>
  <token key="Timing">
    <variant name="NavigationToFirstContentfulPaint"/>
    <variant name="NavigationToLargestContentfulPaint2"/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients.ServiceWorker2.PaintTiming.{Timing}.{HandlerType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The {Timing} time of pages with the Service Worker fetch handlers. Metrics
    won't be recorded if pages are not controlled by service workers. The
    metrics are broken down by {HandlerType}. {HandlerType} only explains the
    page's handler type, and it does not mean the fetch handler is actually
    skipped or not.
  </summary>
  <token key="Timing">
    <variant name="NavigationToFirstContentfulPaint"/>
    <variant name="NavigationToLargestContentfulPaint2"/>
  </token>
  <token key="HandlerType">
    <variant name="NonSkippableFetchHandler"
        summary="The fetch handler is recognized as not skippable."/>
    <variant name="SkippableFetchHandler"
        summary="The fetch handler is recognized as skippable."/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients.SideSearch.SidePanel.InteractiveTiming.FirstInputDelay4"
    units="ms" expires_after="2023-08-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per navigation. See https://goo.gl/tr1oTZ for a detailed explanation.
    Only recorded for side search navigations from the side panel.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.SideSearch.SidePanel.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2"
    units="scorex10000" expires_after="2023-08-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in a Window. The gap between two consecutive shifts in a window is
    not bigger than 1000ms and the maximum window size is 5000ms. This metric's
    integral value is 10000x the fractional cumulative layout shift score
    described in the explainer. Only recorded for side search navigations from
    the side panel.

    This is recorded when the side search WebContents in the side panel is
    navigated.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.SideSearch.SidePanel.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2024-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation start to first contentful paint. Only
    recorded for side search navigations from the side panel.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.SideSearch.SidePanel.PaintTiming.NavigationToLargestContentfulPaint2"
    units="ms" expires_after="2024-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation start to largest contentful paint. Only
    recorded for side search navigations from the side panel.

    This is recorded when the side search WebContents in the side panel is
    navigated.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.ThirdParty.Frames.NavigationToFirstContentfulPaint3"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from navigation start to the first contentful paint of third-party
    (in respect to scheme://eTLD+1) frames on pages. Note that this can be
    significantly delayed due to lazy loading.

    Note also that all of the PageLoad.Clients.ThirdParty.Frames metrics will
    only be recorded for the first kMaxRecordedFrames (50) active iframe
    RenderFrameHosts (at any given time).
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.ThirdParty.Frames.Opaque.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from navigation start to the first contentful paint of third-party
    opaque origin frames on pages. Note that this metric is only collected when
    the top-level origin is not opaque. Also, this metric can be significantly
    delayed due to lazy loading.

    Note also that all of the PageLoad.Clients.ThirdParty.Frames metrics will
    only be recorded for the first kMaxRecordedFrames (50) active iframe
    RenderFrameHosts (at any given time).
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.ThirdParty.Frames.Opaque.NavigationToLargestContentfulPaint"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time from navigation start to the largest contentful paint of
    third-party opaque origin frames on pages. Note that this metric is only
    collected when the top-level origin is not opaque.

    Note also that all of the PageLoad.Clients.ThirdParty.Frames metrics will
    only be recorded for the first kMaxRecordedFrames (50) active iframe
    RenderFrameHosts (at any given time).
  </summary>
</histogram>

<histogram name="PageLoad.Clients.ThirdParty.Origins.CookieRead2" units="Count"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of third party (in respect to scheme://eTLD+1) origins on a page
    that read cookies either via resource request headers or document.cookie.

    This metric was expired between May and August 2023 and may be missing data.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.ThirdParty.PaintTiming.NavigationToLargestContentfulPaint.HasThirdPartyFont"
    units="ms" expires_after="2021-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the largest contentful paint only for pages that load a third party
    font and whose largest contentful resource type is text. See
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for details.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.TPCD.AdTPCAccess.BlockedByExperiment2"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    Record when a third party ad request reads cookies. True means the third
    party cookie deprecation experiment blocks third party cookies access while
    some mechanisms re-enable the third party cookie access. False means third
    party cookie access isn't blocked.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.TPCD.CookieAccess.ThirdPartyCookieAllowMechanism3"
    enum="ThirdPartyCookieAllowMechanism" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    Record the different mechanisms to re-enable third party cookie access when
    a third party accesses(read|change) cookies either via resource request
    headers or document.cookie.

    All other mechanisms are made sure to take precedence over
    r`ThirdPartyCookieAllowMechanism::kAllowBy3PCDMetadata.*` mechanisms.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.TPCD.ThirdPartyCookieAccessBlockedByExperiment2"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    Record when a third party accesses(read|change) cookies either via resource
    request headers or document.cookie. True means the third party cookie
    deprecation experiment blocks third party cookies access while some
    mechanisms re-enable the third party cookie access. False means third party
    cookie access isn't blocked.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.TPCD.TopLevelTpcd.CrossSiteTrialChange"
    enum="OriginTrialStatusChange" expires_after="2025-02-28">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    Record when a subresource (e.g. iframe) changes the status
    (enables|disables) of the &quot;Trial for Third Party Cookie Deprecation for
    Top Level Sites&quot; (TopLevelTpcd) for/in a cross-site context.

    These trial status changes do not effect the cookie settings maintained for
    the trial.

    Note: in certain situations, such as when the trial token is provided in a
    meta tag, this may be recorded multiple times for a given (cross-site) frame
    load.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.TPCD.TPCAccess.BlockedByExperiment.IsAdOrNonAd2"
    enum="Boolean" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    Records whether a cookie read that would be blocked by the TPCD experiment
    is for advertising purposes. Recorded only on third party cookie reads are
    blocked by the TPCD experiment when some mechanisms re-enable the third
    party cookie access.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.TPCD.TPCAccess.CookieReadStatus2"
    enum="CookieReadStatus" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    For an attempted cookie read access (document.cookie or via headers),
    records the status of the access based on the TPCD experiment, including
    what re-enablement mitigations were applied or skipped. Only recorded for
    third party, non-partitioned cookies.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.UseCounter.Experimental.MetricsReplayAtActivationDuration"
    units="ms" expires_after="2024-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of
    UseCounterPageLoadMetricsObserver::DidActivatePrerenderedPage.

    Recorded iff the page is prerendered and activated. When a page is
    prerendered, metrics &quot;Blink.UseCounter.*&quot; are buffered into
    memory. When a page is activated then, buffered metrics are flushed and
    recorded. This metric records the duration of this flush, in case of this
    cause a performance degradation.

    Warning: this histogram was expired from 2023-03-16 to 2023-03-2 9and also
    between 2023-09-03 and M121; data may be missing.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.Zstd.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time in milliseconds from navigation timing's navigation start
    to the time when the page first paints content, for page loads that can use
    zstd. A contentful paint includes a paint of text, image, SVG, or canvas.
    Only recorded for navigations that start in the foreground and stay in the
    foreground until the first contentful paint.
  </summary>
</histogram>

<histogram
    name="PageLoad.Clients.Zstd.PaintTiming.NavigationToLargestContentfulPaint"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time in milliseconds from navigation timing's navigation start
    to the time when the page first paints the experimental largest content
    (text or image) within viewport, for page loads that can use zstd. See
    https://github.com/w3c/largest-contentful-paint for more details. Differs
    from SubFrame.PaintTiming.NavigationToLargestContentfulPaint in that removed
    content is still considered a valid candidate. Only recorded for navigations
    that happen entirely in the foreground. The metric is emitted when the
    navigation is completed or the app is backgrounded on Android.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.Zstd.ParseTiming.NavigationToParseStart"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    parser started, for page loads that can use zstd. Only recorded for
    navigations that start in the foreground and stay in the foreground until
    parse start. This metric is emitted when the parser starts for a navigation.
  </summary>
</histogram>

<histogram name="PageLoad.Clients.{Origin}.{MetricName}" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>{MetricName}, but recorded only for {Origin} navigations.</summary>
  <token key="Origin">
    <variant name="CrossOrigin" summary="cross-origin"/>
    <variant name="SameOrigin" summary="same-origin"/>
  </token>
  <token key="MetricName">
    <variant name="FirstContentfulPaint"
        summary="PageLoad.PaintTiming.NavigationToFirstContentfulPaint"/>
    <variant name="InteractiveTiming.FirstInputDelay"
        summary="PageLoad.InteractiveTiming.FirstInputDelay4"/>
    <variant name="LargestContentfulPaint"
        summary="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2"/>
    <variant name="LayoutInstability.CumulativeShiftScore"
        summary="PageLoad.LayoutInstability.CumulativeShiftScore"/>
    <variant name="LayoutInstability.CumulativeShiftScore.MainFrame"
        summary="PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame"/>
  </token>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.AbandonReasonAt.{NavigationMilestone}{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    enum="NavigationAbandonReasonEnum" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Logs the navigation abandonment reason that happens when the last milestone
    is {NavigationMilestone} on a main frame navigation for {ObservedNavigation}
    with {RTTBucketSuffix} connection, with potentially some suffixes detaling
    the navigation {BackgroundSuffix}, {HiddenSuffix}, and/or {NonSRPSuffix}.

    The metric is emitted when the navigation gets abandoned.
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NavigationMilestone" variants="NavigationMilestone"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.LastMilestoneBeforeAbandon{NavigationAbandonReason}{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    enum="NavigationMilestoneEnum2" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Logs the last navigation milestone reason that was reached when a main frame
    navigation for {ObservedNavigation} is abandoned due to
    {NavigationAbandonReason}, with potentially some suffixes detaling the
    navigation {BackgroundSuffix}, {HiddenSuffix}, and/or {NonSRPSuffix}. The
    metric is emitted when the navigation gets abandoned.
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NavigationAbandonReason" variants="NavigationAbandonReason"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.NavigationStartToRendererProcessInit{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    units="ms" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to the navigation start that the final renderer process is
    created for a main frame navigation for {ObservedNavigation} with
    potentially some suffixes detaling the navigation {BackgroundSuffix},
    {HiddenSuffix}, {NonSRPSuffix}, and {RTTBucketSuffix}. The metric is emitted
    when the navigation's commit IPC is just sent out, if the renderer process
    is created after the navigation started.
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.NavigationStartTo{NavigationMilestone}{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that a navigation reaches the the
    milestone {NavigationMilestone} on a main frame navigation for
    {ObservedNavigation}, with potentially some suffixes detaling the navigation
    {BackgroundSuffix}, {HiddenSuffix}, and/or {NonSRPSuffix}. Only recorded for
    Search navigations that didn't get terminally abandoned at least until the
    relevant milestone. Note that abandonment from backgrounding or hiding are
    non-terminal, so milestones after those types of abandonments will still be
    logged. The metric is emitted when the navigation finishes committing or it
    gets abandoned (which can happen multiple times during the navigation if
    non-terminal, so only the milestones that haven't been logged will be
    logged).
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NavigationMilestone" variants="NavigationMilestone"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.NavigationStart{NonSRPSuffix}{RTTBucketSuffix}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that a navigation takes to emit this
    metric, on a main frame navigation for {ObservedNavigation}. The metric is
    emitted when the navigation finishes committing or it gets abandoned for the
    first time.
  </summary>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.RendererProcessCreatedBeforeNav{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    enum="Boolean" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the renderer process for the navigation is already created before
    the navigation start or not, for a main frame navigation for
    {ObservedNavigation} with potentially some suffixes detaling the navigation
    {BackgroundSuffix}, {HiddenSuffix}, {NonSRPSuffix}, and {RTTBucketSuffix}.
    The metric is emitted when the navigation's commit IPC is just sent out.
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.TimeToAbandonFromNavigationStart.{NavigationMilestone}{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    units="ms" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The Duration from the navigation start time to the time that a navigation
    gets abandoned after the milestone {NavigationMilestone} on a main frame
    navigation for {ObservedNavigation} with {RTTBucketSuffix} connection. Only
    the abandonments due to backgrounding and hiding are non-terminal, and other
    abandonments are terminal. This means this metric might be recorded multiple
    times if the navigation is only abandoned non-terminally before, but only
    once for each abandonment reason. &quot;This is logged after non-terminal
    abandonment of pages which were {BackgroundSuffix} and {HiddenSuffix}&quot;
    {NonSRPSuffix} is added if the navigation involves a non-SRP URL but then
    redirected to SRP URL. The milestone recorded will be the latest milestone
    (if there are multiple milestones reached before the abandonment). The
    metric is emitted when the navigation gets abandoned.
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NavigationMilestone" variants="NavigationMilestone"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram
    name="PageLoad.Clients{ObservedNavigation}.Leakage2.{NavigationMilestone}ToAbandon{NavigationAbandonReason}{BackgroundSuffix}{HiddenSuffix}{NonSRPSuffix}{RTTBucketSuffix}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to the milestone {NavigationMilestone} that a navigation
    gets abandoned due to {NavigationAbandonReason}, on a main frame navigation
    for {ObservedNavigation}. Abandonment from backgrounding or hiding are
    non-terminal, while other abandonment for other reasons are terminal. This
    means this metric might be recorded multiple times if the navigation is only
    abandoned non-terminally before, but only once for each abandonment reason.
    Metrics logged after non-terminal abandonment will be marked with the
    suffixes {BackgroundSuffix} and/or {HiddenSuffix}, and if the navigation
    involves a non-SRP URL but then redirected to SRP URL, the logged metric
    will be marked with {NonSRPSuffix}. The milestone recorded will be the
    latest milestone (if there are multiple milestones reached before the
    abandonment). The metric is emitted when the navigation gets abandoned.
  </summary>
  <token key="BackgroundSuffix" variants="BackgroundSuffix"/>
  <token key="HiddenSuffix" variants="HiddenSuffix"/>
  <token key="NavigationAbandonReason" variants="NavigationAbandonReason"/>
  <token key="NavigationMilestone" variants="NavigationMilestone"/>
  <token key="NonSRPSuffix" variants="NonSRPSuffix"/>
  <token key="ObservedNavigation" variants="ObservedNavigation"/>
  <token key="RTTBucketSuffix" variants="RTTBucketSuffix"/>
</histogram>

<histogram base="true" name="PageLoad.Cpu" units="units"
    expires_after="2025-07-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Only recorded if the page has at least one identified ad frame. Recorded in
    PageLoadMetrics when the page is destroyed. Cpu measures the wall time of
    tasks attributable to a frame as reported by the MainThreadTaskScheduler as
    well as time spent servicing scripted animations by each document (not
    attributable by the MainThreadTaskScheduler). An ad frame consists of the
    identified ad frame and all of its children (which may also be ads, but are
    counted as part of the ancestor ad frame). Includes resources that did not
    finish loading. Does not consider time while a page is backgrounded.

    Warning: This metric expired around 04/2022 and was unexpired 07/2023. Data
    may be missing.
  </summary>
</histogram>

<histogram name="PageLoad.Cpu.TotalUsage" units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the page is destroyed or the app is backgrounded on mobile.
    Records the total wall time of tasks attributable to the page across its
    lifetime. Considers both the CPU usage while the page is in the foreground
    and in the background.
  </summary>
</histogram>

<histogram name="PageLoad.Cpu.TotalUsageForegrounded" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the page is destroyed or the app is backgrounded on mobile.
    Records the total wall time of tasks attributable to the page across its
    lifetime. Does not consider CPU usage while a page is backgrounded.
  </summary>
</histogram>

<histogram
    name="PageLoad.DocumentTiming.NavigationToDOMContentLoadedEventFired"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    DOMContentLoaded event is fired, for main frame documents.
  </summary>
</histogram>

<histogram name="PageLoad.DocumentTiming.NavigationToLoadEventFired" units="ms"
    expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    load event is fired, for main frame documents.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.ClickInputBurst" units="count"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The maximum size click input burst for the page load. A click input burst is
    a sequence of user click inputs at approximately the same screen position
    where the clicks each occur soon after the previous one (e.g., within half
    second). This is intended to detect possible rage clicks by the user.

    Note: stat collection stopped in August 2021, and resumes in February 2023.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.InputTiming.InputToNavigationStart"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between the OS-level input event that initiated a navigation, and
    the navigation actually starting.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.InputTiming.InputToNavigationStart.Background"
    units="ms" expires_after="2024-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between the OS-level input event that initiated a navigation, and
    the navigation actually starting, for background loads.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.InputTiming.InputToNavigationStart.FromLinkClick"
    units="ms" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between the OS-level click/tap event and navigation start, for
    clicks on links in the renderer.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.InputTiming.InputToNavigationStart.FromOmnibox"
    units="ms" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time between the OS-level keypress/tap event in the omnibox and
    navigation start, for navigations from the omnibox.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.Memory.Core.MainFrame.Max" units="KiB"
    expires_after="2024-11-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The maximum reported number of kilobytes of memory used by V8 by the main
    frame in this pageload.

    Only recorded if memory tracking is enabled. Recorded in PageLoadMetrics
    when the page is destroyed.

    Warning: This histogram has incomplete data. It expired in 03/2022 and was
    unexpired in 11/2023.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.Memory.Core.Subframe.Aggregate.Max"
    units="KiB" expires_after="2024-11-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The maximum reported aggregate number of kilobytes of memory used by V8 by
    subframes in this pageload. The value recorded is the maximum simultaneous
    usage by all subframes during this pageload, not including the main frame.

    Only recorded if memory tracking is enabled. Recorded in PageLoadMetrics
    when the page is destroyed.

    Warning: This histogram has incomplete data. It expired in 03/2022 and was
    unexpired in 11/2023.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.Memory.Core.Total.Max" units="KiB"
    expires_after="2024-11-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The maximum reported aggregate number of kilobytes of memory used by V8 by
    all frames in this pageload. The value recorded is the maximum simultaneous
    usage by all frames during this pageload, including the main frame.

    Only recorded if memory tracking is enabled. Recorded in PageLoadMetrics
    when the page is destroyed.

    Warning: This histogram has incomplete data. It expired in 03/2022 and was
    unexpired in 11/2023.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.FinalLoaderCallbackToNavigationCommitSent"
    units="ms" expires_after="2021-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The interval between when a callback for the navigation loader is last
    invoked and when navigation commit message is sent to a renderer process for
    the main resource of a main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.FinalRequestStartToFinalResponseStart"
    units="ms" expires_after="2021-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The interval between when the final HTTP request is sent and when the
    headers of the final HTTP response is received for the main resource of a
    main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.FinalResponseStartToFinalLoaderCallback"
    units="ms" expires_after="2021-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The interval between when the headers of the final HTTP response is received
    and when a callback for the navigation loader is last invoked for the main
    resource of a main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.FirstRequestStartToFirstResponseStart"
    units="ms" expires_after="2021-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The interval between when the first HTTP request is sent and when the
    headers of the first HTTP response is received for the main resource of a
    main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.FirstResponseStartToFirstLoaderCallback"
    units="ms" expires_after="2021-08-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The interval between when the headers of the first HTTP response is received
    and when a callback for the navigation loader is first invoked for the main
    resource of a main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToFinalLoaderCallback"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that a callback for the navigation
    loader is last invoked for the main resource of a main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToFinalRequestStart"
    units="ms" expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the final HTTP request is sent
    for the main resource of a main frame navigation.

    This metric has incomplete data. It was expired between 2023-03-12 and M121.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToFinalResponseStart"
    units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the headers of the final HTTP
    response is received for the main resource of a main frame navigation.

    This metric has incomplete data. It was expired between 2022-12-18 and M121.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToFirstLoaderCallback"
    units="ms" expires_after="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that a callback for the navigation
    loader is first invoked for the main resource of a main frame navigation.

    This metric has incomplete data. It was expired between 2023-07-09 and M121.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToFirstRequestStart"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the first HTTP request is sent
    for the main resource of a main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToFirstResponseStart"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that the headers of the first HTTP
    response is received for the main resource of a main frame navigation.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.NavigationTiming.NavigationStartToNavigationCommitSent"
    units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time relative to navigation start that navigation commit message for a
    main frame navigation is sent to a renderer process.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.PageTiming.CachedResourceLoadTime.{RequestDestination}"
    units="ms" expires_after="2024-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from load start to when headers have been received for
    resource requests which come from the cache. Logged for every
    {RequestDestination} resource request from the cache.

    This metric has incomplete data. It was expired between 2023-08-07 and M121.
  </summary>
  <token key="RequestDestination" variants="RequestDestination"/>
</histogram>

<histogram
    name="PageLoad.Experimental.PageTiming.CommitSentToFirstSubresourceLoadStart"
    units="ms" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from when the navigation commit was sent to the renderer
    to the first subresource load start. Logged for every page load which has
    subresources.

    This metric has incomplete data. It was expired between 2023-02-12 and M121.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.PageTiming.NavigationToFirstSubresourceLoadStart"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation start to the first subresource load start.
    Logged for every page load which has subresources.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.PageTiming.ResourceLoadTime.{RequestDestination}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from load start to when headers have been received for
    resource requests which do not come from the cache. Logged for every
    {RequestDestination} resource request which is not from the cache.
  </summary>
  <token key="RequestDestination" variants="RequestDestination"/>
</histogram>

<histogram
    name="PageLoad.Experimental.PageTiming.TotalSubresourceLoadTimeAtFirstContentfulPaint"
    units="ms" expires_after="2024-05-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the aggregate time of subresource requests (from start to when
    headers have been received) which have been completed before the first
    contentful paint. Logged for every page load.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.PageVisitFinalStatus"
    enum="PageVisitFinalStatus" expires_after="2024-12-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Determines the final status for this page load. That is, records whether the
    page was never foregrounded, was foregrounded but did not reach FCP, or did
    reach FCP. The metric is recorded at the end of each page load. As usual
    with PageLoad metrics, we consider app backgrounding on Android to be the
    end of page load as well as the app could be evicted by Android anytime
    after that happens.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.PageVisitType2" enum="PageVisitType"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The page visit type that represents if the page follows a link navigation,
    and the page is followed by another link navigation. This metrics is
    recorded when the page is destructed.
  </summary>
</histogram>

<histogram
    name="PageLoad.Experimental.PaintTiming.FirstEligibleToPaintToFirstPaint"
    units="ms" expires_after="2024-07-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from when the page is first eligible to paint to when the
    first paint occurs. Logged for every foreground page load.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.PaintTiming.InputToFirstContentfulPaint"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <summary>
    The time between the OS-level input event that initiated a navigation, and
    the first contentful paint of the page that was loaded in the navigation.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.PreviewFinalStatus"
    enum="PreviewFinalStatus" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/preloading/preview/OWNERS</owner>
  <summary>
    This metric records the previewed page final status on each page
    destruction, or on a potential last timing to run before the destruction.
    This will be a hint to understand how the previewed page is used or was
    useful for users.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.SoftNavigations.Count"
    units="Soft navigations" expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of soft navigations detected during a page load. Recorded
    by the SoftNavigationPageLoadMetricsObserver each time the page enters the
    back/forward cache, and also when the page is destroyed, with the number of
    soft navigatons observed since the last recording.
  </summary>
</histogram>

<histogram name="PageLoad.Experimental.TotalForegroundDuration{PageVisitType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total amount of time the page spent in the foreground on
    {PageVisitType}.

    Note that this metric adds all foreground durations occurring for the page.
    For example: if the page starts foregrounded during 1 second, then goes to
    the background for a while, then is foregrounded again for 2 seconds, and
    then is unloaded, this metric reports 3 seconds. The metric is recorded at
    the end of each page load. As usual with PageLoad metrics, we consider app
    backgrounding on Android to be the end of page load as well as the app could
    be evicted by Android anytime after that happens.

    See also PageLoad.Experimental.PageVisitType for each page visit type
    definition.
  </summary>
  <token key="PageVisitType">
    <variant name=""
        summary="all page visits, recorded in UkmPageLoadMetricsObserver"/>
    <variant name=".AllVisit"
        summary="all page visits, recorded in PreviewPageLoadMetricsObserver"/>
    <variant name=".HistoryVisit" summary="history page visits"/>
    <variant name=".IndependentLinkVisit"
        summary="independent page visits in a new tab"/>
    <variant name=".IndependentUIVisit"
        summary="independent page visits from UI"/>
    <variant name=".OriginLinkVisit" summary="origin page visits in a new tab"/>
    <variant name=".OriginUIVisit" summary="origin page visits from UI"/>
    <variant name=".PassingVisit" summary="passing page visits"/>
    <variant name=".TerminalVisit" summary="terminal page visits"/>
  </token>
</histogram>

<histogram name="PageLoad.FrameCounts.AdFrames.PerFrame.CreativeOriginStatus"
    enum="CrossOriginCreativeStatus" expires_after="2021-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For each identified ad frame, whether the origin of the ad creative frame
    matches or differs from the origin of the main frame.

    The ad creative frame is heuristically determined, from among an identified
    ad frame and all of its children, as the first of these frames to record a
    First Contentful Paint. If no FCP is recorded, the creative origin status is
    marked as indeterminate.
  </summary>
</histogram>

<histogram
    name="PageLoad.FrameCounts.AdFrames.PerFrame.CreativeOriginStatusWithThrottling"
    enum="CrossOriginCreativeStatusWithThrottling" expires_after="2021-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For each identified ad frame, whether the origin of the ad creative frame
    matches or differs from the origin of the main frame, further split by
    whether the frame has lifecycle updates throttled. Metric is emitted on
    frame deletion.

    The ad creative frame is heuristically determined, from among an identified
    ad frame and all of its children, as the first of these frames to record a
    First Contentful Paint. If no FCP is recorded, the creative origin status is
    marked as indeterminate. Frames that are render-throttled will not have an
    FCP. Ad frames with indeterminate creative origin status are broken out as
    throttled or not.
  </summary>
</histogram>

<histogram name="PageLoad.FrameCounts.AdFrames.PerFrame.OriginStatus"
    enum="CrossOriginAdStatus" expires_after="2025-07-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For each identified ad frame, whether the origin of the ad matches the
    origin of the main frame, differs from the origin of the main frame, or is
    indeterminable.

    An ad frame consists of the identified ad frame and all of its children
    (which may also be ads, but are counted as part of the ancestor ad frame).
    Frames of zero bytes (e.g., never had a document or their document was
    doc.written and no sub-resources were loaded) are not counted.

    Warning: This metric expired around 04/2022 and unexpired 07/2023. Data may
    be missing.
  </summary>
</histogram>

<histogram name="PageLoad.FrameCounts.AdFrames.PerFrame.UserActivation"
    enum="AdUserActivationStatus" expires_after="2024-04-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For each identified ad frame, whether the sticky user activation bit was
    ever set on the frame. Recorded for each ad frame when the page is destroyed
    or navigated away from, including ad frames that no longer exist.

    An ad frame consists of the identified ad frame and all of its children
    (which may also be ads, but are counted as part of the ancestor ad frame).
    Frames of zero bytes (e.g., never had a document or their document was
    doc.written and no sub-resources were loaded) are not counted.
  </summary>
</histogram>

<histogram name="PageLoad.FrameCounts.AdFrames.Total" units="Ad frames"
    expires_after="2025-04-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of frames on the page that have loaded more than 0 bytes of
    content or had non-zero CPU usage.

    For pages with zero ad frames, the other PageLoad.Clients.Ads metrics are
    not recorded unless otherwise specified. This metric is not recorded on
    sites where the subresource filter is enabled.

    Child frames of an ad frame are not included in the count.
  </summary>
</histogram>

<histogram base="true" name="PageLoad.HeavyAds.ComputedTypeWithThresholdNoise"
    enum="HeavyAdStatus2" expires_after="2024-04-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records heavy ad type for each ad frame, as determined by the first
    threshold hit (see FrameData::HeavyadStatus). This is recorded regardless of
    feature flag or other conditions that prevent the heavy ad intervention from
    occuring. This includes 1 megabyte of random additive noise on the network
    threshold. As such, it is possible for this histogram to record different
    values for the same frame than PageLoad.HeavyAds.ComputedType2.

    Recored for all ad frames with non-zero bytes. Recorded when the ad frame
    destroyed or when the page is destroyed.

    It is possible for multiple thresholds to be hit at the same time, with the
    higher valued enums winning those race conditions.
  </summary>
</histogram>

<histogram base="true" name="PageLoad.HeavyAds.InterventionType2"
    enum="HeavyAdStatus2" expires_after="2024-04-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of heavy ad unloaded by the heavy ad intervention. Heavy ad
    type is determined by the first threshold hit. This is not recorded for ad
    frames that are considered heavy but did not fufill other criteria for the
    intervention. This includes the feature being enabled and being below the
    per-origin intervention cap.

    It is possible for multiple thresholds to be hit at the same time, with the
    higher valued enums winning those race conditions.
  </summary>
</histogram>

<histogram
    name="PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore"
    units="ms" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per back-forward navigation. Recorded on first page interaction after
    the page is restored from the back-forward cache. See https://goo.gl/tr1oTZ
    for a detailed explanation. Excludes scrolls.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.InteractiveTiming.FirstInputDelay4. These two histograms will be
    aggregated on the server to form the authoritative metric.
  </summary>
</histogram>

<histogram
    name="PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore_iOSFixed"
    units="ms" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    iOS only. This is the same as
    PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore, but
    uses the same bucketing on iOS as non-iOS platforms use in that metric.

    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per back-forward navigation. Recorded on first page interaction after
    the page is restored from the back-forward cache. See https://goo.gl/tr1oTZ
    for a detailed explanation. Excludes scrolls.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.InteractiveTiming.FirstInputDelay4_iOSFixed. These two histograms
    will be aggregated on the server to form the authoritative metric.
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.FirstInputDelay4" units="ms"
    expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per navigation. Recorded on first page interaction. See
    https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore.
    These two histograms will be aggregated on the server to form the
    authoritative metric.

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.FirstInputDelay4_iOSFixed"
    units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    iOS only. This is the same as PageLoad.InteractiveTiming.FirstInputDelay4,
    but uses the same bucketing on iOS as non-iOS platforms use in that metric.

    Measures First Input Delay, the duration between the hardware timestamp and
    the start of event processing on the main thread for the first meaningful
    input per navigation. Recorded on first page interaction. See
    https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.InteractiveTiming.FirstInputDelay.AfterBackForwardCacheRestore_iOSFixed.
    These two histograms will be aggregated on the server to form the
    authoritative metric.

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.FirstInputTimestamp4" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration between navigation start and the hardware timestamp of the
    first meaningful input per navigation. Recorded on first page interaction.
    See https://goo.gl/tr1oTZ for a detailed explanation. Excludes scrolls.
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.INPOffset" units="offset"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The one-based offset of the interction that is the INP
    (https://web.dev/inp).
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.INPTime" units="ms"
    expires_after="2024-11-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time, relative to navigation start, of the interction that is the INP
    (https://web.dev/inp).
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.InputDelay3" units="ms"
    expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration between the hardware timestamp and the start of event
    processing on the main thread for a meaningful input. Excludes scrolls.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    WARNING: The long tail of this metric is buggy on Mac (overflows for a
    subset of users) which can lead to surprising false regressions or
    improvements.
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.InputTimestamp3" units="ms"
    expires_after="never">
<!-- expires-never: diagnostic to InputDelay3 guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration between navigation start and the hardware timestamp of a
    meaningful input. Excludes scrolls.
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.NumInteractions{PageLoadType}"
    units="Count" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of user interactions in a {PageLoadType} page load. Definition of
    interaction:
    https://web.dev/better-responsiveness-metric/#group-events-into-interactions
  </summary>
  <token key="PageLoadType" variants="PageLoadType"/>
</histogram>

<histogram name="PageLoad.InteractiveTiming.ProcessingTime" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration between the start of event processing and the end of event
    processing on the main thread for a meaningful input. Excludes scrolls.

    This metric is recorded when users interact with the page, which may trigger
    input events such as pointerdown, keydown, click and mousedown.
  </summary>
</histogram>

<histogram name="PageLoad.InteractiveTiming.TimeToNextPaint" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration between the end of event processing and the time when the first
    paint was performed on the main thread for a meaningful input. Excludes
    scrolls.

    This metric is recorded when users interact with the page, which may trigger
    input events such as pointerdown, keydown, click and mousedown.
  </summary>
</histogram>

<histogram
    name="PageLoad.InteractiveTiming.{NormalizedResponsivenessMetric}.{UserInteractionLatency}{PageLoadType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The {NormalizedResponsivenessMetric} of a {PageLoadType} page load, in ms.
    For this metric, we measure the latency of a user interaction by the
    {UserInteractionLatency} within the user interaction.

    Recorded at the end of the page load lifetime, such as when users navigate
    to a new web page, except
    UserInteractionLatencyAtFirstOnHidden.HighPercentile2, which is recorded
    when a page is moved from the foreground to the background for the first
    time. UserInteractionLatencyAtFirstOnHidden.HighPercentile2 is trying to
    record the INP values which are not able to be recorded in
    UserInteractionLatency.HighPercentile2 for some reasons.
  </summary>
  <token key="PageLoadType" variants="PageLoadType"/>
  <token key="NormalizedResponsivenessMetric">
    <variant name="UserInteractionLatency.HighPercentile2"/>
    <variant name="UserInteractionLatencyAtFirstOnHidden.HighPercentile2"/>
    <variant name="WorstUserInteractionLatency"/>
  </token>
  <token key="UserInteractionLatency">
    <variant name="MaxEventDuration"/>
  </token>
</histogram>

<histogram name="PageLoad.Internal.ErrorCode" enum="InternalErrorLoadEvent"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts of various internal error conditions in the page_load_metrics system.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.EventTiming.ClickInteractionEvents"
    enum="EventTimingClickInteractionEvents" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records eight properties of click events in Event Timing. They are: total
    number of clicks, number of clicks that are triggered by a keyboard
    interaction, number of pointer clicks (that are triggered by a pointer
    device) that are accompanied by both pointerdown and pointerup, number of
    pointer clicks that only have their pointerdown missing, number of pointer
    clicks that only have their pointerup missing, number of pointer clicks that
    have both their pointerdown and pointerup missing, number of clicks that
    have a pointer_id different from last_pointer_id but exist in the map,
    number of clicks that have a pointer_id different from last_pointer_id and
    also not exist in the map. This is recorded at most three times for each JS
    trusted Click event dispatch. Once for total number of clicks; potentially
    once if the pointer_id of the click is different from last_pointer_id; and
    potentially once for all other types.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.PageLoadTimingStatus{Condition}"
    enum="PageLoadTimingStatus" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/components/page_load_metrics/OWNERS</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    The status of validity check of PageLoadTiming structs received from the
    render process over IPC. Recorded when timing information is {Condition}.
    Warning: this histogram was expired from 2021-01-31 to 2023-01-13; data may
    be missing.
  </summary>
  <token key="Condition">
    <variant name="" summary="received on any page load"/>
    <variant name=".AtTimingCallbackDispatch"
        summary="dispatched on any page load"/>
    <variant name=".OnFencedFramesPage"
        summary="received on fenced frames pages"/>
    <variant name=".OnPrerenderPage" summary="received on prerender pages"/>
  </token>
</histogram>

<histogram name="PageLoad.Internal.PageType" enum="PageLoadTrackerPageType"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This records the Page type that each PageLoadTracker tracks. This metric is
    recorded when a PageLoadTracker is created for a Page.
  </summary>
</histogram>

<histogram
    name="PageLoad.Internal.PaintTiming.LargestContentfulPaint.ContentType"
    enum="LargestContentType" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures whether the largest contentful paint, whose timestamp is measured
    by PageLoad.PaintTiming.NavigationToLargestContentfulPaint2, comes from text
    or image. This value is recorded whenever
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 is recorded.
  </summary>
</histogram>

<histogram
    name="PageLoad.Internal.PaintTiming.LargestContentfulPaint.MainFrame.ContentType"
    enum="LargestContentType" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures whether the largest contentful paint in the main frame, whose
    timestamp is measured by
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.MainFrame, comes
    from text or image. This value is recorded whenever
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.MainFrame is
    recorded.
  </summary>
</histogram>

<histogram
    name="PageLoad.Internal.PaintTiming.NavigationToFirstContentfulPaint.InitiatingProcess"
    enum="ProcessType2" expires_after="2020-09-05">
  <owner>[email protected]</owner>
  <summary>
    Breakdown of NavigationToFirstContentfulPaint counts by process that
    initiated the navigation (this will only be renderer or browser).
  </summary>
</histogram>

<histogram
    name="PageLoad.Internal.Prerender2.ActivatedPageLoaderStatus{PreloadingTriggerType}"
    enum="NetErrorCodes" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records error codes for loading of a main resource of a main frame which
    belongs to a prerendered and then activated page when the page received
    loading completion event for the resource.

    This metric is used to monitor whether preload cache intercepting logic
    causes extra page loading errors.
  </summary>
  <token key="PreloadingTriggerType" variants="PagePreloadingTriggerType"/>
</histogram>

<histogram name="PageLoad.Internal.Prerender2.Event"
    enum="PageLoadPrerenderEvent" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    Counts page load events related to Prerender2, like navigation in
    prerendered main frame and prerendering activation navigation. Recorded when
    those events are observed in PageLoadTracker.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.Prerender2.ObserverEvent"
    enum="PageLoadPrerenderObserverEvent" expires_after="2024-09-15">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    Counts page load observer events related to Prerender2, like
    FirstContentfulPaint. Recorded when those events are observed in
    PrerenderPageLoaderMetricsObserver.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.Prerender2.VisibilityAtActivation"
    enum="PageLoadPrerenderVisibilityAtActivation" expires_after="2024-02-04">
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    Records the visibility of an initiator page in PageLoadTracker when a
    prerendered page gets activated.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.SoftNavigationOutcome"
    enum="SoftNavigationOutcome" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the outcome of the soft navigation heuristics when the page's URL is
    changed through the history API. This is recorded at most once for each URL
    change. If the URL change was not attributable to a user intertaction, that
    is recorded immediately. If a soft navigation is detected, then it is
    recorded as soon as we detect it (when all conditions are satisfied).
    Otherwise, to be sure that all tasks associated with the user interaction
    have completed, we wait until all TaskAttributionInfo objects created within
    the SoftNavigationHeuristics::EventScope are garbage-collected, and then
    record which of the conditions was not satisfied.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.SuppressedEventsBeforeMissingFirstPaint"
    enum="Boolean" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if the first paint signal is not received within 15sec of first
    event dispatch. A &quot;true&quot; value here is expected to be rare.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.SuppressedEventsCountBeforePaint3"
    units="count" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of events observed before the first paint.

    This metric is emitted for every committed page load, either at the first
    meaningful paint or 15sec after first event dispatch, whichever comes first
    (before M127, the second condition here was &quot;15sec after
    navigation&quot;). When the DropInputEventsBeforeFirstPaint feature is
    enabled, these events will be dropped as the user may not have seen the
    content they are interacting with yet. Since there is a delay from the first
    paint presentation to when the notification about it is received, the user
    may have actually seen the first paint for some of these events. If many
    events are being dropped, we may need to revisit this experiment or improve
    the measurement to only those after the first paint.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.SuppressedEventsTimingBeforePaint3"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records time difference between first paint and last event to be dropped by
    DropInputEventsBeforeFirstPaint feature in a page that has received the
    first paint signal. If the signal is not received within 15sec of
    navigation, it records the constant &quot;15sec&quot; instead.

    This metric is emitted for every committed page load, either at the first
    meaningful paint or 15sec after first event dispatch, whichever comes first
    (before M127, the second condition here was &quot;15sec after
    navigation&quot;). When the DropInputEventsBeforeFirstPaint feature is
    enabled, these events will be dropped as the user may not have seen the
    content they are interacting with yet. Since there is a delay from the first
    paint presentation to when the notification about it is received, the user
    may have actually seen the first paint for some of these events. If this
    time difference is long enough to affect user experience, we may need to
    revisit this experiment. We are logging 0 timestamp if there is no
    suppressed event or the most recent suppressed event is before the first
    paint time so that we have a count of the number of times the behavior was
    good to compare the size of the bad cases to.
  </summary>
</histogram>

<histogram name="PageLoad.Internal.SuppressedInteractionsCountBeforePaint3"
    units="count" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of user-interactions observed before the first paint. The
    following low-level events are counted for this purpose because they mark
    the start of a user-interaction: MouseDown, RawKeyDown, KeyDown, TouchStart
    and PointerDown.

    This metric is emitted for every committed page load, either at the first
    meaningful paint or 15sec after first event dispatch, whichever comes first
    (before M127, the second condition here was &quot;15sec after
    navigation&quot;). When the DropInputEventsBeforeFirstPaint feature is
    enabled, these interactions will be dropped as the user may not have seen
    the content they are interacting with yet. Since there is a delay from the
    first paint presentation to when the notification about it is received, the
    user may have actually seen the first paint for some of these interactions.
    If it turns out that many interactions would be dropped, we will need to
    revisit our plan.
  </summary>
</histogram>

<histogram name="PageLoad.LayoutInstability.CumulativeShiftScore"
    units="scorex10" expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has
    occurred on the page (including all subframes). Higher values correspond to
    greater instability, which is bad. Recorded at the end of the page lifetime,
    such as when the page is being navigated away from or when a tab is being
    closed. Stable since M79; previous versions are expermental and subject to
    fluctuation between releases.

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.LayoutInstability.CumulativeShiftScore.AfterBackForwardCacheRestore.
    These two histograms will be aggregated on the server to form the
    authoritative metric.

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
</histogram>

<histogram
    name="PageLoad.LayoutInstability.CumulativeShiftScore.AfterBackForwardCacheRestore"
    units="scorex10" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/3fQz29y) that has
    occurred on the page (including all subframes) after the page is restored
    from the back-forward cache. Recorded when the user navigates away or closes
    the page after the page was restored from back-forward cache.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.LayoutInstability.CumulativeShiftScore. These two histograms will
    be aggregated on the server to form the authoritative metric.
  </summary>
</histogram>

<histogram name="PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame"
    units="scorex10" expires_after="2022-10-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has
    occurred in the main frame. Recorded at the end of the page lifetime, such
    as when the page is being navigated away from or when a tab is being closed.
  </summary>
</histogram>

<histogram
    name="PageLoad.LayoutInstability.CumulativeShiftScore.MainFrame.AfterBackForwardCacheRestore"
    units="scorex10" expires_after="2022-01-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/3fQz29y) that has
    occurred in the main frame after the page is restored from the back-forward
    cache. Recorded when the user navigates away or closes the page after the
    page was restored from back-forward cache.
  </summary>
</histogram>

<histogram
    name="PageLoad.LayoutInstability.CumulativeShiftScoreAtFirstOnHidden"
    units="scorex10" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the cumulative layout shift score (bit.ly/lsm-explainer) that has
    occurred on the page (including all subframes) until the first time the page
    moves from the foreground to the background. It is recorded when the tab is
    first hidden after it is first shown in foreground. This metric is trying to
    record the layout shift values which are not able to be recorded in
    PageLoad.LayoutInstability.CumulativeShiftScore for some reasons.
  </summary>
</histogram>

<histogram
    name="PageLoad.LayoutInstability.MaxCumulativeShiftScore.AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms2"
    units="scorex10000" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in after back forward cache restore. The gap between two
    consecutive shifts in a window is not bigger than 1000ms and the maximum
    window size is 5000ms. This metric's integral value is 10000x the fractional
    cumulative layout shift score described in the explainer. If {Bfcache} is
    triggered, we record the metric when the user navigates away or closes the
    page after the page was restored from back-forward cache. Otherwise, we
    record it at the end of the page lifetime, such as when the page is being
    navigated away from or when a tab is being closed.

    Replaces
    PageLoad.LayoutInstability.MaxCumulativeShiftScore.AfterBackForwardCacheRestore.SessionWindow.Gap1000ms.Max5000ms
    and increases granularity in order to get more coverage for ~5% of values in
    the 0-0.1 range.
  </summary>
</histogram>

<histogram
    name="PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2"
    units="scorex10000" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in a Window. The gap between two consecutive shifts in a window is
    not bigger than 1000ms and the maximum window size is 5000ms. This metric's
    integral value is 10000x the fractional cumulative layout shift score
    described in the explainer. If {Bfcache} is triggered, we record the metric
    when the user navigates away or closes the page after the page was restored
    from back-forward cache. Otherwise, we record it at the end of the page
    lifetime, such as when the page is being navigated away from or when a tab
    is being closed.

    Replaces
    PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms
    and increases granularity to get coverage for ~25% of the values in the
    0-0.1 range.
  </summary>
</histogram>

<histogram
    name="PageLoad.LayoutInstability.MaxCumulativeShiftScoreAtFirstOnHidden.SessionWindow.Gap1000ms.Max5000ms"
    units="scorex10000" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred in a Window until the first time the page moves from the foreground
    to the background. The gap between two consecutive shifts in a window is not
    bigger than 1000ms and the maximum window size is 5000ms. This metric's
    integral value is 10000x the fractional cumulative layout shift score
    described in the explainer. It is recorded when the tab is first hidden
    after it is first shown in foreground. This metric is trying to record the
    layout shift values which are not able to be recorded in
    PageLoad.LayoutInstability.MaxCumulativeShiftScore.SessionWindow.Gap1000ms.Max5000ms2
    for some reasons.

    Replaced
    Experimental.LayoutInstability.MaxCumulativeShiftScoreAtFirstOnHidden.SessionWindow.Gap1000ms.Max5000ms
    and increases granularity to get coverage for ~25% of the values in the
    0-0.1 range.
  </summary>
</histogram>

<histogram name="PageLoad.PageTiming.ForegroundDuration" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For page loads that start in the foreground, measures the duration of time
    until one of the following events occurs: the load of the main resource
    fails, the page load is stopped, the tab hosting the page is closed, the
    render process hosting the page goes away, a new navigation which later
    commits is initiated in the same tab, or the tab hosting the page is
    backgrounded. This metric has a very long tail, for pages that spend a long
    period of time in the foreground. As such, use of the mean or tail values
    are not recommended.
  </summary>
</histogram>

<histogram
    name="PageLoad.PageTiming.ForegroundDuration.PageEndReason.ForwardBackNavigation.UserGesture"
    units="ms" expires_after="M81">
  <owner>[email protected]</owner>
  <summary>
    The time since navigation start before the user presses the back button on a
    page. Only measures page loads that remained in foreground and were created
    by user gesture inside the renderer (as opposed to browser UX gestures).
  </summary>
</histogram>

<histogram name="PageLoad.PageTiming.NavigationToFirstForeground" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    user first foregrounds an initially backgrounded tab. Only measures
    navigations that started in the background.
  </summary>
</histogram>

<histogram name="PageLoad.PaintTiming.ForegroundToFirstContentfulPaint"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from a background tab being switched to the foreground to
    the time the first contentful paint is performed, for main frame documents.
  </summary>
</histogram>

<histogram name="PageLoad.PaintTiming.NavigationToFirstContentfulPaint"
    units="ms" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    The time from navigation start to first &quot;contentful&quot; paint. This
    metric does not include all page loads. Specifically, it excludes:

    - Page loads which have not been in the foreground during the entire loading
    time. Use
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint.Background.HttpsOrDataOrFileScheme
    histogram if you want to include those.

    - Page loads for non http(s) schemes. Use
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint.{DataScheme,FileScheme}
    histograms for data for page loads for data:// and file:// schemes.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.PaintTiming.NavigationToFirstPaint.AfterBackForwardCacheRestore.
    These two histograms will be aggregated on the server to form the
    authoritative metric.

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToFirstContentfulPaint.Background.HttpsOrDataOrFileScheme"
    units="ms" expires_after="2025-02-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    The time from navigation start to first &quot;contentful&quot; paint, where
    the page was backgrounded at least once from navigation start to this event.

    Includes page loads with http, https, data and file schemes.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToFirstContentfulPaint.NonTabWebUI{WebUIName}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation start to first contentful paint. This is
    only recorded for non-tab webUI pages, such as side-panel content.
  </summary>
  <token key="WebUIName" variants="WebUIName"/>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToFirstContentfulPaint.{Scheme}"
    units="ms" expires_after="2025-02-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    The time from navigation start to first &quot;contentful&quot; paint for
    {Scheme}. This metric does not include all page loads. If you need all page
    loads for http, https, data and file schemes, add
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint.Background.HttpsOrDataOrFileScheme.

    Some popular WebView apps such as Gmail use data or file schemes to load
    their content, and having page load metrics for those apps would be useful
    for performance investigations.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].
  </summary>
  <token key="Scheme">
    <variant name="DataScheme"/>
    <variant name="FileScheme"/>
  </token>
</histogram>

<histogram name="PageLoad.PaintTiming.NavigationToFirstImagePaint" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    first image is painted, for main frame documents. For images that render
    progressively, this is recorded as soon as any image pixels have been drawn.
  </summary>
</histogram>

<histogram name="PageLoad.PaintTiming.NavigationToFirstPaint" units="ms"
    expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    first paint is performed, for main frame documents.

    Do not modify this metric in any way without contacting
    [email protected].
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToFirstPaint.AfterBackForwardCacheRestore"
    units="ms" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from back-forward navigation timing's navigation start to
    the time the first paint is performed, for main frame documents. Recorded
    only when the page is restored from back-forward cache.

    Do not modify this metric in any way without contacting
    [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint.
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToFirstPaint.BFCachePolyfill{Count}"
    units="ms" expires_after="never">
<!-- expires-never: used in server pipeline to derive additional metrics -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Meastures the time duration between the page restore from BFcache and the
    {Count} requestAnimationFrame time.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Bucketing for this histogram should be kept in sync with bucketing for
    PageLoad.PaintTiming.NavigationToFirstContentfulPaint. These two histograms
    will be aggregated on the server to form the authoritative metric.
  </summary>
  <token key="Count">
    <variant name="First"/>
    <variant name="Second"/>
    <variant name="Third"/>
  </token>
</histogram>

<histogram name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted, across all frames.
    Excludes any content painted after user input. Includes content that has
    been removed from the page. See web.dev/lcp for more details.

    The value is recorded at the end of each page load or the latest time when
    we can reliably record: when the page is navigated away, the browser is
    closed, or on Android when the browser is backgrounded.

    This metric does not include all page loads. Specifically, it excludes:

    - Page loads which have not been in the foreground during the entire loading
    time. Use
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.Background.HttpsOrDataOrFileScheme
    histogram if you want to include those.

    - Page loads for non http(s) schemes. Use
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.{DataScheme,FileScheme}
    histograms for data for page loads for data:// and file:// schemes.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.Background.HttpsOrDataOrFileScheme"
    units="ms" expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    The time from navigation start to first &quot;contentful&quot; paint, where
    the page was backgrounded at least once from navigation start to this event.

    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted, across all frames, where
    the page was backgrounded at least once from navigation start to this event.
    Excludes any content painted after user input. Includes content that has
    been removed from the page. See web.dev/lcp for more details.

    The value is recorded at the end of each page load or the latest time when
    we can reliably record: when the page is navigated away, the browser is
    closed, or on Android when the browser is backgrounded.

    Includes page loads with http, https, data and file schemes.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.CrossSiteSubFrame"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to PaintTiming.NavigationToLargestContentfulPaint2, this measures
    the time in milliseconds from navigation timing's navigation start to the
    time when the page first paints the largest content (text or image) in the
    cross-site subframe which is the top candidate of largest contentful paint.
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.MainFrame"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted, for main frame documents.
    See PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for more
    information.
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.NonTabWebUI{WebUIName}"
    units="ms" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted, for main frame documents
    of non-tab webUI pages, such as side-panel content. See
    PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for more
    information.
  </summary>
  <token key="WebUIName" variants="WebUIName"/>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.SetSpeculationRulesPrerender"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to PaintTiming.NavigationToLargestContentfulPaint2, this measures
    the time from navigation timing's navigation start to the time the largest
    content (text or image) is first painted only for pages using Speculation
    Rules API and calls Prerender2, across all frames. Excludes any content
    painted after user input. Includes content that has been removed from the
    page. See web.dev/lcp for more details.
  </summary>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2.{Scheme}"
    units="ms" expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted for {Scheme}, across all
    frames. Excludes any content painted after user input. Includes content that
    has been removed from the page. See web.dev/lcp for more details.

    The value is recorded at the end of each page load or the latest time when
    we can reliably record: when the page is navigated away, the browser is
    closed, or on Android when the browser is backgrounded.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
  <token key="Scheme">
    <variant name="DataScheme"/>
    <variant name="FileScheme"/>
  </token>
</histogram>

<histogram
    name="PageLoad.PaintTiming.NavigationToLargestContentfulPaint2AtFirstOnHidden"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    largest content (text or image) is first painted, across all frames.
    Recorded at the point when a page which has been opened in the foreground is
    moved to the background for the first time. Excludes any content painted
    after user input. Includes content that has been removed from the page. See
    web.dev/lcp for more details.

    This metric is trying to record the LCP values which are not able to be
    recorded in PageLoad.PaintTiming.NavigationToLargestContentfulPaint2 for
    some reasons.

    Do not modify this metric in any way without contacting
    [email protected] AND [email protected].

    Log of major changes: http://bit.ly/chrome-speed-metrics-changelog
  </summary>
</histogram>

<histogram name="PageLoad.PaintTiming.ParseStartToFirstContentfulPaint"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from when the HTML parser started, to when the page first
    paints content.
  </summary>
</histogram>

<histogram name="PageLoad.ParseTiming.NavigationToParseStart" units="ms"
    expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from navigation timing's navigation start to the time the
    parser started, for main frame documents.
  </summary>
</histogram>

<histogram name="PageLoad.ParseTiming.ParseBlockedOnScriptExecution" units="ms"
    expires_after="2024-11-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time that the HTML parser spent blocked on the execution of
    scripts, for main frame documents that finished parsing.

    This histogram has incomplete data. It expired on 2022-02-01 and was
    re-added on 2022-05-23.
  </summary>
</histogram>

<histogram
    name="PageLoad.ParseTiming.ParseBlockedOnScriptExecutionFromDocumentWrite"
    units="ms" expires_after="2024-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time that the HTML parser spent blocked on the execution of
    scripts inserted from document.write, for main frame documents that finished
    parsing.

    This histogram has incomplete data. It expired on 2022-02-01 and was
    re-added on 2022-05-23.
  </summary>
</histogram>

<histogram name="PageLoad.ParseTiming.ParseBlockedOnScriptLoad" units="ms"
    expires_after="2024-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time that the HTML parser spent blocked on the load of scripts,
    for main frame documents that finished parsing.
  </summary>
</histogram>

<histogram name="PageLoad.SoftNavigation.CumulativeLayoutShift" units="ms"
    expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the maximum cumulative layout shift (bit.ly/cls-explainer) that has
    occurred from the time when the soft navigation happens to the time when the
    next soft navigation happens or the page load ends in a session window. The
    gap between two consecutive shifts in a window is not bigger than 1000ms and
    the maximum window size is 5000ms. This metric's integral value is 100x the
    fractional cumulative layout shift score described in the explainer.
  </summary>
</histogram>

<histogram name="PageLoad.SoftNavigation.InteractionToNextPaint" units="ms"
    expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    An approximation of a high percentile of user interaction latency from the
    time when the soft navigation happens to the time when the next soft
    navigation happens or the page load end, in ms. For this metric, we measure
    the latency of user interactions as described here: https://web.dev/inp
  </summary>
</histogram>

<histogram name="PageLoad.SoftNavigation.LargestContentfulPaint" units="ms"
    expires_after="2025-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the LargestContentfulPaint in milliseconds from the start time of
    the soft navigation to the LCP time.
  </summary>
</histogram>

<histogram name="PageSerialization.MhtmlLoading.LoadResult"
    enum="MhtmlLoadResult" expires_after="2023-04-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Reports the result of an attempt to load an MHTML archive.</summary>
</histogram>

</histograms>

</histogram-configuration>