chromium/tools/metrics/histograms/metadata/navigation/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 Navigation 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="FrameTypes">
  <variant name="MainFrame"/>
  <variant name="Subframe"/>
</variants>

<variants name="NavigationMode">
  <variant name="" summary="both gesture nav mode and 3 button mode"/>
  <variant name=".3ButtonMode" summary="only 3-button mode"/>
  <variant name=".GestureMode" summary="only gesture nav mode"/>
</variants>

<variants name="NavigationStage">
  <variant name="Commit"/>
  <variant name="SwapRFH"/>
</variants>

<variants name="NavigationThrottleConditions">
  <variant name="" summary="any kinds of events"/>
  <variant name=".Request" summary="start or redirect request events"/>
</variants>

<variants name="NavigationThrottleEvents">
  <variant name="WillFailRequest"/>
  <variant name="WillProcessResponse"/>
  <variant name="WillRedirectRequest"/>
  <variant name="WillStartRequest"/>
</variants>

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

<variants name="PreloadingTriggerType">
  <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/page/histograms.xml:PagePreloadingTriggerType) -->

<variants name="RegularOrMHTMLType">
  <variant name="MHTML"/>
  <variant name="Regular"/>
</variants>

<variants name="SiteRelation">
  <variant name="CrossSite"/>
  <variant name="SameSite"/>
</variants>

<histogram name="BackForwardCache.AllSites.EvictedAfterDocumentRestoredReason"
    enum="BackForwardCacheEvictedAfterDocumentRestoredReason"
    expires_after="2024-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the page is evicted from the back-forward cache but
    after the document is restored. This happens when there is a race between
    eviction and restoring. This also records when the page is restored to
    calculate how often this eviction happens.

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram name="BackForwardCache.AllSites.HistoryNavigationOutcome"
    enum="BackForwardCacheHistoryNavigationOutcome" expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history, this records whether
    the page was restored from the BackForwardCache or not.

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.AllSites.HistoryNavigationOutcome.BlocklistedFeature"
    enum="WebSchedulerTrackedFeature" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history, this records what
    blocklisted features were used when the page was loaded and prevented this
    page from being stored in the back-forward cache. Multiple blocklisted
    features can be recorded for the same page.

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.AllSites.HistoryNavigationOutcome.BrowsingInstanceNotSwappedReason"
    enum="BackForwardCacheBrowsingInstanceNotSwappedReason"
    expires_after="2024-11-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history and the
    BackForwardCache wasn't used because of the other active WebContents objects
    in the BrowsingInstance, this records the reason why the browsing instance
    wasn't swapped.

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.AllSites.HistoryNavigationOutcome.DisabledForRenderFrameHostReason2"
    enum="BackForwardCacheDisabledForRenderFrameHostReason2"
    expires_after="2024-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For history navigations, records the reason passed to
    BackForwardCache::DisableForRenderFrameHost calls.

    The metric is recorded when a history navigation commits and emits a sample
    for each reason. Compare this with
    BackForwardCache.HistoryNavigationOutcome, which contains the total number
    of navigations which where not cached

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.AllSites.HistoryNavigationOutcome.NotRestoredReason"
    enum="BackForwardCacheNotRestoredReason" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history, record why it wasn't
    restored from the cache. The page might not have entered the back-forward in
    the first place based on the features used, or it might have been evicted
    while being in the cache.

    This is recorded for all websites regardless of whether back-forward cache
    is enabled or not.
  </summary>
</histogram>

<histogram name="BackForwardCache.EvictedAfterDocumentRestoredReason"
    enum="BackForwardCacheEvictedAfterDocumentRestoredReason"
    expires_after="2024-09-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason why the page is evicted from the back-forward cache but
    after the document is restored. This happens when there is a race between
    eviction and restoring. This also records when the page is restored to
    calculate how often this eviction happens.

    This is recorded when back-forward cache is enabled for this navigation
    (back-forward cache feature is enabled and the domain is in the scope of the
    experiment).
  </summary>
</histogram>

<histogram name="BackForwardCache.Eviction.Renderer"
    enum="BackForwardCacheRendererEvictionReason" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the reason of renderer-initiated back-forward cache eviction.
    Emitted when renderer evicts the page from back-forward cache.
  </summary>
</histogram>

<histogram name="BackForwardCache.Eviction.TimeUntilProcessKilled" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration between the last time when the entry goes to the
    back-forward cache and the time when the process is killed.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.Experimental.UnexpectedIPCMessagePostedToCachedFrame.MethodHash"
    enum="MojoInterfaceName" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Track number of times an unexpected IPC message is posted to frames in the
    renderer process while they are frozen in the back-forward cache. IPC tasks
    are denoted by md5 hash of the mojo bindings method name or message hash for
    legacy IPCs.

    Recorded when an IPC task is posted to frames that have already been stored
    in the back-forward cache, after a 15 second delay to account for completion
    of all freezing-related operations.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.Experimental.UnexpectedIPCMessagePostedToCachedFrame.TimeUntilIPCReceived"
    units="ms" expires_after="2024-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Duration between start of page being stored in the back-forward cache and
    when the unexpected IPC call is received by a frame while in the cache.

    Recorded when an IPC task is posted to frames that have already been stored
    in the back-forward cache, after a 15 second delay to account for completion
    of all freezing-related operations.
  </summary>
</histogram>

<histogram name="BackForwardCache.HistoryNavigationOutcome"
    enum="BackForwardCacheHistoryNavigationOutcome" expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history, this records whether
    the page was restored from the BackForwardCache or not.

    This is recorded when back-forward cache is enabled for this navigation
    (back-forward cache feature is enabled and the domain is in the scope of the
    experiment).
  </summary>
</histogram>

<histogram name="BackForwardCache.HistoryNavigationOutcome.BlocklistedFeature"
    enum="WebSchedulerTrackedFeature" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history, this records what
    blocklisted features were used when the page was loaded and prevented this
    page from being stored in the back-forward cache. Multiple blocklisted
    features can be recorded for the same page.

    This is recorded when back-forward cache is enabled for this navigation
    (back-forward cache feature is enabled and the domain is in the scope of the
    experiment).
  </summary>
</histogram>

<histogram
    name="BackForwardCache.HistoryNavigationOutcome.BrowsingInstanceNotSwappedReason"
    enum="BackForwardCacheBrowsingInstanceNotSwappedReason"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history and the
    BackForwardCache wasn't used because of the other active WebContents objects
    in the BrowsingInstance, this records the reason why the browsing instance
    wasn't swapped.

    This is recorded when back-forward cache is enabled for this navigation
    (back-forward cache feature is enabled and the domain is in the scope of the
    experiment).
  </summary>
</histogram>

<histogram
    name="BackForwardCache.HistoryNavigationOutcome.DisabledForRenderFrameHostReason2"
    enum="BackForwardCacheDisabledForRenderFrameHostReason2"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For history navigations, records the reason passed to
    BackForwardCache::DisableForRenderFrameHost calls.

    The metric is recorded when a history navigation commits and emits a sample
    for each reason. Compare this with
    BackForwardCache.HistoryNavigationOutcome, which contains the total number
    of navigations which where not cached

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.HistoryNavigationOutcome.DisallowActivationReason"
    enum="InactiveFrameDisallowActivationReason" expires_after="2024-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For history navigations, records the reason passed to
    RenderFrameHost::IsInactiveAndDisallowActivation calls.

    The metric is recorded when a history navigation commits and emits a sample
    for each reason. Compare this with
    BackForwardCache.HistoryNavigationOutcome, which contains the total number
    of navigations which where not cached

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.HistoryNavigationOutcome.NotRestoredDueToAccessibility.AXEventType"
    enum="AXEventType" expires_after="2022-10-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For history navigations, records the AX event type that caused
    RenderFrameHost::IsInactiveAndDisallowActivation calls. The value refers to
    AX enum in ui/accessibility/ax_enums.mojom.

    The metric is recorded when a history navigation commits and emits the
    breakdown of a specific bucket in HistoryNavigationOutcome.NotRestoredReason
    (AXEvent). Compare this with BackForwardCache.HistoryNavigationOutcome,
    which contains the total number of navigations which were not cached.

    This is recorded for all websites regardless whether back-forward cache is
    enabled or not.
  </summary>
</histogram>

<histogram name="BackForwardCache.HistoryNavigationOutcome.NotRestoredReason"
    enum="BackForwardCacheNotRestoredReason" expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history, record why it wasn't
    restored from the cache. The page might not have entered the back-forward in
    the first place based on the features used, or it might have been evicted
    while being in the cache.

    This is recorded when back-forward cache is enabled for this navigation
    (back-forward cache feature is enabled and the domain is in the scope of the
    experiment).
  </summary>
</histogram>

