blob: ed14d7be468c43b2be55bd6664a8af9cfca04318 [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors. All rights reserved.
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 send CLs to chromium-metrics-reviews@google.com rather than to specific
individuals. These CLs will be automatically reassigned to a reviewer within
about 5 minutes. This approach helps the metrics team to load-balance incoming
reviews. Googlers can read more about this at go/gwsq-gerrit.
-->
<histogram-configuration>
<histograms>
<variants name="FrameTypes">
<variant name="MainFrame"/>
<variant name="Subframe"/>
</variants>
<variants name="NavigationThrottleEvents">
<variant name="WillFailRequest"/>
<variant name="WillProcessResponse"/>
<variant name="WillRedirectRequest"/>
<variant name="WillStartRequest"/>
</variants>
<histogram name="BackForwardCache.AllSites.EvictedAfterDocumentRestoredReason"
enum="BackForwardCacheEvictedAfterDocumentRestoredReason"
expires_after="2021-10-01">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-08-22">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-08-29">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-17">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
When navigating back to a page in the session history and the
BackForwardCache wasn't used because of the related browsing instances, 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.DisabledForRenderFrameHostReason"
enum="BackForwardCacheDisabledForRenderFrameHostReason"
expires_after="2021-10-01">
<obsolete>
Removed from code in Mar 2021.
</obsolete>
<owner>carlscab@chromium.org</owner>
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
For history navigations, records the reasons passed to
BackForwardCache::DisableForRenderFrameHost calls. These reasons are
specified as strings, so this histograms contains their hashes computed as
base::HashMetricName.
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.DisabledForRenderFrameHostReason2"
enum="BackForwardCacheDisabledForRenderFrameHostReason2"
expires_after="2021-10-01">
<owner>carlscab@chromium.org</owner>
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-17">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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 whether back-forward cache is
enabled or not.
</summary>
</histogram>
<histogram name="BackForwardCache.EvictedAfterDocumentRestoredReason"
enum="BackForwardCacheEvictedAfterDocumentRestoredReason"
expires_after="2021-10-17">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-01">
<owner>rakina@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-01">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-04">
<owner>hbolaria@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-04">
<owner>hbolaria@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-01">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-17">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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="2021-10-17">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
When navigating back to a page in the session history and the
BackForwardCache wasn't used because of the related browsing instances, 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.DisabledForRenderFrameHostReason"
enum="BackForwardCacheDisabledForRenderFrameHostReason"
expires_after="2021-08-15">
<obsolete>
Removed from code in Mar 2021.
</obsolete>
<owner>carlscab@chromium.org</owner>
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
For history navigations, records the reasons passed to
BackForwardCache::DisableForRenderFrameHost calls. These reasons are
specified as strings, so this histograms contains their hashes computed as
base::HashMetricName.
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 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="2021-08-15">
<owner>carlscab@chromium.org</owner>
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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.NotRestoredReason"
enum="BackForwardCacheNotRestoredReason" expires_after="2021-10-17">
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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.MainFrameHasPageshowListenersOnRestore"
enum="BooleanPresent" expires_after="M82">
<owner>altimin@chromium.org</owner>
<owner>hajimehoshi@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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.ProactiveSameSiteBISwap.EligibilityDuringCommit"
enum="BackForwardCacheEligibilityDuringCommit" expires_after="M88">
<obsolete>
Removed from code in Feb 2021.
</obsolete>
<owner>rakina@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Records whether a page where we did a same-site proactive BrowsingInstance
swap on (with the intention on storing it in the back-forward cache later)
is still eligible for back-forward cache when swapping out the old page
during navigation commit. Recorded when we have just finished committing the
new page on the renderer side, and during the commit of the new page in the
browser side.
</summary>
</histogram>
<histogram
name="BackForwardCache.ProactiveSameSiteBISwap.SameSiteNavigationDidSwap"
enum="BackForwardCacheSameSiteNavigationDidSwap" expires_after="M88">
<obsolete>
Removed from code in Feb 2021.
</obsolete>
<owner>rakina@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Records whether we did a same-site proactive BrowsingInstance swap or not
for a same-site cross-document navigation. Recorded when we are committing
the navigation.
</summary>
</histogram>
<histogram
name="BackForwardCache.ProactiveSameSiteBISwap.UnloadRunsAfterCommit"
enum="BackForwardCacheUnloadRunsAfterCommit" expires_after="M88">
<obsolete>
Removed from code in Feb 2021.
</obsolete>
<owner>rakina@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Records whether a page where we did a same-site proactive BrowsingInstance
swap on (with the intention on storing it in the back-forward cache later)
is no longer eligible for back-forward cache after the navigation committed
and the page has unload handlers that will run after commit, which is a
web-observable behavior change for same-site navigations. Recorded when we
have just finished committing the new page on the renderer side, and during
the commit of the new page in the browser side.
</summary>
</histogram>
<histogram name="BackForwardCache.ReloadsAfterHistoryNavigation"
enum="BackForwardCacheReloadsAfterHistoryNavigation"
expires_after="2021-10-01">
<owner>sreejakshetty@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Records the number of reloads after a history navigation both for the cases
when page is served and not served from back-forward cache.
This is recorded when navigation is committed, only for the domains which
are in the scope of back-forward cache experiment and they are of same
NavigationEntry (e.g. back and reload in different tab do not count).
</summary>
</histogram>
<histogram name="BackForwardCache.ReloadsAndHistoryNavigations"
enum="BackForwardCacheReloadsAndHistoryNavigations"
expires_after="2021-10-01">
<owner>sreejakshetty@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Records the total number of history navigations along with the number of
reloads if the previous navigation was a history one.
This is recorded when navigation is committed, only for the domains which
are in the scope of back-forward cache experiment.
</summary>
</histogram>
<histogram name="BackForwardCache.Restore.DisableEvictionDelay" units="ms"
expires_after="2021-10-01">
<owner>carlscab@google.com</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Delay introduced by the IPC round trips to disable eviction in all the
renderers of a page stored in the back-forward cache. That is, the interval
of time between sending an SetPageLifecycleState IPC to each renderer and
receiving all the responses.
Recorded on reception of the last ACK reply. We added this histogram to
measure the impact of this extra round trip to the renderer when restoring a
page from the back-forward cache.
</summary>
</histogram>
<histogram name="BackForwardCache.Restore.NavigationToFirstPaint" units="ms"
expires_after="2021-10-01">
<owner>sreejakshetty@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</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.SameSite.ActionAfterPagehide2"
enum="BackForwardCacheActionAfterPagehide" expires_after="2021-09-19">
<owner>rakina@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<owner>bfcache-dev@chromium.org</owner>
<summary>
Records occurences of certain actions triggered by script running on a page
after the pagehide event gets dispatched in the page, which might be
possible if we dispatch the pagehide event without unloading/freezing the
page (only happens when we're doing a same-site navigation and we did a
proactive BrowsingInstance swap but we're reusing the old page's process).
Note: We will only track actions that might affect the user after we've
navigated away from the old page, such as modifications to storage,
navigations, or sending/receiving postMessage.
Note 2: We will not track actions taken when the unload event is currently
in progress, which means the page is not actually stored in the back-forward
cache and the actions are expected to happen after pagehide.
</summary>
</histogram>
<histogram
name="BackForwardCache.UnexpectedRendererToBrowserMessage.InterfaceName"
enum="MojoInterfaceName" expires_after="2021-08-09">
<owner>carlscab@google.com</owner>
<owner>bfcache-dev@chromium.org</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="Navigation.BackForward.AllBackTargetsSkippable" enum="Boolean"
expires_after="2019-12-31">
<owner>shivanisha@chromium.org</owner>
<owner>csharrison@chromium.org</owner>
<summary>
This metric logs true if all the previous entries are marked to be skipped
on back/forward button via the history manipulation intervention. This is
logged when back button is pressed (see crbug.com/907167). The goal of the
intervention is to intervene against pages that manipulate browser history
such that the user is not able to use the back button to go to the previous
site they interacted with.
</summary>
</histogram>
<histogram name="Navigation.BackForward.BackTargetSkipped" units="units"
expires_after="M85">
<owner>shivanisha@chromium.org</owner>
<owner>csharrison@chromium.org</owner>
<summary>
This metric counts the number of entries the history manipulation
intervention would have skipped when the user presses the back button (see
crbug.com/907167). The goal of the intervention is to intervene against
pages that manipulate browser history such that the user is not able to use
the back button to go to the previous site they interacted with.
</summary>
</histogram>
<histogram name="Navigation.BackForward.CacheFlags" enum="NavigationCacheEnum"
expires_after="M85">
<owner>clamy@chromium.org</owner>
<summary>The cache flags set on back-forward navigations.</summary>
</histogram>
<histogram name="Navigation.BackForward.ForwardTargetSkipped" units="units"
expires_after="M85">
<owner>shivanisha@chromium.org</owner>
<owner>csharrison@chromium.org</owner>
<summary>
This metric counts the number of entries the history manipulation
intervention would have skipped when the user presses the forward button
(see crbug.com/907167). The goal of the intervention is to intervene against
pages that manipulate browser history such that the user is not able to use
the back button to go to the previous site they interacted with.
</summary>
</histogram>
<histogram name="Navigation.BackForward.NavigatingToEntryMarkedToBeSkipped"
enum="Boolean" expires_after="2019-12-31">
<owner>shivanisha@chromium.org</owner>
<owner>csharrison@chromium.org</owner>
<summary>
This metric logs true if the existing entry being navigated to is marked to
be skipped on back/forward UI. This is logged at the start of navigation
initiated using long-press back/forward button.
</summary>
</histogram>
<histogram name="Navigation.BackForward.SetShouldSkipOnBackForwardUI"
enum="Boolean" expires_after="M85">
<owner>shivanisha@chromium.org</owner>
<owner>csharrison@chromium.org</owner>
<summary>
Whether an entry in the back-forward list is marked to be skipped on
subsequent back/forward button clicks as part of the history manipulation
intervention. This is logged when the entry is navigated away from. The goal
is to intervene against pages that manipulate browser history such that the
user is not able to use the back button to go to the previous site they
interacted with.
</summary>
</histogram>
<histogram name="Navigation.BackForward.WasCached"
enum="NavigationWasServedFromCache" expires_after="M85">
<owner>clamy@chromium.org</owner>
<summary>Whether the back-forward navigation was served from cache.</summary>
</histogram>
<histogram name="Navigation.ClearSiteData.Duration" units="ms"
expires_after="M77">
<owner>msramek@chromium.org</owner>
<summary>
Recorded when a navigation is deferred while clearing site data. Indicates
how much time the clearing took.
</summary>
</histogram>
<histogram name="Navigation.ClearSiteData.Parameters"
enum="ClearSiteDataParameters" expires_after="M77">
<owner>msramek@chromium.org</owner>
<summary>
The parameters of the Clear-Site-Data header. Recorded when the header is
successfully parsed.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.ErrorCode" enum="NetErrorCodes"
expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logs the error code for each navigation commit timeout. This will be used to
debug http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.IsMainFrame" enum="BooleanMainFrame"
expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logs whether this was a main frame navigation for each navigation commit
timeout. This will be used to debug http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.IsRendererProcessReady"
enum="BooleanReady" expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logged with the status of the renderer process for each navigation commit
timeout. This will be used to debug http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.NetworkServiceAvailability"
enum="NetworkServiceAvailability" expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logged with the status of the network service for each navigation commit
timeout. This will be used to debug http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.NetworkServiceLastCrashTime"
units="ms" expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logged with the time since the last network service crash if available for
each navigation commit timeout. This will be used to debug
http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.NetworkServicePingTime" units="ms"
expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logs the time it takes to make a round trip call to the network service for
each navigation commit timeout. This will be used to debug
http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.CommitTimeout.Scheme" enum="NavigationURLScheme"
expires_after="M82">
<owner>cduvall@chromium.org</owner>
<owner>cmumford@chromium.org</owner>
<summary>
Logged with the navigation URL scheme for each navigation commit timeout.
This will be used to debug http://crbug.com/934317.
</summary>
</histogram>
<histogram name="Navigation.DownloadPolicy.LogArbitraryPolicyPerDownload"
enum="NavigationDownloadPolicy" expires_after="2020-11-01">
<owner>csharrison@chromium.org</owner>
<owner>yaoxia@chromium.org</owner>
<summary>
When a navigation results in a download, logs the download policy applied to
that navigation. This is logged once per download and when multiple policies
exist, an arbitrary one will be chosen.
</summary>
</histogram>
<histogram name="Navigation.DownloadPolicy.LogPerPolicyApplied"
enum="NavigationDownloadPolicy" expires_after="2020-11-01">
<owner>csharrison@chromium.org</owner>
<owner>yaoxia@chromium.org</owner>
<summary>
When a navigation results in a download, for each download policy applied to
that navigation, logs the policy.
</summary>
</histogram>
<histogram name="Navigation.EngagementTime.HTTP" units="ms" expires_after="M94">
<owner>estark@chromium.org</owner>
<owner>security-enamel@chromium.org</owner>
<summary>
The amount of time that an HTTP page was in the foreground. Recorded on
every page close/transition.
</summary>
</histogram>
<histogram name="Navigation.EngagementTime.HTTPS" units="ms"
expires_after="M94">
<owner>estark@chromium.org</owner>
<owner>security-enamel@chromium.org</owner>
<summary>
The amount of time that an HTTPS page was in the foreground. Recorded on
every page close/transition.
</summary>
</histogram>
<histogram name="Navigation.EngagementTime.Ratio" units="%" expires_after="M94">
<owner>estark@chromium.org</owner>
<owner>security-enamel@chromium.org</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.Home.IsChromeInternal" enum="Boolean"
expires_after="never">
<!-- expires-never: part of top-line metric (internal: go/chrome-browser-nsm) -->
<owner>mpearson@chromium.org</owner>
<owner>amaralp@chromium.org</owner>
<owner>chrome-analysis-team@google.com</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.IOSNullContextInDidFailProvisionalNavigation"
enum="Boolean" expires_after="M85">
<obsolete>
Removed from code in Jan 2021.
</obsolete>
<owner>ajuma@chromium.org</owner>
<owner>gambard@chromium.org</owner>
<summary>
Logged when NavigationContext is null inside -[WKNavigationDelegate
webView:didFailProvisionalNavigation]. If Chrome stopped logging this metric
it means that it is now safe to remove workaround for
https://bugs.webkit.org/show_bug.cgi?id=198794.
</summary>
</histogram>
<histogram name="Navigation.IsLockedProcess" enum="NavigationIsLockedProcess"
expires_after="2021-12-21">
<owner>alexmos@chromium.org</owner>
<owner>lukasza@chromium.org</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="2021-12-21">
<owner>alexmos@chromium.org</owner>
<owner>lukasza@chromium.org</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.IsSameBrowsingInstance"
enum="NavigationIsSameBrowsingInstance" expires_after="2021-10-10">
<owner>arthursonzogni@chromium.org</owner>
<owner>clamy@chromium.org</owner>
<owner>nasko@chromium.org</owner>
<summary>
Whether a main frame navigation led to a change of BrowsingInstance or not.
</summary>
</histogram>
<histogram name="Navigation.IsSameProcess" enum="NavigationIsSameProcess"
expires_after="M85">
<owner>clamy@chromium.org</owner>
<owner>nasko@chromium.org</owner>
<summary>Whether the navigation led to a change of process or not.</summary>
</histogram>
<histogram name="Navigation.IsSameSiteInstance"
enum="NavigationIsSameSiteInstance" expires_after="2021-09-12">
<owner>arthursonzogni@chromium.org</owner>
<owner>clamy@chromium.org</owner>
<owner>nasko@chromium.org</owner>
<summary>
Whether the navigation led to a change of SiteInstance or not.
</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>boliu@chromium.org</owner>
<owner>alexmos@chromium.org</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="2021-08-01">
<owner>michaelpg@chromium.org</owner>
<owner>yilkal@chromium.org</owner>
<owner>cros-families-eng@google.com</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.MaxFrameCount" units="frames"
expires_after="2021-10-04">
<owner>michaelpg@chromium.org</owner>
<owner>yilkal@chromium.org</owner>
<owner>cros-families-eng@google.com</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.SiteEngagementLevel"
enum="SiteEngagementLevel" expires_after="2021-10-10">
<owner>meacer@chromium.org</owner>
<owner>security-enamel@chromium.org</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.MainFrameFormSubmission.SiteEngagementLevel"
enum="SiteEngagementLevel" expires_after="2021-04-04">
<owner>meacer@chromium.org</owner>
<owner>security-enamel@chromium.org</owner>
<summary>
Site engagement level of the URL of the top frame of a form submission. This
is a subset of Navigation.MainFrame.SiteEngagementLevel.
</summary>
</histogram>
<histogram name="Navigation.MainFrameHasRTLDomain2" enum="Boolean"
expires_after="M92">
<owner>cthomp@chromium.org</owner>
<owner>security-enamel@chromium.org</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.
</summary>
</histogram>
<histogram name="Navigation.MainFrameHasRTLDomainDifferentPage2" enum="Boolean"
expires_after="2021-10-10">
<owner>cthomp@chromium.org</owner>
<owner>security-enamel@chromium.org</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="2021-10-04">
<owner>rhalavati@chromium.org</owner>
<owner>chrome-privacy-core@google.com</owner>
<summary>
The browser profile type for each main-frame navigation, recorded after
navigation completion, including NTP.
</summary>
</histogram>
<histogram name="Navigation.MainFrameScheme2" enum="NavigationScheme"
expires_after="2021-06-01">
<owner>elawrence@chromium.org</owner>
<owner>estark@chromium.org</owner>
<summary>
The scheme of the URL for each main-frame navigation. This is only recorded
for finished navigations and not attempts.
</summary>
</histogram>
<histogram name="Navigation.MainFrameSchemeDifferentPage2"
enum="NavigationScheme" expires_after="2021-10-04">
<owner>elawrence@chromium.org</owner>
<owner>estark@chromium.org</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.MainFrameSchemeDifferentPageOTR2"
enum="NavigationScheme" expires_after="2021-10-10">
<owner>elawrence@chromium.org</owner>
<owner>estark@chromium.org</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="2021-06-01">
<owner>elawrence@chromium.org</owner>
<owner>estark@chromium.org</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.
</summary>
</histogram>
<histogram name="Navigation.NavigationURLLoaderImplIOPostTime"
units="microseconds" expires_after="M79">
<owner>jam@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<summary>
The sum of all the times spent posting tasks between the UI and IO threads
inside NavigationURLLoaderImpl. Recorded when each frame navigation gets the
response.
Note: This metric drops reports on clients with low-resolution clocks, which
means these reports will be biased against a portion of the population on
Windows. See Windows.HasHighResolutionTimeTicks for the affected sample.
</summary>
</histogram>
<histogram name="Navigation.OnBeforeUnloadOverheadTime" units="ms"
expires_after="M89">
<owner>clamy@chromium.org</owner>
<owner>nasko@chromium.org</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.OnReceiveResponseToOnStartLoadingResponseBody"
units="ms" expires_after="M85">
<owner>falken@chromium.org</owner>
<owner>chrome-loading@google.com</owner>
<summary>
Time between the two messages OnReceiveResponse and
OnStartLoadingResponseBody as observed by the browser process during a
navigation by NavigationURLLoader::URLLoaderRequestController. The idea is
to see whether there is a performance cost in having two separate messages,
as the plan is to combine them into one.
</summary>
</histogram>
<histogram name="Navigation.OriginAgentCluster.Result"
enum="OriginAgentClusterEndResult" expires_after="2022-01-26">
<owner>alexmos@chromium.org</owner>
<owner>creis@chromium.org</owner>
<owner>wjmaclean@chromium.org</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.
</summary>
</histogram>
<histogram name="Navigation.PolicyBlocklistNavigationThrottle.PolicyLoadDelay"
units="ms" expires_after="2021-11-01">
<owner>ydago@chromium.org</owner>
<owner>pastarmovj@chromium.org</owner>
<summary>
The time spent waiting for policies to load before checking a navigation
against url blocking policies.
</summary>
</histogram>
<histogram
name="Navigation.PolicyBlocklistNavigationThrottle.PolicyLoadTimeout"
enum="Boolean" expires_after="2021-11-01">
<owner>ydago@chromium.org</owner>
<owner>pastarmovj@chromium.org</owner>
<summary>
Records if the policy load delay before PolicyBlocklistNavigationThrottle
checks a navigation against url blocking policies timed out. In case of a
timeout, the navigation resumes ignoring potential policy restrictions.
</summary>
</histogram>
<histogram name="Navigation.ReadyToCommitUntilCommit2" units="ms"
expires_after="2021-10-09">
<owner>clamy@chromium.org</owner>
<owner>nasko@chromium.org</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.RendererDidNavigateTime.{FrameType}" units="ms"
expires_after="2021-10-15">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</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.RequestBeginMainFrameNotExpectedCrash"
enum="BooleanPresent" expires_after="2021-08-22">
<owner>rakina@chromium.org</owner>
<owner>dcheng@chromium.org</owner>
<summary>
Logs cases where ChromeClientImpl::RequestBeginMainFrameNotExpected() is
about to crash, which will trigger crbug.com/838348. This is used to trigger
traces to be uploaded to analyze what happened in these traces.
</summary>
</histogram>
<histogram name="Navigation.RequiresDedicatedProcess"
enum="NavigationRequiresDedicatedProcess" expires_after="2021-12-21">
<owner>alexmos@chromium.org</owner>
<owner>lukasza@chromium.org</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="2021-12-21">
<owner>alexmos@chromium.org</owner>
<owner>lukasza@chromium.org</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.SecureSchemeHasSSLStatus" enum="BooleanPresent"
expires_after="M85">
<owner>jam@chromium.org</owner>
<summary>
True counts the events when a https URL commits with a SSL certificate.
False is when the certificate is missing. This should be at 100%, anything
less is probably a bug.
</summary>
</histogram>
<histogram name="Navigation.StartToCommit" units="ms"
expires_after="2021-10-09">
<owner>nasko@chromium.org</owner>
<owner>csharrison@chromium.org</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.ThrottleDeferTime.{Event}" units="ms"
expires_after="2022-03-11">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures time a navigation throttle was deferred when on {Event}. Logged
every time a throttle defers a navigation.
</summary>
<token key="Event" variants="NavigationThrottleEvents"/>
</histogram>
<histogram name="Navigation.ThrottleExecutionTime.{Event}" units="ms"
expires_after="2022-03-11">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures time a navigation throttle took to execute {Event}. Logged every
time a throttle runs.
</summary>
<token key="Event" variants="NavigationThrottleEvents"/>
</histogram>
<histogram name="Navigation.TimeToReadyToCommit2" units="ms"
expires_after="2021-10-09">
<owner>clamy@chromium.org</owner>
<owner>nasko@chromium.org</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.TimeToURLJobStart" units="ms" expires_after="M85">
<obsolete>
Removed from code in M89 (Nov 2020), after expiring in M85.
</obsolete>
<owner>carlosk@chromium.org</owner>
<summary>
Time between the start of a browser-started navigation request and the
reception of a corresponding ResourceRequest in the network stack.
</summary>
</histogram>
<histogram
name="Navigation.URLLoaderNetworkService.OnCompleteCertificateChainsSize"
units="KB" expires_after="M78">
<owner>estark@chromium.org</owner>
<summary>
When the navigation URL loader receives an OnComplete message from the
network service that contains certificate chains, this histogram records the
size in KB of those pickled certificate chains. This histogram is recorded
by the navigation URLLoader for navigations that fetch from network, for
every request which contains an SSLInfo in its OnComplete notification.
</summary>
</histogram>
<histogram name="Navigation.URLLoaderNetworkService.OnCompleteHasSSLInfo"
enum="BooleanPresent" expires_after="M77">
<owner>estark@chromium.org</owner>
<summary>
Whether the network service's OnComplete message to the navigation URL
loader contains an SSLInfo, which should only be present for main-frame
requests with certificate errors. This histogram is recorded for every
request completion by the navigation URL loader that fetches from network.
</summary>
</histogram>
<histogram name="Navigation.VerifyDidCommitParams"
enum="VerifyDidCommitParamsDifference" expires_after="2021-08-22">
<owner>rakina@chromium.org</owner>
<owner>altimin@chromium.org</owner>
<summary>
Logs inconsistencies between browser- vs renderer-calculated values of
DidCommitProvisionalLoadParams which are detected in RenderFrameHostImpl's
VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch(). This is used
to trigger traces to be uploaded to analyze what happened in these
navigations.
</summary>
</histogram>
<histogram base="true" name="NavigationPredictor.ActionTaken"
enum="NavigationPredictorActionTaken" expires_after="M85">
<owner>tbansal@chromium.org</owner>
<summary>
Tracks action taken by navigation predictor. Recorded at the time of page
load.
</summary>
</histogram>
<histogram base="true" name="NavigationPredictor.CountOfStartedPrerenders"
units="count" expires_after="M85">
<owner>tbansal@chromium.org</owner>
<owner>ryansturm@chromium.org</owner>
<summary>
Reports data about the clicked link with regards to whether it was
prerendered by the Navigation Predictor. Recorded when the page is navigated
away from.
</summary>
</histogram>
<histogram base="true" name="NavigationPredictor.CountOfURLsAboveThreshold"
units="count" expires_after="M85">
<owner>tbansal@chromium.org</owner>
<owner>ryansturm@chromium.org</owner>
<summary>
Reports data about the clicked link with regards to whether it was
prerendered by the Navigation Predictor. Recorded when the page is navigated
away from.
</summary>
</histogram>
<histogram base="true" name="NavigationPredictor.CountOfURLsInPredictedSet"
units="count" expires_after="M89">
<owner>tbansal@chromium.org</owner>
<owner>ryansturm@chromium.org</owner>
<summary>
Reports data about the clicked link with regards to whether it was
prerendered by the Navigation Predictor. Recorded when the page is navigated
away from.
</summary>
</histogram>
<histogram name="NavigationPredictor.ExternalAndroidApp.CountPredictedURLs"
units="Count" expires_after="2021-07-26">
<obsolete>
Predictions from external Android apps are no longer supported. Removed
2021/04.
</obsolete>
<owner>sophiechang@chromium.org</owner>
<owner>tbansal@chromium.org</owner>
<summary>
Count of likely URLs for the next navigation as reported by an external
Android app via mayLaunchUrl() Android API. Recorded at the time the
prediction was received by Chrome.
</summary>
</histogram>
<histogram name="NavigationPredictor.IsPubliclyRoutable" enum="Boolean"
expires_after="2021-08-22">
<owner>tbansal@chromium.org</owner>
<owner>ryansturm@chromium.org</owner>
<summary>
Set to true if the IP address of the origin of the main frame URL is
publically routable. Recorded everytime a preconnect attempt is made by the
navigation predictor.
</summary>
</histogram>
<histogram base="true" name="NavigationPredictor.LinkClickedPrerenderResult"
enum="NavigationPredictorLinkClickedPrerenderResult" expires_after="M85">
<owner>ryansturm@chromium.org</owner>
<owner>tbansal@chromium.org</owner>
<summary>
Reports data about the clicked link with regards to whether it was
prerendered by the Navigation Predictor. Recorded when the user clicks a
link.
</summary>
</histogram>
<histogram
name="NavigationPredictor.SearchEnginePreconnector.IsBrowserAppLikelyInForeground"
enum="BooleanForeground" expires_after="M95">
<owner>tbansal@chromium.org</owner>
<owner>ryansturm@chromium.org</owner>
<summary>
Reports if the browser app was in foreground when a preconnect attempt was
made to the default search engine.
</summary>
</histogram>
<histogram name="NavigationSuggestion.DigitalAssetLinks.Event"
enum="NavigationSuggestionDigitalAssetLinkValidationEvent"
expires_after="2021-06-20">
<owner>meacer@chromium.org</owner>
<owner>security-enamel@chromium.org</owner>
<summary>
Tracks events when the currently navigated domain name is a lookalike and a
Digital Asset Link validation must be made between the lookalike and target
sites. If both sites serve valid asset links pointing to each other, the
lookalike warning UI is surpressed.
</summary>
</histogram>
<histogram name="NavigationSuggestion.DigitalAssetLinks.ValidationTime"
units="ms" expires_after="2021-05-30">
<owner>meacer@chromium.org</owner>
<owner>security-enamel@chromium.org</owner>
<summary>
Records the time duration to validate lookalike and target manifests. Only
recorded when both manifests are validated.
</summary>
</histogram>
<histogram name="NavigationSuggestion.Event" enum="NavigationSuggestionEvent"
expires_after="M89">
<obsolete>
Replaced with NavigationSuggestion.Event2 on 2020/10 because of
crbug.com/1136296.
</obsolete>
<owner>meacer@chromium.org</owner>
<owner>security-enamel@chromium.org</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.
</summary>
</histogram>
<histogram name="NavigationSuggestion.Event2" enum="NavigationSuggestionEvent"
expires_after="2021-08-22">
<owner>meacer@chromium.org</owner>
<owner>security-enamel@chromium.org</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>
</histograms>
</histogram-configuration>