<histogram
    name="BackForwardCache.HistoryNavigationOutcome.RelatedActiveContents.Count2"
    units="count" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history and the
    BackForwardCache wasn't used because of other active WebContents objects in
    the BrowsingInstance, this records the number of other active pages/related
    active contents using the same BrowsingInstance.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.HistoryNavigationOutcome.RelatedActiveContents.IsPotentiallySyncAccessible2"
    enum="RelatedActiveContentsSyncAccessInfo" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When navigating back to a page in the session history and the
    BackForwardCache wasn't used because of other active WebContents objects in
    the BrowsingInstance, this Records whether the page was potentially
    synchronously accessible by other pages/related active contents using the
    same BrowsingInstance, at the time the page was navigated away from.
  </summary>
</histogram>

<histogram name="BackForwardCache.MainFrameHasPageshowListenersOnRestore"
    enum="BooleanPresent" expires_after="M82">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether a page restored from the back-forward cache has pageshow
    handlers installed in its main frame. Recorded when the renderer resumes
    page when restoring it from the back-forward cache.
  </summary>
</histogram>

<histogram name="BackForwardCache.PageWithForm.RestoreResult"
    enum="BackForwardCacheHistoryNavigationOutcome" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record for a page that has form attached is about to restored from the back
    forward cache, to understand the success rate for bfcaching a page that has
    form / input entry attached. This is recorded for page with form attached
    only.

    Recorded during a cross-page history navigation. If a page with form is
    restored from the cache, &quot;PageRestored&quot; will be recorded; if the
    page is not egligible to be restored due to any reason,
    &quot;PageNotRestored&quot; will be recorded.
  </summary>
</histogram>

<histogram name="BackForwardCache.PageWithForm.Storable"
    enum="BackForwardCachePageWithFormStorable" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record for a page that has form attached is egligible to be stored in back
    forwad cache, to understand the success rate for bfcaching a page that has
    form / input entry attached. This is recorded for page with form attached
    only.

    Recorded when a navigation is committed. If a page has form attached
    &quot;PageSeen&quot; will be recorded; if the page is egligible to be stored
    in the back forward cache, &quot;PageStored&quot; will be recorded.
  </summary>
</histogram>

<histogram name="BackForwardCache.ProcessReuse.{SiteRelation}" units="count"
    expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether a back/forward cached page shares the same process as the page that
    we're navigating to (i.e. whether the new active page reuses the process of
    the back/forward cached page).

    Recorded when navigating away from a page, after the navigation commits and
    we're about to put the previous page into the back/forward cache.
  </summary>
  <token key="SiteRelation" variants="SiteRelation"/>
</histogram>

<histogram name="BackForwardCache.Restore.NavigationToFirstPaint" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Duration between start of navigation restoring a document from back-forward
    cache and the first paint.

    This is recorded when a history navigation is served from back-forward cache
    but in a foreground tab.
  </summary>
</histogram>

<histogram
    name="BackForwardCache.UnexpectedRendererToBrowserMessage.InterfaceName"
    enum="MojoInterfaceName" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Hash (base::HashMetricName) of a mojo interface name.

    A sample is recorded for every message the browser receives from a renderer
    for a page that is in the back-forward cache. Logging can be disabled via
    the back-forward cache feature parameter
    &quot;message_handling_when_cached&quot;.

    Renderers should not be sending messages back to the browser for pages that
    are in the back-forward cache. Eventually we will be killing such renderers
    (as we could assume that it is misbehaving because it got compromised). But
    first we must make sure that we are not sending messages by mistake (i.e.
    bugs in the renderer).
  </summary>
</histogram>

<histogram name="LinkPreview.Experimental.ZoomUsage"
    enum="LinkPreviewZoomUsage" expires_after="2024-03-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether zoom was used for link preview.

    It is recorded when a preview window is (shown and) closed, regardless
    preview is activated or not.

    It will be used to determine we should implement persistency for zoom levels
    for preview.
  </summary>
</histogram>

<histogram name="Navigation.AnonymousIframeIsSandboxed" enum="Boolean"
    expires_after="2023-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record whether iframe with the anonymous attribute contains sandboxed
    document or not.
  </summary>
</histogram>

<histogram name="Navigation.AutomaticBeaconOutcome"
    enum="AutomaticBeaconOutcome" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record if a 'reserved.top_navigation' automatic beacon was sent out, or the
    reason for not sending the beacon if it was not sent out.
  </summary>
</histogram>

<histogram name="Navigation.BackForward.CacheFlags" enum="NavigationCacheEnum"
    expires_after="M85">
  <owner>[email protected]</owner>
  <summary>The cache flags set on back-forward navigations.</summary>
</histogram>

<histogram
    name="Navigation.BackForward.TimeFromOpenBackNavigationMenuToActivateItem"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time spent between the back navigation menu model's opening and the
    activation of a menu item. This is recorded when the back navigation menu
    model receives signal that indicates the item from the menu is activated.
    See `BackForwardMenuModel::MenuWillShow()` and
    `BackForwardMenuModel::ActivatedAt()` for more details.
  </summary>
</histogram>

<histogram
    name="Navigation.BackForward.TimeFromOpenBackNavigationMenuToCloseMenu"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time spent between the back navigation menu model's opening and the
    closing. There might or might not be a menu item activation in between. This
    is recorded when the back navigation menu model receives signal that
    indicates it will be closed. See `BackForwardMenuModel::MenuWillShow()` and
    `BackForwardMenuModel::MenuWillClose()` for details.
  </summary>
</histogram>

<histogram name="Navigation.BackForward.WasCached"
    enum="NavigationWasServedFromCache" expires_after="M85">
  <owner>[email protected]</owner>
  <summary>Whether the back-forward navigation was served from cache.</summary>
</histogram>

<histogram name="Navigation.BrowserInitiatedSessionHistoryCount"
    enum="HistoryNavType" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the different types of browser-initiated session history navigations.
    The counts are recorded when the respective NavigationRequests are first
    created, and before the requests are owned by their respective
    RenderFrameHost. The metric is recorded once per browser-initiated history
    navigation.
  </summary>
</histogram>

<histogram name="Navigation.BrowserMappedUrnUuidInIframeOrFencedFrame"
    enum="NavigationBrowserMappedUrnUuidInIframeOrFencedFrame"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For navigation requests with FLEDGE or SharedStorage generated urn:uuid,
    record whether it is rendered in a fenced frame or iframe. Recorded when
    navigation requests begin (i.e. during
    NavigationRequest::BeginNavigation()).
  </summary>
</histogram>

<histogram name="Navigation.CodeCacheTime.{CodeCacheType}" units="ms"
    expires_after="2023-06-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures how long it takes to fetch from the code cache. Logged every time
    the code cache is fetched for the navigation body or a resource.
  </summary>
  <token key="CodeCacheType">
    <variant name="MainFrame"/>
    <variant name="Resource"/>
    <variant name="Subframe"/>
  </token>
</histogram>

<histogram
    name="Navigation.CommitNavigationWithParams.Time.IsStandardLoadType.IsHTTPOrHTTPS"
    units="microseconds" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent processing RenderFrameImpl::CommitNavigationWithParams() in the
    renderer process. This is recorded on each WebFrameLoadType::kStandard
    navigation for http or https URLs.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Navigation.CommitRenderFrame" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderFrameImpl::CommitNavigation() to run.
    Recorded on every RenderFrameImpl::CommitNavigation() call.
  </summary>
</histogram>

<histogram
    name="Navigation.CommitRenderFrame.OutermostMainFrame.NewNavigation.IsHTTPOrHTTPS"
    units="ms" expires_after="2024-12-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderFrameImpl::CommitNavigation() to run on the
    outermost main frame. Recorded on RenderFrameImpl::CommitNavigation() call,
    when it's a new non-(reload/history/restore) navigation for the URL with
    HTTP or HTTPS scheme.
  </summary>
</histogram>

<histogram name="Navigation.CommitRenderFrame.{FrameType}" units="ms"
    expires_after="2024-12-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderFrameImpl::CommitNavigation() to run on
    {FrameType}. Recorded on every RenderFrameImpl::CommitNavigation() call.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.CompositorCreationTo{Stage}2" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration between the creation of CompositorFrameSink for a
    new RenderWidgetHost to when the navigation that uses that RenderWidgetHost
    reaches {Stage}. Logged when the navigation that uses a new RenderFrameHost
    and RenderWidgetHost reaches both the commit and swap RFH stages and the
    creation of CompositorFrameSink had already been requested at that time.
  </summary>
  <token key="Stage" variants="NavigationStage"/>
</histogram>

<histogram name="Navigation.CompositorRequestedBefore{Stage}2" enum="Boolean"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the creation of CompositorFrameSink for a new
    RenderWidgetHost is already requested when the navigation that uses it
    reaches {Stage}. Logged when the navigation that uses the new
    RenderFrameHost and RenderWidgetHost has reached both the commit and swap
    RFH stages.
  </summary>
  <token key="Stage" variants="NavigationStage"/>
</histogram>

<histogram name="Navigation.CreateSpeculativeRFH" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for
    RenderFrameHostManager::CreateSpeculativeRenderFrameHost() to run. Recorded
    on every RenderFrameHostManager::CreateSpeculativeRenderFrameHost() call.
  </summary>
</histogram>

<histogram name="Navigation.DeferSpeculativeRFHAction"
    enum="DeferSpeculativeRFHAction" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the speculative RFH is deferred when the navigation starts
    and whether a spare render process is warmed up.
  </summary>
</histogram>

<histogram name="Navigation.DidCommitSameDocumentNavigation.Duration"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time it takes to call
    RenderFrameHostImpl::DidCommitSameDocumentNavigation(). Logged once per call
    to RenderFrameHostImpl::DidCommitSameDocumentNavigation().
  </summary>
</histogram>

<histogram name="Navigation.DuringGesture.NavStarted{NavigationMode}"
    enum="Boolean" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record if there is navigation started during a gesture is in progress. This
    records for {NavigationMode} when a gesture is finished. Android only.
  </summary>
  <token key="NavigationMode" variants="NavigationMode"/>
</histogram>

<histogram name="Navigation.Earlyhints.EarlyHintsToResponseStartTime"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time from a navigation request received the first early hints to the
    response started. Recorded per navigation when both early hints and the
    final response are received.
  </summary>
</histogram>

<histogram name="Navigation.Earlyhints.WillStartRequestToEarlyHintsTime"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time from a navigation request will start to the first early hints is
    received. Recorded per navigation when both early hints and the final
    response are received.
  </summary>
</histogram>

<histogram name="Navigation.EarlyRenderFrameHostSwap.HasCommitted"
    enum="Boolean" expires_after="2025-08-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    If a navigation swaps to the destination RenderFrameHost early, this records
    whether or not the navigation actually ended up committing a document. This
    will be true for most navigations, but false for downloads and 204
    responses. Recorded once for every navigation that performs an early
    RenderFrameHost swap.
  </summary>
</histogram>

<histogram name="Navigation.EarlyRenderFrameHostSwap.IsInOutermostMainFrame"
    enum="BooleanMainFrame" expires_after="2025-08-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    If a navigation swaps to the destination RenderFrameHost early, this records
    whether the navigation was in an outermost main frame. Recorded once per
    early RenderFrameHost swap.
  </summary>
</histogram>

<histogram name="Navigation.EarlyRenderFrameHostSwapType"
    enum="EarlyRFHSwapType" expires_after="2025-08-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This records whether a navigation swapped to the destination RenderFrameHost
    early (prior to commit), as well as the reason for this swap. Recorded once
    at the end of every navigation, when NavigationRequest is destroyed.
  </summary>
</histogram>

<histogram name="Navigation.EngagementTime.HTTP" units="ms"
    expires_after="never">
<!-- expires-never: Underlies a public transparency report graph https://transparencyreport.google.com/https/overview?hl=en -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time that an HTTP page was in the foreground. Recorded on
    every page close/transition. This metric is exposed publicly on the HTTPS
    Transparency Report at
    https://transparencyreport.google.com/https/overview?hl=en.
  </summary>
</histogram>

<histogram name="Navigation.EngagementTime.HTTPS" units="ms"
    expires_after="never">
<!-- expires-never: Underlies a public transparency report graph https://transparencyreport.google.com/https/overview?hl=en -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time that an HTTPS page was in the foreground. Recorded on
    every page close/transition. This metric is exposed publicly on the HTTPS
    Transparency Report at
    https://transparencyreport.google.com/https/overview?hl=en.
  </summary>
</histogram>

<histogram name="Navigation.EngagementTime.Ratio" units="%"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The percentage of time that HTTPS pages were in the foreground, as compared
    to total foreground time. Recorded whenever user metrics are uploaded.
  </summary>
</histogram>

<histogram name="Navigation.FCPFrameSubmissionToSurfaceEmbed" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between when the first contentful paint frame for a new
    document is received by Viz to when the surface used for the new document
    gets embedded by the browser process. Logged after the first contentful
    frame has been displayed on screen.
  </summary>
</histogram>

<histogram name="Navigation.FCPFrameSubmittedBeforeSurfaceEmbed" enum="Boolean"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the first contentful paint frame for a new document was
    received by Viz before the surface used for the document gets embedded by
    the browser process. Logged after the first contentful frame has been
    displayed on screen.
  </summary>
</histogram>

<histogram name="Navigation.FencedFrameAutomaticBeaconEventType"
    enum="FencedFrameAutomaticBeaconEventType" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded what event type is used when automatic beacon data is set using
    setReportEventDataForAutomaticBeacons().
  </summary>
</histogram>

<histogram name="Navigation.FencedFrameBeaconReportingCountCrossOrigin"
    units="beacons" expires_after="2025-03-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many beacons were sent through window.fence.reportEvent() from a
    document that is cross-origin to the mapped URL of the FencedFrameConfig
    during the lifetime of the FencedFrameConfig object. This is recorded when
    the FencedFrameConfig object is destroyed and is recorded once per
    FencedFrameConfig instance.
  </summary>
</histogram>

<histogram name="Navigation.FencedFrameBeaconReportingCountSameOrigin"
    units="beacons" expires_after="2025-03-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many beacons were sent through window.fence.reportEvent() from a
    document that is same-origin to the mapped URL of the FencedFrameConfig
    during the lifetime of the FencedFrameConfig object. This is recorded when
    the FencedFrameConfig object is destroyed and is recorded once per
    FencedFrameConfig instance.
  </summary>
</histogram>

<histogram name="Navigation.FencedFrameTopNavigation"
    enum="FencedFrameNavigationState" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This records top-level navigations that originated from a fenced frame or
    URN iframe. At navigation start, a 'Begin' is logged. If the navigation
    commits (i.e. doesn't fail at some point in the navigation process), a
    'Commit' is logged. To get the percentage of top-level navigations
    originating from a fenced frame or URN iframe that successfully commit,
    divide the number of 'Commit' logs by the number of 'Begin' logs.
  </summary>
</histogram>

<histogram name="Navigation.GestureTransition.CacheHitOrMissReason"
    enum="NavigationTransitionCacheHitOrMissReason" expires_after="M140">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the occurrence of cache hit or cache miss reasons when the user
    starts a back/forward navigation gesture. This is recorded once per user
    gesture.
  </summary>
</histogram>

<histogram name="Navigation.GestureTransition.ScreenshotCacheSize" units="MB"
    expires_after="M140">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    The amount of memory usage by the screenshots captured for predictive back.
    Recorded at Poisson sampled time intervals continuously, regardless of user
    gesture, with a mean of 5 minutes on Android and 30 minutes on other
    platforms.
  </summary>
</histogram>

<histogram name="Navigation.GetFrameHostForNavigation" units="ms"
    expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for RenderFrameHostManager::GetFrameHostForNavigation() to
    run. Recorded on every RenderFrameHostManager::GetFrameHostForNavigation()
    call.
  </summary>
</histogram>

<histogram
    name="Navigation.GetFrameHostForNavigationTime.InDidCreateNavigationRequest.IsHTTPOrHTTPS"
    units="microseconds" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent processing GetFrameHostForNavigation() in
    RenderFrameHostManager::DidCreateNavigationRequest() that can prepare a
    SpeculativeRenderFrameHost. SpeculativeRenderFrameHost might not be created
    in some cases, but this UMA records such cases as well. This is recorded on
    each navigation if the navigation requires GetFrameHostForNavigation() to be
    called for http or https URLs. Calling GetFrameHostForNavigation() is not
    required for the same document navigations or back/forward cache
    navigations.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Navigation.Guest.IsHTTPOrHTTPS"
    enum="BooleanHttpBasedOrOtherScheme" expires_after="2025-03-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the committing guest navigation targets an HTTP(S) URL. Logged at
    ready-to-commit time for navigations in a webview tag (also known as
    &quot;guest&quot; in process model terminology), excluding same-document
    navigations and errors.
  </summary>
</histogram>

<histogram name="Navigation.Guest.IsMainFrame" enum="BooleanMainFrame"
    expires_after="2025-03-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the committing guest navigation is in a main frame. Logged at
    ready-to-commit time for navigations in a webview tag (also known as
    &quot;guest&quot; in process model terminology), excluding same-document
    navigations and errors.
  </summary>
</histogram>

<histogram name="Navigation.Home.IsChromeInternal" enum="Boolean"
    expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time a user uses a Home button to go to their home page.
    Records whether the page is chrome-internal (most likely the New Tab Page or
    about:blank) or not (most likely an actual web site). For the purpose of
    this histogram, about:, chrome: and chrome-native: are considered
    chrome-internal; everything else is not.

    The user action Navigation.Home.NotChromeInternal is also logged in the case
    that false is logged to this histogram.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
  </summary>
</histogram>

<histogram name="Navigation.HostnameHasDeviationCharacters" units="count"
    expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Counts the number of typed and pasted main frame navigations to hostnames
    that contain characters that are treated differently between IDNA 2003 and
    IDNA 2008, aka deviation characters. Ignores reload navigations.
  </summary>
</histogram>

<histogram name="Navigation.IsGuest" enum="NavigationIsGuest"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the committing navigation is for a webview tag (also known as
    &quot;guest&quot; in process model terminology). Logged at ready-to-commit
    time for every navigation, excluding same-document navigations and errors.
  </summary>
</histogram>

<histogram name="Navigation.IsLockedProcess" enum="NavigationIsLockedProcess"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the navigation commits in a process that is locked to an origin.
    Logged at ready-to-commit time for every navigation excluding same-document
    navigations and errors.
  </summary>
</histogram>

<histogram name="Navigation.IsLockedProcess.HTTPOrHTTPS"
    enum="NavigationIsLockedProcess" expires_after="2024-11-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the navigation commits in a process that is locked to an origin.
    Logged at ready-to-commit time for every navigation that commits with a HTTP
    or HTTPS URL scheme, excluding same-document navigations and errors.
  </summary>
</histogram>

<histogram name="Navigation.IsProcessBackgrounded.{Timing}" enum="Boolean"
    expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records true if the RenderProcess is backgrounded, otherwise records false.
    This is recorded on {Timing} when the URL is HTTP or HTTPS and only when the
    navigation happens in OutermostMainFrame.
  </summary>
  <token key="Timing">
    <variant name="OnCommit" summary="CommitNavigation"/>
    <variant name="OnDOMContentLoaded" summary="DOMContentLoaded"/>
  </token>
</histogram>

<histogram name="Navigation.IsSameBrowsingInstance"
    enum="NavigationIsSameBrowsingInstance" expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether a main frame navigation led to a change of BrowsingInstance or not.
  </summary>
</histogram>

<histogram name="Navigation.IsSameSiteInstance"
    enum="NavigationIsSameSiteInstance" expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the navigation led to a change of SiteInstance or not.
  </summary>
</histogram>

<histogram name="Navigation.LatencyAblation.ExcessWaitTime" units="ms"
    expires_after="2023-08-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time the user waits beyond what is configured for the latency ablation
    study. The enabled arms of the latency ablation study prescribe an amount of
    time to delay the navigation, and this histogram records the amount of time
    that was waited beyond that prescription. Recorded upon resuming the
    navigation after the ablation occurs. This ablation occurs for most
    navigations, but does not occur for subframes, prerenders, fenced frames,
    bf/restore style navigations, and client redirects. The experiment can be
    configured to only affect default search (or only affect non default
    search).
  </summary>
</histogram>

<histogram name="Navigation.LoadIfNecessaryType"
    enum="NavigationNeedsReloadType" expires_after="never">
<!-- expires-never: Generally useful metric on Android that tracks number of automatic tab reloads and their cause.  -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/base/android/OWNERS</owner>
  <summary>
    The type of the source of a load from LoadIfNecessary. Recorded when
    LoadIfNecessary starts a page load. For example, on Android,
    kRequestedByClient is recorded when user switch back to a tab with a dead
    renderer, which causes the tab to reload.
  </summary>
</histogram>

<histogram name="Navigation.MainFrame.FrameCount" units="frames"
    expires_after="2023-01-20">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of frames that are present in a WebContents. Recorded once when
    the main frame finishes loading.
  </summary>
</histogram>

<histogram name="Navigation.MainFrame.FromAdClick" enum="Boolean"
    expires_after="2025-02-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records a True boolean value when clicking on an Ad triggers a main frame
    navigation. Recorded when the (renderer-initiated) navigation IPC is
    received by the browser process.
  </summary>
</histogram>

<histogram name="Navigation.MainFrame.MaxFrameCount" units="frames"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The maximum number of loaded frames that are present in a WebContents.
    Recorded once when the main frame is moving away from current page. This can
    be when the WebContents is being destroyed or when it starts loading new
    content.
  </summary>
</histogram>

<histogram
    name="Navigation.MainFrame.NewNavigation.IgnoreRestore.IsHTTPOrHTTPS.{DurationFromTo}.Time2"
    units="ms" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record when (a) the navigation happened in MainFrame, (b) it was a new
    navigation, (c) it was not a session restore, (d) the URL was http or https,
    and (e) the navigation was successfully committed. Measures the duration
    between {DurationFromTo}. This is also included in the trace log.
  </summary>
  <token key="DurationFromTo">
    <variant name="BeginNavigationToLoaderStart"
        summary="when the BeginNavigation starts, to when the
                 NavigationURLLoader starts"/>
    <variant name="FetchStart"
        summary="when the browser is ready to fetch the document using an
                 HTTP(S) request (which is called as fetchStart), to when the
                 first HTTP(S) request is sent"/>
    <variant name="LoaderStartToFetchStart"
        summary="when the NavigationURLLoader starts, to when the browser is
                 ready to fetch the document using an HTTP(S) request (which
                 is called as fetchStart)"/>
    <variant name="LoaderStartToReceiveResponse"
        summary="when the NavigationURLLoader starts, to when the browser
                 process receives the response (HTTP header)"/>
    <variant name="NavigationStartToBeginNavigation"
        summary="when the navigation starts, to when the BeginNavigation
                 starts"/>
    <variant name="ReceiveHeaders"
        summary="when the first HTTP(S) request is sent, to when the final
                 headers are received in the network service. This duration
                 can involve multiple redirects"/>
    <variant name="ReceiveHeadersToReceiveResponse"
        summary="when the final headers are received in the network service,
                 to when the browser process receives the response (HTTP
                 header)"/>
    <variant name="ReceiveResponseToCommitNavigation"
        summary="when the browser process receives the response (HTTP
                 header), to when the CommitNavigation mojo API is called in
                 the browser process"/>
  </token>
</histogram>

<histogram
    name="Navigation.MainFrame.RendererInitiated.InitiatorFramePresentAtStart"
    enum="BooleanPresent" expires_after="2023-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the initiator frame is present when a renderer-initiated primary
    main frame navigation has started. Recorded for each renderer-initiated
    primary main frame navigation when the navigation has started (i.e. during
    WebContentsObserver::DidStartNavigation()).
  </summary>
</histogram>

<histogram name="Navigation.MainFrame.SiteEngagementLevel"
    enum="SiteEngagementLevel" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Site engagement level of the URL of the top frame of a navigation. Only
    counts HTTP or HTTPS URLs and ignores downloads.
  </summary>
</histogram>

<histogram name="Navigation.MainFrame.ThirdPartyCookieBlockingEnabled"
    enum="ThirdPartyCookieBlockState" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether third party cookie blocking was enabled for a site. Recorded
    for each main-frame navigation when that navigation commits. Only counts
    HTTP or HTTPS URLs and ignores downloads.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameHasRTLDomain2" enum="Boolean"
    expires_after="2024-11-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the main-frame navigation was to a URL with an RTL domain name. This
    is only recorded for finished navigations and not attempts. Warning: this
    histogram was expired from M92 through M95; data may be missing.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameHasRTLDomainDifferentPage2" enum="Boolean"
    expires_after="2024-11-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the main-frame navigation was to a URL with an RTL domain name,
    recorded for each main-frame avigation that replaces a document object. This
    is not reported for reference fragment navigations, pushState/replaceState
    or same page history navigation. This is only recorded for finished
    navigations and not attempts.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameProfileType2" enum="BrowserProfileType"
    expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The browser profile type for each main-frame navigation, recorded after
    navigation completion, including NTP.
  </summary>
</histogram>

<histogram
    name="Navigation.MainframeSameDocumentNavigationCommitToPresentFirstFrame"
    units="ms" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time to present the first frame since the same-document
    navigation has finished in the mainframe's renderer.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameScheme2" enum="NavigationScheme"
    expires_after="2024-12-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The scheme of the URL for each main-frame navigation. This is only recorded
    for finished navigations and not attempts. Warning: this histogram was
    expired from 2021-06-01 through M95; data may be missing.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameSchemeDifferentPage2"
    enum="NavigationScheme" expires_after="never">
<!-- expires-never: Underlies a public transparency report graph https://transparencyreport.google.com/https/overview?hl=en -->

  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The scheme of the URL for each main-frame navigation that replaces a
    document object. This is not reported for reference fragment navigations,
    pushState/replaceState or same page history navigation. This is only
    recorded for finished navigations and not attempts.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameSchemeDifferentPage2NonUniqueHostname"
    enum="NavigationScheme" expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    A subset of MainFrameSchemeDifferentPage2 only recorded for non-unique
    hostnames. The scheme of the URL for each main-frame navigation that
    replaces a document object. This is not reported for reference fragment
    navigations, pushState/replaceState or same page history navigation. This is
    only recorded for finished navigations and not attempts.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameSchemeDifferentPageOTR2"
    enum="NavigationScheme" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The scheme of the URL for each main-frame navigation that replaces a
    document object while in incognito. This is not reported for reference
    fragment navigations, pushState/replaceState or same page history
    navigation. This is only recorded for finished navigations and not attempts.
  </summary>
</histogram>

<histogram name="Navigation.MainFrameSchemeOTR2" enum="NavigationScheme"
    expires_after="2024-12-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The scheme of the URL for each main-frame navigation while in incognito.
    This is only recorded for finished navigations and not attempts. Warning:
    this histogram was expired from 2021-06-01 through M97; data may be missing.
  </summary>
</histogram>

<histogram name="Navigation.OnBeforeUnloadOverheadTime" units="ms"
    expires_after="2025-01-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Overhead time spent handling the OnBeforeUnload event from the browser
    standpoint. More precisely, it is the total time between dispatch and
    acknowledgment of the BeforeUnload event on the browser side, minus the
    actual time spent executing the BeforeUnload handlers on the renderer side.
  </summary>
</histogram>

<histogram name="Navigation.OnBeforeUnloadTotalTime" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Milliseconds spent to process all the beforeunload events in JavaScript and
    waiting time for beforeunload dialog is closed if necessary. Recorded only
    when a non-reload navigation occurs.
  </summary>
</histogram>

<histogram
    name="Navigation.OnGestureStart.NavigationInProgress{NavigationMode}"
    enum="Boolean" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record if a nav is in progress when a gesture has been just started. This
    records for {NavigationMode} when a gesture has been just started. This
    records once per navigation gesture. Android only.
  </summary>
  <token key="NavigationMode" variants="NavigationMode"/>
</histogram>

<histogram name="Navigation.OriginAgentCluster.Result"
    enum="OriginAgentClusterEndResult" expires_after="2025-05-18">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    For every successful cross-document commit, this logs whether or how
    OriginAgentCluster was involved. It tracks whether it was requested, as well
    as whether the isolation was granted, which can be affected by other
    documents in the same browsing context group. If OriginAgentCluster-by-
    default is not enabled, the first four enum values track this state. If
    OriginAgentCluster-by-default is enabled, then the second (disjoint) set of
    six enum values tracks this state, plus the two additional cases where
    OriginAgentCluster was explicitly not requested, and was or wasn't granted.
  </summary>
</histogram>

<histogram
    name="Navigation.PendingCommit.BlockedCommitCount.{RegularOrMHTMLType}"
    units="count" expires_after="2023-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many attempts to assign a final RenderFrameHost for a navigation
    were blocked due to a pre-existing speculative RenderFrameHost being in the
    kPendingCommit state. Collected when the navigation commits in
    DidCommitNavigation().
  </summary>
  <token key="RegularOrMHTMLType" variants="RegularOrMHTMLType"/>
</histogram>

<histogram name="Navigation.PendingCommit.BlockedCount.{RegularOrMHTMLType}"
    units="count" expires_after="2023-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many attempts to assign RenderFrameHost (initial or final) for a
    navigation were blocked due to a pre-existing speculative RenderFrameHost
    being in the kPendingCommit state. Collected when the navigation commits in
    DidCommitNavigation().
  </summary>
  <token key="RegularOrMHTMLType" variants="RegularOrMHTMLType"/>
</histogram>

<histogram
    name="Navigation.PendingCommit.DidBlockGetFrameHostForNavigation.{RegularOrMHTMLType}"
    enum="Boolean" expires_after="2023-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether any calls to `GetFrameHostForNavigation()` that failed due
    to a pre-existing speculative RenderFrameHost being in the kPendingCommit
    state. Collected when the navigation commits in DidCommitNavigation().
  </summary>
  <token key="RegularOrMHTMLType" variants="RegularOrMHTMLType"/>
</histogram>

<histogram name="Navigation.PendingCommit.Duration.{RegularOrMHTMLType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time between the browser asking a speculative
    RenderFrameHost to commit a navigation in the renderer and the commit
    actually being recorded in the browser process. Collected when the
    navigation commits in DidCommitNavigation().
  </summary>
  <token key="RegularOrMHTMLType" variants="RegularOrMHTMLType"/>
</histogram>

<histogram name="Navigation.Preconnect.PreresolveJobQueueingTime" units="ms"
    expires_after="2023-08-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time that a requested preresolve job spends queueing
    before being executed (e.g., due to a max # of preconnects being in flight).
    Recorded for each presolve job.
  </summary>
</histogram>

<histogram name="Navigation.Preconnect.PreresolveJobQueueLength" units="count"
    expires_after="2023-08-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the length of the queue of preresolve jobs at the beginning of
    PreconnectManager processing this queue to execute jobs. Recorded each time
    that PreconnectManager processes the queue of pending jobs.
  </summary>
</histogram>

<histogram name="Navigation.Preconnect.ProxyLookupCallbackQueueingTime"
    units="ms" expires_after="2023-06-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time that the task corresponding to the completion
    callback for a proxy lookup performed as part of navigation preconnect spent
    being queued before executing. Recorded for each proxy lookup.
  </summary>
</histogram>

<histogram name="Navigation.Preconnect.ProxyLookupLatency" units="ms"
    expires_after="2023-06-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the duration from initiation to completion for a proxy lookup
    performed as part of navigation preconnect. Recorded for each proxy lookup.
    Note: Does not capture any delay spent queuing *before* initiating the proxy
    lookup (e.g., due to a max # of preconnects being in flight).
  </summary>
</histogram>

<histogram name="Navigation.Preconnect.ResolveHostCallbackQueueingTime"
    units="ms" expires_after="2023-06-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time that the task corresponding to the completion
    callback for a host resolution performed as part of navigation preconnect
    spent being queued before executing. Recorded for each host resolution.
  </summary>
</histogram>

<histogram name="Navigation.Preconnect.ResolveHostLatency" units="ms"
    expires_after="2023-06-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the duration from initiation to completion for a host resolution
    performed as part of navigation preconnect. Recorded for each host
    resolution. Note: Does not capture any delay spent queuing *before*
    initiating the host resolution (e.g., due to a max # of preconnects being in
    flight).
  </summary>
</histogram>

<histogram name="Navigation.Prefetch.CompressedBodySize" units="KB"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the size of the response body for prefetch responses that had a
    non-trivial Content-Encoding. This is logged once per successfully completed
    compressed response in PrefetchManager::OnPrefetchFinished(). A response is
    considered compressed when the decoded body length is larger than the
    encoded body length. Compare to Navigation.Prefetch.UncompressedBodySize.
  </summary>
</histogram>

<histogram name="Navigation.Prefetch.IsHttps" enum="Boolean"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether or not a prefetch requested a URL with an https scheme.
    Recorded once for each prefetch performed by PrefetchManager. This is based
    on what the PrefetchManager requested and doesn't take into account
    subsequent internal or external redirects to https.
  </summary>
</histogram>

<histogram name="Navigation.Prefetch.PrefetchJobQueueingTime" units="ms"
    expires_after="2023-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time that a requested prefetch job spends queueing
    before being executed (e.g., due to a max # of prefetches being in flight).
    Recorded for each prefetch job.
  </summary>
</histogram>

<histogram name="Navigation.Prefetch.PrefetchJobQueueLength" units="count"
    expires_after="2023-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the length of the queue of prefetch jobs at the beginning of
    PrefetchManager processing this queue to execute jobs. Recorded each time
    that PrefetchManager processes the queue of pending jobs.
  </summary>
</histogram>

<histogram name="Navigation.Prefetch.UncompressedBodySize" units="KB"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the size of the response body for prefetch responses that did not
    use HTTP Content-Encoding compression. This is logged once per successfully
    completed uncompressed response in PrefetchManager::OnPrefetchFinished(). A
    response is considered compressed when the decoded body length is larger
    than the encoded body length. Compare to
    Navigation.Prefetch.CompressedBodySize.
  </summary>
</histogram>

<histogram
    name="Navigation.Prerender.ActivationCommitDeferTime{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures time a PrerenderCommitDeferringCondition defers activation waiting
    to commit an ongoing mainframe prerender navigation. Logged every time a
    PrerenderCommitDeferringCondition defers navigation.

    After 2023/05, this metric is used with PreloadingTriggerType key and
    records even when PrerenderCommitDeferringCondition doesn't delay navigation
    as zero delay. Previously the metric was only used without the key and
    recorded only when PrerenderCommitDeferringCondition deferred navigation.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Navigation.ProcessNavigationThrottlesTime.WillStartRequest.{FrameType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time taken to process regsitered navigation throttles in the
    WillStartRequest event for a {FrameType}. Recorded for every navigation,
    before dispatching the request.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.QueueTime.{Method}.{FrameType}" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time the task to run {Method} was queued before
    running. Logged every time {Method} is run for a {FrameType} in
    NavigationURLLoaderImpl with a valid queue time.

    Warning: this histogram was expired after 2023-07-28 and brought back
    2024-05-20; data may be missing.
  </summary>
  <token key="Method">
    <variant name="OnReceiveRedirect"/>
    <variant name="OnReceiveResponse"/>
  </token>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.ReadyToCommitUntilCommit2" units="ms"
    expires_after="2023-03-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time needed to commit a navigation once it is ready to commit. This is
    the time between ReadyToCommit and DidFinishNavigation (for a navigation
    that commits).

    Warning: this histogram was expired after M85 and brought back 2021-04-13;
    data may be missing.
  </summary>
</histogram>

<histogram name="Navigation.RegisterNavigationThrottlesTime.{FrameType}"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time taken to register navigation throttles in
    NavigationThrottleRunner for a {FrameType}. Recorded for every navigation,
    before dispatching the request.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.Renderer.BlockedForFilterURL"
    enum="RendererBlockedURLReason" expires_after="2025-02-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when RenderFrameImpl::IsValidCommitUrl detects a navigation URL
    that would be blocked by RenderProcessHostImpl::FilterURL and rewrites it to
    about:blank#blocked. See also BrowserRenderProcessHost.BlockedByFilterURL
    for cases caught by the browser process, and https://crbug.com/40066983.
  </summary>
</histogram>

<histogram name="Navigation.RendererCommitDelay.{FrameType}" units="ms"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the delay between when the navigation commit was sent by the
    browser to when it is received by the renderer. Recorded for every
    cross-document non-page activation navigation commit.

    Warning: this histogram was expired after 2023-05-05 and brought back
    2024-05-09; data may be missing.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.RendererCommitProcessWaitTime.{FrameType}"
    units="ms" expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures how long the navigation commit was waiting for the renderer process
    to start before it was able to receive the commit. Recorded for every
    cross-document non-page activation navigation commit which waits on a
    process start.

    Warning: this histogram was expired after 2023-05-05 and brought back
    2024-05-09; data may be missing.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.RendererCommitQueueTime.{FrameType}" units="ms"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures queue time for the navigation commit mojo task on the renderer
    side. Recorded for every cross-document non-page activation navigation
    commit.

    Warning: this histogram was expired after 2023-05-05 and brought back
    2024-05-09; data may be missing.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.RendererDidNavigateTime.{FrameType}" units="ms"
    expires_after="2023-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures time it takes to call
    NavigationControllerImpl::RendererDidNavigate. Recorded for each navigation
    that is not a same document navigation.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram
    name="Navigation.RendererRunLoopStartToFirstCommitNavigation2.{FrameType}"
    units="ms" expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the duration between a) the start timing of the renderer's RunLoop
    and b) the first CommitNavigation. Recorded on the first navigation commit
    in the renderer process. If the first navigation does not commit http or
    https, this is not recorded.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.RenderFrameDelete" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderFrameImpl::Delete() to run. Recorded on
    every RenderFrameImpl::Delete() call.
  </summary>
</histogram>

<histogram name="Navigation.RenderFrameHostConstructor" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderFrameHost constructor to run. Recorded on
    every RenderFrameHost construction.
  </summary>
</histogram>

<histogram name="Navigation.RenderFrameHostDestructor" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderFrameHost destructor to run. Recorded on
    every RenderFrameHost destruction.
  </summary>
</histogram>

<histogram name="Navigation.RenderViewHostConstructor" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderViewHost constructor to run. Recorded on
    every RenderViewHost construction.
  </summary>
</histogram>

<histogram name="Navigation.RenderViewHostDestructor" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderViewHost destructor to run. Recorded on
    every RenderViewHost destruction.
  </summary>
</histogram>

<histogram name="Navigation.RenderWidgetHostConstructor" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderWidgetHost constructor to run. Recorded on
    every RenderWidgetHost construction.
  </summary>
</histogram>

<histogram name="Navigation.RenderWidgetHostDestructor" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for the RenderWidgetHost destructor to run. Recorded on
    every RenderWidgetHost destruction.
  </summary>
</histogram>

<histogram name="Navigation.RequiresDedicatedProcess"
    enum="NavigationRequiresDedicatedProcess" expires_after="2025-03-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the navigation commits in a SiteInstance that requires a dedicated
    process. Logged at ready-to-commit time for every navigation excluding
    same-document navigations and errors.
  </summary>
</histogram>

<histogram name="Navigation.RequiresDedicatedProcess.HTTPOrHTTPS"
    enum="NavigationRequiresDedicatedProcess" expires_after="2025-03-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the navigation commits in a SiteInstance that requires a dedicated
    process. Logged at ready-to-commit time for every navigation that commits
    with a HTTP or HTTPS URL scheme, excluding same-document navigations and
    errors.
  </summary>
</histogram>

<histogram name="Navigation.SameDocumentNavigationWithScreenshot"
    enum="Boolean" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the number of same-document navigations which commit in the
    renderer. The metric is recorded each time the renderer commits a navigation
    and tracks whether the navigation is eligible for screenshotting for
    navigation transitions
  </summary>
</histogram>

<histogram name="Navigation.SendCommitNavigationTime.{FrameType}" units="ms"
    expires_after="2023-08-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time RenderFrameHostImpl::SendCommitNavigation takes to run.
    Recorded every time the method executes.
  </summary>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.StartToCommit" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time delta between the start of a navigation and the time it is
    committed.

    Warning: this histogram was expired after M85 and brought back 2021-04-13;
    data may be missing.
  </summary>
</histogram>

<histogram name="Navigation.SuddenTerminationDisabler.{Origins}"
    enum="NavigationSuddenTerminationDisabler" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the combination of mainframe/subframe and what sudden termination
    disablers were present. This is recorded on every cross-document navigation.
    Currently only covers Unload. The SameOrigin variant only considers a frame
    to be same origin as the main frame if it can be reached through a chain of
    same-origin frames. So e.g. in a-&gt;b-&gt;a, the second a is not
    same-origin.
  </summary>
  <token key="Origins">
    <variant name="AllOrigins"/>
    <variant name="SameOrigin"/>
  </token>
</histogram>

<histogram name="Navigation.SurfaceEmbedToFCPFrameSubmission" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time between when the surface used for a new document gets
    embedded by the browser process to when the first contentful paint frame for
    the new document is received by Viz. Logged after the first contentful frame
    has been displayed on screen.
  </summary>
</histogram>

<histogram name="Navigation.ThrottleCount" units="throttles"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the total count of navigation throttles that are actually
    registered for a navigation request. Recorded per navigation on destructing
    NavigationThrottleRunner.
  </summary>
</histogram>

<histogram name="Navigation.ThrottleDeferredEvent"
    enum="NavigationThrottleEvent" expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the navigation throttle event type that observes DEFER on running
    NavigationThrottles. Recorded per receiving DEFER decision on each throttle
    run to understand the distribution.
  </summary>
</histogram>

<histogram name="Navigation.ThrottleDeferTime.{Event}" units="ms"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures time a navigation throttle was deferred when on {Event}. Logged
    every time a throttle defers a navigation.

    Warning: this histogram was expired from 2023-02-11 to 2024-06-17; data may
    be missing.
  </summary>
  <token key="Event" variants="NavigationThrottleEvents"/>
</histogram>

<histogram name="Navigation.ThrottleEventDurationTime.{Event}" units="ms"
    expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures time a navigation throttle runner took to execute all throttles for
    {Event} including suspended duration by DEFERs. Logged every time a
    navigation throttle runner completes processing all throttles for {Event}
    without any objection.
  </summary>
  <token key="Event" variants="NavigationThrottleEvents"/>
</histogram>

<histogram name="Navigation.ThrottleEventExecutionTime.{Event}" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures accumulated time a navigation throttle runner took to execute all
    throttles for {Event}. Logged every time a navigation throttle runner
    completes processing all throttles for {Event} without any objection.
  </summary>
  <token key="Event" variants="NavigationThrottleEvents"/>
</histogram>

<histogram name="Navigation.ThrottleExecutionTime.{Event}" units="ms"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures time a navigation throttle took to execute {Event}. Logged every
    time a throttle runs.

    Warning: this histogram was expired from 2023-02-11 to 2024-06-17; data may
    be missing.
  </summary>
  <token key="Event" variants="NavigationThrottleEvents"/>
</histogram>

<histogram name="Navigation.Throttles.PolicyBlocklist.DeferDurationTime"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures duration times that PolicyBlocklistNavigationThrottles asks to
    defer navigation request. The time is accumulated on resuming request each
    time, and recorded on destructing the throttle for the request.
  </summary>
</histogram>

<histogram name="Navigation.Throttles.PolicyBlocklist.RequestThrottleAction2"
    enum="PolicyBlocklistRequestThrottleAction" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Remembers the PolicyBlocklistNavigationThrottles' actions for
    WillStartRequest() and WillRedirectRequest() and classify as the
    PolicyBlocklistRequestThrottleAction. The classified type is recorded on
    destructing the throttle for the request.
  </summary>
</histogram>

<histogram name="Navigation.Throttles.PolicyBlocklist.RequestToResponseTime"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures duration times from the time PolicyBlocklistNavigationThrottles
    observes the first WillStartRequest() to the time it observes the
    WillProcessResponse(). Recorded when the WillProcessResponse() is handled.
  </summary>
</histogram>

<histogram name="Navigation.ThrottleTotalDeferCount{Condition}"
    units="throttles" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures total count of deferred requests that a throttle runner asked on
    {Condition} by any throttle per navigation. Recorded per navigation on
    destructing NavigationThrottleRunner.
  </summary>
  <token key="Condition" variants="NavigationThrottleConditions"/>
</histogram>

<histogram name="Navigation.ThrottleTotalDeferTime{Condition}" units="ms"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures total duration time that a throttle runner took to wait for
    deferred requests on {Condition} from all throttles. Recorded per navigation
    on destructing NavigationThrottleRunner.
  </summary>
  <token key="Condition" variants="NavigationThrottleConditions"/>
</histogram>

<histogram name="Navigation.TimeToActivatePrerender{PreloadingTriggerType}"
    units="ms" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time needed to commit a navigation using prerender activation. This is
    the time from the beginning of NavigationStart to the end of
    DidCommitPageActivation.

    This metric is logged everytime prerender activation navigation commits.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram name="Navigation.TimeToReadyToCommit2" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time delta between the start of a navigation and the time it is ready to
    commit.

    Warning: this histogram was expired after M85 and brought back 2021-04-13;
    data may be missing.
  </summary>
</histogram>

<histogram name="Navigation.TpcdMitigations.MetadataCohortDistribution"
    enum="TpcdMetadataCohort" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    Represents the cohort related to the Stage rollback of the Third Party
    Cookies Deprecation trial (TPCD) token grace period defined within the TPCD
    Metadata.

    This is reccorded only for a specific dummy entry within the TPCD Metadata.

    This will help assess the uniformity in cohort distribution per the DTRP
    (Deprecation Trial Rollout Percentage) attribute.
  </summary>
</histogram>

<histogram name="Navigation.TpcdMitigations.MetadataInstallationResult"
    enum="TpcdMetadataInstallationResult" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>src/chrome/browser/tpcd/OWNERS</owner>
  <summary>
    The outcome from Third Party Cookies Deprecation Metadata component
    installation.

    This metric is recorded at most once for every new metadata version
    installed.
  </summary>
</histogram>

<histogram name="Navigation.Unload" units="ms" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes for RenderFrameHostImpl::Unload() to run. Recorded on
    every RenderFrameHostImpl::Unload() call.
  </summary>
</histogram>

<histogram name="Navigation.UserAgentStringType" enum="UserAgentStringType"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The type of the user agent string value sent in the User-Agent header on a
    navigation request. The reduced user agent string is sent when User-Agent
    reduction feature kReduceUserAgentMinorVersion is enabled. This histogram is
    recorded when a NavigationRequest is constructed, prior to sending the
    request to the network stack.
  </summary>
</histogram>

<histogram name="Navigation.{Stage}.{FrameType}" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the amount of time the {Stage} stage takes in early navigation.
    Logged for any navigation that reaches the stage.

    This was not reported between 2023-05-06 and 2024-06-28.
  </summary>
  <token key="Stage">
    <variant name="BeginNavigationImpl"
        summary="NavigationRequest::BeginNavigationImpl"/>
    <variant name="DidStartLoading" summary="FrameTreeNode::DidStartLoading"/>
    <variant name="LoaderCreateToRequestStart"
        summary="NavigationURLLoaderImpl creation to network request start"/>
    <variant name="WillStartRequestToLoaderStart"
        summary="NavigationRequest::WillStartRequest to
                 NavigationURLLoader::Start"/>
  </token>
  <token key="FrameType" variants="FrameTypes"/>
</histogram>

<histogram name="Navigation.{Stage}ToCompositorCreation" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration between when the navigation that uses a new
    RenderWidgetHost reaches {Stage} and when the creation of the
    CompositorFrameSink for the RenderWidgetHost is requested. Logged when the
    compositor is requested and the navigation that created the RenderWidgetHost
    had already reached both the commit and swap RFH stages.
  </summary>
  <token key="Stage" variants="NavigationStage"/>
</histogram>

<histogram name="NavigationSuggestion.Event2" enum="NavigationSuggestionEvent"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks events when the currently navigated domain name is a lookalike to one
    of the top 10K domains or a domain that the user interacted with, resulting
    in a navigation suggestion interstitial.

    Before M88, NavigationSuggestion.Event recorded a separate entry for each
    lookalike URL in a redirect chain. E.g. lookalike1.com -&gt; site.com -&gt;
    lookalike2.com recorded two events. This updated histogram only records an
    entry for the first or last URL in the redirect if any of those is a
    lookalike.
  </summary>
</histogram>

<histogram
    name="NavigationSuggestion.GetDomainInfoDelayBeforeAllowingNavigation"
    units="ms" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration that PerformChecks() spent in calls to
    GetDomainInfo() before the navigation was ultimately allowed to proceed.
    Recorded only for navigations that
    LookalikeUrlNavigationThrottle::PerfomChecks() directly allows to proceed
    (i.e., not those that result in showing interstitials and/or digital asset
    manifest checks).
  </summary>
</histogram>

<histogram
    name="NavigationSuggestion.IsLookalikeUrlDelayBeforeAllowingNavigation"
    units="ms" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration that PerformChecks() spent in calls to
    IsLookalikeUrl() before the navigation was ultimately allowed to proceed.
    Recorded only for navigations that
    LookalikeUrlNavigationThrottle::PerfomChecks() directly allows to proceed
    (i.e., not those that result in showing interstitials and/or digital asset
    manifest checks).
  </summary>
</histogram>

<histogram
    name="NavigationSuggestion.PerformChecksDelayBeforeAllowingNavigation"
    units="ms" expires_after="2024-06-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration the navigation was deferred while PerformChecks()
    was executing before the navigation was ultimately allowed to proceed.
    Recorded only for navigations that
    LookalikeUrlNavigationThrottle::PerfomChecks() directly allows to proceed
    (i.e., not those that result in showing interstitials and/or digital asset
    manifest checks).
  </summary>
</histogram>

<histogram name="NavigationSuggestion.UpdateEngagedSitesDeferTime" units="ms"
    expires_after="2023-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration the navigation was deferred while waiting for
    engaged sites data. Recorded whenever a navigation is deferred waiting for
    engaged sites.
  </summary>
</histogram>

<histogram
    name="Prerender.CanceledForInactivePageRestriction.DisallowActivationReason{PreloadingTriggerType}"
    enum="InactiveFrameDisallowActivationReason" expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the prerender cancellations caused by inactive RenderFrameHosts'
    restrictions, recording the reason passed to
    RenderFrameHost::IsInactiveAndDisallowActivation calls.

    This metric is recored when a RenderFrameHost is going to perform some
    actions that are not allowed for a prerendering RenderFrameHost, such as
    showing context menu. At that time, the detailed reason will be passed to
    RenderFrameHost::IsInactiveAndDisallowActivation, which will cancel
    prerendering and record this metric.

    Note: This histogram does not track prerender activation behavior, but to
    analyze PrerenderHostFinalStatus::kInactivePageRestriction.

    Warning: this histogram was expired from 2023-03-01 to 2023-03-29; data may
    be missing.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.ActivationHeadersMismatch{PreloadingTriggerType}"
    enum="PrerenderActivationHeaderMismatchType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Breakdown metric for
    PrerenderActivationNavigationParamsMatch::kHttpRequestHeader. We are
    considering whether we should loosen this restriction, so this metric is
    added to figure out the usage of headers during prerender navigation and
    activation navigation. See https://crbug.com/1378921 for more information.

    When we are attempting to activate a prerendered page, we compare the
    prerendered page's NavigationRequest's headers with the incoming
    NavigationRequest's (called activation navigation). If they mismatch,
    PrerenderHost will post a task. The task scans the two headers, and will
    report a mismatching record if it detects any differences between them. It
    records the hashed number of a mismatching header, together with the
    mismatching reason: Missing in prerendering navigation, missing in
    activation navigation, or the values mismatch.

    Warning: this histogram was expired from 2023-01-31 to 2023-03-29; data may
    be missing.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.ActivationIPCDelay{PreloadingTriggerType}"
    units="ms" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded by WebViewImpl::ActivatePrerenderedPage when renderer process
    starts to ask the receiver end of the prerender activation IPC to process
    this signal, i.e., when this method is invoked. This metric is used to
    measure the delay of when renderer process receives the signal and when it
    can process this signal. Recorded on the main document only.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.ActivationNavigationParamsMatch{PreloadingTriggerType}"
    enum="PrerenderActivationNavigationParamsMatch" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the mismatched parameters between the prerender initial navigation
    parameters and the prerender activation navigation parameters. Recorded by
    PrerenderHost in the browser process when comparing these two parameters.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.ActivationTransitionMismatch{PreloadingTriggerType}"
    enum="PrerenderActivationTransitionMismatchType" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Breakdown metric for PrerenderActivationNavigationParamsMatch::kTransition.

    When we are attempting to activate a prerendered page, we compare the
    prerendered page's NavigationRequest's ui::PageTransition with the incoming
    NavigationRequest's (called activation navigation). If they mismatch, this
    metric records the transition of the activation navigation in
    RecordPrerenderActivationTransition().
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.CrossOriginRedirectionProtocolChange{PreloadingTriggerType}"
    enum="PrerenderCrossOriginRedirectionProtocolChange"
    expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    Warning: this histogram was expired from 2024-06-01 to 2024-08-06; data may
    be missing.

    A breakdown metric for analyzing cross-origin redirection cases during
    embedder-triggered prerendering, Recorded when redirections were caused due
    to HTTP protocol upgrades.

    Note that for now it is not used for prerendering that are triggered by
    speculation rules.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram name="Prerender.Experimental.MatchableHostCountOnActivation"
    units="count" expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of PrerenderHosts that match the potential activation
    navigation. This is recorded when the navigation chooses one of the hosts in
    PrerenderHostRegistry::FindPotentialHostToActivate().
  </summary>
</histogram>

<histogram
    name="Prerender.Experimental.NewTabPage.TouchDuration.{ConversionResultType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The metrics for preload NewTabPage to understand the distribution of touch
    duration. It records touch duration time of a NewTabPage tile. And this
    records both cases, the first being NotTaken if a navigation never happens,
    the other being Taken when a NewTabPage is actually navigated per touch
    event completion.
  </summary>
  <token key="ConversionResultType">
    <variant name="NotTaken"/>
    <variant name="Taken"/>
  </token>
</histogram>

<histogram name="Prerender.Experimental.PredictionStatus.DefaultSearchEngine"
    enum="PrerenderPredictionStatus" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the prediction status started by omnibox. In particular, this
    records whether they were used or not. It's recorded when omnibox-initiated
    navigation finishes. Consider it as a success when the prediction is correct
    and note that the activation of prerendering may fail.
  </summary>
</histogram>

<histogram name="Prerender.Experimental.PredictionStatus.DirectUrlInput"
    enum="PrerenderPredictionStatus" expires_after="2025-04-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the prediction status started by omnibox. In particular, this
    records whether they were used or not. It's recorded when omnibox-initiated
    navigation finishes. Consider it as a success when the prediction is correct
    and note that the activation of prerendering may fail.
  </summary>
</histogram>

<histogram
    name="Prerender.Experimental.PrerenderCancelledInterface{PreloadingTriggerType}"
    enum="PrerenderCancelledInterface" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Mojo interfaces that cause the cancellation of prerendering. Recorded by
    MojoBinderPolicyApplier in the browser process once it receives the binding
    request of a kCancel Mojo interface.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.PrerenderCancelledUnknownInterface{PreloadingTriggerType}"
    enum="PrerenderCancelledUnknownInterface" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This histogram tracks the interfaces that
    Prerender.Experimental.PrerenderCancelledInterface fails to track. It is
    needed because:

    * Embedders can set their own policies, so Prerender2 cannot map all of them
    to enums.

    * Channel-associated interfaces' policies are set to kCancel implicitly.
    It's hard to track all of them, especially the newly added
    channel-associated interfaces.

    This sparse histogram allows Prerender2 to record all of these interfaces
    separately.

    It is recored by MojoBinderPolicyApplier in the browser process once it
    receives the binding request of a kCancel Mojo interface and cannot find an
    accurate enum type for this interface.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.PrerenderCrossOriginRedirectionMismatch{PreloadingTriggerType}"
    enum="PrerenderCrossOriginRedirectionMismatch" expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>src/content/browser/preloading/prerender/OWNERS</owner>
  <summary>
    Warning: this histogram was expired from 2024-06-01 to 2024-08-06; data may
    be missing.

    A breakdown metric for analyzing cross-origin redirection cases during
    embedder-triggered prerendering. Recorded when the embedder-triggered
    prerendering was redirected to another origin that differs from the initial
    one.

    The cases are encoded into 3 bits(scheme mismatch, host mismatch, port
    mismatch).

    Note that for now it is not used for prerendering that are triggered by
    speculation rules.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.PrerenderHostFinalStatus{PreloadingTriggerType}"
    enum="PrerenderHostFinalStatus" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Final status for a prerendering attempt. Recorded by PrerenderHost or
    PrerenderHostRegistry in the browser process when the attempt finishes.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.PrerenderLoadingFailureError{PreloadingTriggerType}"
    enum="NetErrorCodes" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Net error code is recorded by PrerenderCancellationReason when a prerender
    host is canceled due to kDidFailLoad.

    This metric is used to monitor whether preload cache intercepting logic
    causes extra page loading errors. Similar to
    PageLoad.Internal.Prerender2.ActivatedPageLoaderStatus{PreloadingTriggerType},
    but used to track the loading status of not activated prerendered pages.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram
    name="Prerender.Experimental.ReceivedPrerendersPerPrimaryPageChangedCount2{PreloadingTriggerType}{EagernessCategory}"
    units="count" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of received speculation rules prerender triggers with
    eagerness per primary page changed, classified with their eagerness. This is
    coutend per PrerendererImpl::MaybePrerender and recorded when primary page
    is changed and PrerendererImpl::CancelStartedPrerenders is called.

    Note that this metric only records where PreloadingTriggerType is
    SpeculationRule and SpeculationRuleFromIsolatedWorld.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
  <token key="EagernessCategory">
    <variant name=".Conservative"/>
    <variant name=".Eager"/>
    <variant name=".Moderate"/>
    <variant name=".NonEager"/>
    <variant name=".Total"/>
  </token>
</histogram>

<histogram name="Prerender.Experimental.Search.ResponseReuseCount"
    units="count" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Warning: this histogram was expired from 2023-11-20 to 2024-02-27; data may
    be missing.

    Recorded by StreamingSearchPrefetchURLLoader in its destructor. This
    instance is created per (non-duplicated) prefetch attempt. The destructor
    runs upon:

    - Case 1: A prefetched response is deleted upon expiration or network error.

    - Case 2: A prefetched response deletes itself after finishing serving to
    navigations. This will be executed asynchronously.

    See comments in StreamingSearchPrefetchURLLoader for more information.

    Indicates the number of prerendering DSE navigation that one prefetched
    response served to. In most cases, it should record 0 (which means the
    loader does not serve to any prerendering navigations) or 1 (served to one
    prerender). And we will track the count that is greater than 2 to determine
    whether the loader should be designed to target multiple serving
    destinations.

    This number should be quite small (0 or 1 in most cases), so the count is
    capped at 9 and put into 10 buckets, from 0 to 9.
  </summary>
</histogram>

<histogram
    name="Prerender.Experimental.WaitingForHeadersFinishedReason{PreloadingTriggerType}"
    enum="PrerenderWaitingForHeadersFinishedReason" expires_after="2025-02-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Finished reason of waiting for the No-Vary-Search header. Recorded by
    PrerenderHost in the browser process when the header is received, the
    timeout timer runs, or cancellation happens.
  </summary>
  <token key="PreloadingTriggerType" variants="PreloadingTriggerType"/>
</histogram>

<histogram name="Prerender.FinalStatus" enum="PrerenderFinalStatus"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Final status for prerender pages - either success, or why it was canceled.
  </summary>
</histogram>

<histogram name="Prerender.PrerenderLoadComplete" enum="BooleanSuccess"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the load was completed when the pre-render was used. If the
    prerender is cancelled, this is not logged. Only on iOS.
  </summary>
</histogram>

<histogram name="Prerender.PrerenderTimeSaved" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This is the time from when a prerendered page begins to load to when it is
    swapped in as the main page load or to when the pre-loaded page is fully
    loaded, whichever came first. Recorded when the swap occurs, only on iOS.
  </summary>
</histogram>

</histograms>

</histogram-configuration>