blob: cbff430a43c4b4e598c49398d64789299221c0f6 [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 Net 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
chromium-metrics-reviews@google.com.
-->
<histogram-configuration>
<histograms>
<variants name="URLLoaderThrottleStages">
<variant name="BeforeWillProcessResponse"/>
<variant name="WillOnCompleteWithError"/>
<variant name="WillProcessResponse"/>
<variant name="WillRedirectRequest"/>
<variant name="WillStartRequest"/>
</variants>
<variants name="WillProcessResponseThrottleNames">
<variant name="MimeSniffingThrottle"/>
<variant name="SafeBrowsingBrowserThrottle"/>
<variant name="SafeBrowsingRendererThrottle"/>
</variants>
<variants name="WillStartRequestThrottleNames">
<variant name="FrameRequestBlockerThrottle"/>
<variant name="PrerenderThrottle"/>
<variant name="SubresourceRedirectThrottle"/>
</variants>
<histogram name="HttpCache.AccessToDone" units="ms" expires_after="M104">
<owner>morlovich@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
For every http cache transaction with a pattern (see HttpCache.Pattern), the
time from the first access to the disk cache until the transaction was done.
</summary>
</histogram>
<histogram base="true" name="HttpCache.AfterSend" units="ms"
expires_after="M81">
<obsolete>
Expired in M82.
</obsolete>
<owner>morlovich@chromium.org</owner>
<summary>
For http cache transactions in which a network request was sent, the time
elapsed between sending it over the network until the transaction was done.
</summary>
</histogram>
<histogram name="HttpCache.BeforeSend" units="ms" expires_after="M104">
<owner>morlovich@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
For http cache transactions in which a network request was sent, the time
elapsed between beginning the request and sending it over the network; this
is the time spent accessing the disk cache.
</summary>
</histogram>
<histogram name="HttpCache.CantConditionalizeCause"
enum="HttpCacheValidationCause" expires_after="M85">
<obsolete>
Expired in M86.
</obsolete>
<owner>jkarlin@chromium.org</owner>
<summary>
For each request that results in an unconditionalizable network request, the
cause for the request.
</summary>
</histogram>
<histogram name="HttpCache.CantConditionalizeZeroFreshnessFromMemHint"
enum="Boolean" expires_after="M81">
<obsolete>
Expired in M82.
</obsolete>
<owner>morlovich@chromium.org</owner>
<summary>
For each request with HttpCache.CantConditionalizeCause == Zero Freshness,
this is true iff the zero freshness status was determined by looking at
in-memory hints in disk cache index, rather than by opening the entry and
looking at headers.
</summary>
</histogram>
<histogram name="HttpCache.EntryLockWait" units="ms" expires_after="M87">
<obsolete>
Expired in M88.
</obsolete>
<owner>jkarlin@chromium.org</owner>
<owner>morlovich@chromium.org</owner>
<summary>
The time spent waiting for write lock on a disk cache entry.
</summary>
</histogram>
<histogram name="HttpCache.HardReset" enum="Boolean" expires_after="2021-06-15">
<obsolete>
Expired in June 2021.
</obsolete>
<owner>shivanisha@chromium.org</owner>
<owner>jkarlin@chromium.org</owner>
<summary>
Whether the HttpCache was forced to reset upon creation, effectively
clearing out its previous content. This is recorded when the cache is
created for the browsing session.
</summary>
</histogram>
<histogram name="HttpCache.MaxFileSizeOnInit" units="KB"
expires_after="2022-02-20">
<owner>shivanisha@chromium.org</owner>
<owner>jkarlin@chromium.org</owner>
<summary>
Max file size allowed to be cached in the http cache. This is logged at the
time the backend is created.
</summary>
</histogram>
<histogram name="HttpCache.NetworkIsolationKeyPresent2"
enum="NetworkIsolationKeyPresent" expires_after="2020-09-10">
<obsolete>
Expired in June 2021.
</obsolete>
<owner>jkarlin@chromium.org</owner>
<owner>shivanisha@chromium.org</owner>
<summary>
Records whether a cache request has a network isolation key set or not,
which is used for double-keying.
</summary>
</histogram>
<histogram name="HttpCache.ParallelWritingPattern"
enum="HttpCacheParallelWritingPattern" expires_after="M77">
<obsolete>
Expired in M78.
</obsolete>
<owner>shivanisha@chromium.org</owner>
<summary>
Records whether a transaction either created a Writers object when one
didn't exist, or joined an existing Writers object, or why it failed to do
so (e.g., it's a range request, it's not a GET request, etc.).
</summary>
</histogram>
<histogram name="HttpCache.Pattern" enum="HttpCachePattern"
expires_after="2022-06-26">
<owner>morlovich@chromium.org</owner>
<owner>jkarlin@chromium.org</owner>
<summary>For each http cache transaction, the recorded pattern.</summary>
</histogram>
<histogram name="HttpCache.ReadErrorNonRestartable" enum="NetErrorCodes"
expires_after="M85">
<obsolete>
Expired in M86.
</obsolete>
<owner>morlovich@chromium.org</owner>
<summary>Net error results from non-restartable cache read errors.</summary>
</histogram>
<histogram name="HttpCache.ReadErrorRestartable" enum="NetErrorCodes"
expires_after="M85">
<obsolete>
Expired in M86.
</obsolete>
<owner>morlovich@chromium.org</owner>
<summary>Net error results from restartable cache read errors.</summary>
</histogram>
<histogram name="HttpCache.ValidationCause" enum="HttpCacheValidationCause"
expires_after="M77">
<obsolete>
Expired in M78.
</obsolete>
<owner>jkarlin@chromium.org</owner>
<summary>For each validation attempt, the cause for the validation.</summary>
</histogram>
<histogram name="Net.AlternateProtocolBrokenLocation"
enum="BrokenAlternateProtocolLocation" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Breakdown of the locations when SetBrokenAlternateProtocol is called.
</summary>
</histogram>
<histogram name="Net.AlternateProtocolUsage" enum="AlternateProtocolUsage"
expires_after="2022-07-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Breakdown of how requests which could potentially make use of an alternate
protocol use or don't use the protocol.
</summary>
</histogram>
<histogram name="Net.AlternateProtocolUsageGoogle"
enum="AlternateProtocolUsage" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Breakdown of how requests which could potentially make use of an alternate
protocol use or don't use the protocol, for connections to Google servers.
</summary>
</histogram>
<histogram name="Net.AlternateServiceFailed" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>tbansal@chromium.org</owner>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Positive net error codes that failed alternative protocol requests end with.
Recorded only when an alternative job fails, and the main job succeeds.
</summary>
</histogram>
<histogram name="Net.AlternativeServiceTypeForRequest"
enum="AlternativeServiceType" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Information about the AlternativeService used for each request.
</summary>
</histogram>
<histogram name="Net.Certificate.AndroidAIAFetchError" enum="NetErrorCodes"
expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
The net error code returned after attempting an AIA fetch on Android.
Recorded once per intermediate that Chrome attempts to fetch via AIA on
Android.
</summary>
</histogram>
<histogram name="Net.Certificate.IgnoreCertificateErrorsSPKIListPresent"
enum="BooleanPresent" expires_after="M77">
<owner>martinkr@google.com</owner>
<summary>
Whether certificate validation was disabled for a set of public keys because
the --ignore-certificate-errors-spki-list switch was set on startup.
</summary>
</histogram>
<histogram name="Net.Certificate.IgnoreErrors" enum="BooleanEnabled"
expires_after="M77">
<owner>martinkr@google.com</owner>
<summary>
Whether certificate validation was disabled because the
--ignore-certificate-errors switch was set on startup.
</summary>
</histogram>
<histogram name="Net.Certificate.TLSFeatureExtensionWithPrivateRoot"
enum="Boolean" expires_after="M77">
<owner>estark@chromium.org</owner>
<summary>
This histogram is recorded every time Chrome successfully verifies a
certificate that chains to a private root. A value of true indicates that
the certificate contains the TLS Feature Extension, and false indicates that
it doesn't.
</summary>
</histogram>
<histogram name="Net.Certificate.TLSFeatureExtensionWithPrivateRootHasOCSP"
enum="Boolean" expires_after="M77">
<owner>estark@chromium.org</owner>
<summary>
This histogram is recorded every time Chrome successfully verifies a
certificate that chains to a private root and the certificate contains the
TLS Feature Extension. A value of true indicates that the connection had an
OCSP response stapled, and a value of false indicates that it did not.
</summary>
</histogram>
<histogram name="Net.Certificate.TrustAnchor.Request" enum="NetTrustAnchors"
expires_after="never">
<!-- expires-never: Used for CA risk assessment ( https://goto.google.com/chrome-root-ca-stats ) -->
<owner>rsleevi@chromium.org</owner>
<summary>
The SHA-256 hash of the subjectPublicKeyInfo of the most-specific trust
anchor encountered in a successfully-verified certificate chain, during an
HTTP URL request. The associated root certificate can be looked up using
https://crt.sh/?spkisha256= .
</summary>
</histogram>
<histogram name="Net.Certificate.TrustAnchor.Verify" enum="NetTrustAnchors"
expires_after="never">
<!-- expires-never: Used for CA risk assessment ( https://goto.google.com/chrome-root-ca-stats ) -->
<owner>rsleevi@chromium.org</owner>
<summary>
The SHA-256 hash of the subjectPublicKeyInfo of the most-specific trust
anchor encountered in a successfully-verified certificate chain, during
verification time. The associated root certificate can be looked up using
https://crt.sh/?spkisha256= .
</summary>
</histogram>
<histogram name="Net.Certificate.TrustAnchor.VerifyOutOfDate"
enum="BooleanOutOfDate" expires_after="never">
<!-- expires-never: Used for CA risk assessment ( https://goto.google.com/chrome-root-ca-stats ) -->
<owner>rsleevi@chromium.org</owner>
<summary>
This histogram is recorded every time Chrome successfully validates a
certificate, but cannot determine a public trust anchor from the verified
chain. A value of true indicates that the trust anchor list is out of date,
as the OS believes a public trust anchor is being used, but the built-in
list does not know about this trust anchor, while a value of false indicates
that a public trust anchor was not used, thus there is no evidence that the
list is out of date. This histogram is temporary until the transition to a
unified root store (in source), at which point, the OS store will no longer
be consulted for known roots.
</summary>
</histogram>
<histogram name="Net.Certificate.VerificationSuccessAfterAIAFetchingNeeded"
enum="BooleanSuccess" expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
Whether or not certificate verification was successful after attempting AIA
fetching on Android. Recorded once per certificate verification on Android
that resulted in an untrusted-root error without AIA fetching.
</summary>
</histogram>
<histogram base="true"
name="Net.CertificateTransparency.ConnectionComplianceStatus2"
enum="CTComplianceStatus" expires_after="M85">
<obsolete>
Expired in M85, code removed in M98
</obsolete>
<!-- Name completed by histogram_suffixes name="CertificateTransparencyProtocol" -->
<owner>estark@chromium.org</owner>
<summary>
The compliance of each connection with the Certificate Transparency policy,
recorded once on connection setup unless CT evaluation has been disabled for
that connection or the certificate is invalid. Connections can be compliant,
or they can be non-compliant for one of several reasons (not enough Signed
Certificate Timestamps [SCTs], not diverse enough SCTs, or the build was old
so CT compliance wasn't checked). Not recorded for certificates that chain
to locally-installed roots.
</summary>
</histogram>
<histogram base="true"
name="Net.CertificateTransparency.CTRequiredConnectionComplianceStatus2"
enum="CTComplianceStatus" expires_after="M85">
<obsolete>
Expired in M85, code removed in M98
</obsolete>
<!-- Name completed by histogram_suffixes name="CertificateTransparencyProtocol" -->
<owner>estark@chromium.org</owner>
<summary>
The compliance of each connection with the Certificate Transparency policy,
for connections for which CT compliance is required for the connection to
succeed. (For example, CT compliance is required for certain Certificate
Authorities, or a site can opt in to having CT be required.) Recorded once
on connection setup for applicable connections unless CT evaluation has been
disabled for that connection or the certificate is otherwise invalid. Not
recorded for certificates that chain to locally-installed roots.
</summary>
</histogram>
<histogram name="Net.CertificateTransparency.CTRequiredRequestComplianceStatus"
enum="CTComplianceStatus" expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
The compliance of each HTTP request with the Certificate Transparency
policy, for requests on connections for which CT compliance is required for
the connection to succeed. (For example, CT compliance is required for
certain Certificate Authorities, or a site can opt in to having CT be
required.) Recorded once on request completion for requests on applicable
connections, unless CT evaluation has been disabled for that connection or
the certificate is otherwise invalid. Not recorded when the request's
certificate chains to a locally-installed root.
</summary>
</histogram>
<histogram base="true" name="Net.CertificateTransparency.EVCompliance2"
enum="CTComplianceStatus" expires_after="M85">
<obsolete>
Expired in M85, code removed in M98
</obsolete>
<!-- Name completed by histogram_suffixes name="CertificateTransparencyProtocol" -->
<owner>estark@chromium.org</owner>
<summary>
The state of compliance with Certificate Transparency presence requirements
for each EV certificate. Recorded once on QUIC connection setup when the
connection uses an EV certificate unless CT evaluation has been disabled for
that connection or the certificate is invalid. Not recorded for certificates
that chain to locally-installed roots.
</summary>
</histogram>
<histogram name="Net.CertificateTransparency.RequestComplianceStatus"
enum="CTComplianceStatus" expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
The compliance of each HTTP request with the Certificate Transparency
policy, recorded once on request completion unless CT evaluation has been
disabled for that request's connection or the certificate is otherwise
invalid. A request's connection can be compliant, or it can be non-compliant
for one of several reasons (not enough Signed Certificate Timestamps [SCTs],
not diverse enough SCTs, or the build was old so CT compliance wasn't
checked). Not recorded when the request's certificate chains to a
locally-installed root.
</summary>
</histogram>
<histogram name="Net.CertificateTransparency.SCT.SingleVerificationTime"
units="microseconds" expires_after="M70">
<obsolete>
Expired after M70. Removed from code 2021-11.
</obsolete>
<owner>estark@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
Time to verify a single SCT (Signed Certificate Timestamps) when setting up
a TLS connection. Recorded each time a single SCT is verified. Includes not
just the signature verification but also other operations that are involved
in verifying an SCT, such as notifying observers and looking up the log that
issued the SCT.
</summary>
</histogram>
<histogram name="Net.CertificateTransparency.SCT.VerificationTime"
units="microseconds" expires_after="2022-07-03">
<owner>estark@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
Time to verify the SCTs (Signed Certificate Timestamps) when setting up a
TLS connection. Recorded on each connection setup where at least one SCT is
verified. Histogram was expired between M70 and M97. Histogram is only
reported for clients with high resolution clocks.
</summary>
</histogram>
<histogram name="Net.CertificateTransparency.SCTOrigin" enum="SCTOrigin"
expires_after="2022-07-03">
<owner>estark@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
The origin breakdown of Signed Certificate Timestamps (SCTs). Emitted once
for every SCT when first validated, which means 0 or more times during every
SSL connection establishment.
</summary>
</histogram>
<histogram name="Net.CertificateTransparency.SCTStatus" enum="SCTVerifyStatus"
expires_after="M85">
<owner>estark@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
Breakdown of Signed Certificate Timestamps (SCTs) validation status. Emitted
once for every SCT when first validated, which means 0 or more times during
every SSL connection establishment.
</summary>
</histogram>
<histogram name="Net.CertVerifier.InvalidRsaPssParams" enum="Boolean"
expires_after="2022-06-12">
<owner>bcb@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
While parsing an RSASSA-PSS signature algorithm, whether any invalid
parameters were encountered that currently are not enforced as parsing
errors.
</summary>
</histogram>
<histogram base="true" name="Net.CertVerifier.NameNormalizationPrivateRoots"
enum="NetCertificateNameNormalization" expires_after="2022-05-11">
<owner>mattm@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
Whether Name normalization was used in successfully validated certificate
chains, only recorded for chains ending in privately trusted roots. Suffixed
by the CertVerifyProc implementation.
</summary>
</histogram>
<histogram name="Net.CertVerifier.PathBuilderIterationCount" units="units"
expires_after="2022-06-26">
<owner>mattm@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
When using the builtin cert verifier, records the number of iterations taken
during path building for each attempted verification.
</summary>
</histogram>
<histogram name="Net.CertVerifier_First_Job_Latency" units="ms"
expires_after="never">
<!-- expires-never: core cert verifier metric; monitored by Chirps -->
<owner>mattm@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
The actual amount of time spent verifying a certificate using the underlying
cryptographic APIs. Because parallel verifications for the same certificate
may be coalesced, histograms such as Net.SSLCertVerificationTime may be
skewed, due to later verifications taking less overall time. This records
the overall time spent verifying the first job to capture initialization
costs.
</summary>
</histogram>
<histogram name="Net.CertVerifier_Job_Latency" units="ms" expires_after="never">
<!-- expires-never: core cert verifier metric; monitored by Chirps -->
<owner>rsleevi@chromium.org</owner>
<owner>mattm@chromium.org</owner>
<summary>
The actual amount of time spent verifying a certificate using the underlying
cryptographic APIs. Because parallel verifications for the same certificate
may be coalesced, histograms such as Net.SSLCertVerificationTime may be
skewed, due to later verifications taking less overall time. This records
the overall time spent verifying a single request, regardless of how many
parallel requests are being served by the verification.
</summary>
</histogram>
<histogram name="Net.CertVerifier_TrialComparisonResult"
enum="CertVerifierTrialComparisonResult" expires_after="2022-05-11">
<owner>mattm@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
If the CertDualVerificationTrial is enabled, each certificate verification
associated with a (non-incognito) profile which is opted-in to SBER2(Scout)
will record the outcome of comparing the primary verifier and secondary
verifier results.
</summary>
</histogram>
<histogram name="Net.ConnectionInfo.MainFrame" enum="ConnectionInfo"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Application protocol used for main frame resources. Logged by the renderer
only for request that accessed the network and have received response
headers.
</summary>
</histogram>
<histogram name="Net.ConnectionInfo.SubResource" enum="ConnectionInfo"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Application protocol used for subresources (resources other than main
frame). Logged by the renderer only for request that accessed the network
and have received response headers.
</summary>
</histogram>
<histogram name="Net.ContentDecodingFailed2" enum="NetFilterType2"
expires_after="M77">
<owner>mef@chromium.org</owner>
<owner>pauljensen@chromium.org</owner>
<summary>
For each CONTENT_DECODING_FAILED, record the filter that failed.
</summary>
</histogram>
<histogram name="Net.Cors.AccessCheckError" enum="CorsAccessCheckError"
expires_after="2022-05-01">
<owner>toyoshim@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
The distribution of CORS error types on the original network requests. This
reports whenever CORS checks detect an error on the original network
requests.
</summary>
</histogram>
<histogram name="Net.Cors.AccessCheckResult" enum="CorsAccessCheckResult"
expires_after="M102">
<owner>toyoshim@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
The distribution of CORS access check results. This reports whenever CORS
AccessCheck runs. This is recorded when a CORS enabled request receives a
response and completes CORS checks.
</summary>
</histogram>
<histogram name="Net.Cors.AccessCheckResult.NotSecureRequestor"
enum="CorsAccessCheckResult" expires_after="M102">
<owner>carlosil@chromium.org</owner>
<owner>estark@chromium.org</owner>
<summary>
The distribution of CORS access check results for not potentially
trustworthy requestors. This reports whenever CORS AccessCheck runs and the
requesting site origin is not potentially trustworthy.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCacheKeySize" units="bytes"
expires_after="2022-07-03">
<owner>toyoshim@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
The distribution of the key size in the CORS preflight cache. This counts
each key size when a new entry is added to the cache.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCacheResult" enum="CorsPreflightCacheResult"
expires_after="2022-06-26">
<owner>toyoshim@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
The distribution of the CORS preflight cache query results. This counts on
each cache query.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCheckError" enum="CorsAccessCheckError"
expires_after="2022-05-01">
<obsolete>
Superseded by Net.Cors.PreflightCheckError2 in 2021-12.
</obsolete>
<owner>toyoshim@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
The distribution of CORS error types on preflight requests. This reports
whenever CORS checks detect an error on a preflight request.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCheckError2" enum="CorsAccessCheckError"
expires_after="2022-05-01">
<owner>toyoshim@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
The distribution of CORS error types on preflight requests. This reports
whenever CORS checks detect an error on a preflight request. The
InvalidResponse case corresponds to net errors for which there was no CORS
error, e.g. CONNECTION_REFUSED, NX_DOMAIN, etc.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCheckWarning" enum="CorsAccessCheckError"
expires_after="2022-05-01">
<owner>titouan@chromium.org</owner>
<owner>clamy@chromium.org</owner>
<summary>
The distribution of CORS error types on preflight requests which are treated
as warnings. This reports whenever CORS checks detect an error on a
preflight request without failing the whole original network request, due to
being configured to ignore these failures.
</summary>
</histogram>
<histogram name="Net.CountOfBrokenAlternativeServices" units="services"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The number of broken alternative services loaded from the prefs file on
startup. Alternative services allow an origin server to specify additional
means of interacting with it on the network. A broken alternative service is
one whose most recent connection attempt failed and whose retry timeout
period has not yet expired. Recorded when broken alternative services are
loaded from the prefs file on startup.
</summary>
</histogram>
<histogram name="Net.CountOfQuicServerInfos" units="configs"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
This counts the number of server configs persisted in prefs file.
</summary>
</histogram>
<histogram name="Net.CountOfRecentlyBrokenAlternativeServices" units="services"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The number of recently broken alternative services loaded from the prefs
file on startup. Alternative services allow an origin server to specify
additional means of interacting with it on the network. A recently broken
alternative service is one whose most recent connection attempt failed.
Recorded when broken alternative services are loaded from the prefs file on
startup.
</summary>
</histogram>
<histogram name="Net.DataPipeUseForUrlLoader.Max" units="count"
expires_after="M88">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The maximum number of data pipes used for network::URLLoader in the network
service in every 20 minutes.
</summary>
</histogram>
<histogram name="Net.DataPipeUseForUrlLoader.Min" units="count"
expires_after="M88">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The minimum number of data pipes used for network::URLLoader in the network
service in every 20 minutes.
</summary>
</histogram>
<histogram name="Net.DataPipeUseForWebSocket.Max" units="count"
expires_after="M88">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The maximum number of data pipes used for network::WebSocket in the network
service in every 20 minutes.
</summary>
</histogram>
<histogram name="Net.DataPipeUseForWebSocket.Min" units="count"
expires_after="M88">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The minimum number of data pipes used for network::WebSocket in the network
service in every 20 minutes.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.AdditionalDnsQueryTypesEnabled"
enum="BooleanEnabled" expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not `prefs::kAdditionalDnsQueryTypesEnabled` is enabled. Recorded
at startup if disabled or whenever Chrome is believed to be
enterprise-managed (per the same detection as the default disabling of DoH).
Measures whether or not enterprise admins are setting the disable,
potentially due to issues encoutered with HTTPS/INTEGRITY query experiments.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.Compatible" enum="BooleanValid"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not the DNS configuration read from a nsswitch.conf file is
considered compatible with Chrome, that is that the configuration did not
contain any options that Chrome is unable to support using the built-in
resolver. Reported whenever a nsswitch.conf file is read by Chrome.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.FileChange" enum="BooleanChanged"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Counter enum recorded whenever `net::DnsConfigService` detects a change to
the nsswitch.conf DNS configuration file.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.HostsFound" enum="BooleanFound"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not the &quot;hosts:&quot; database was found in an nsswitch.conf
DNS configuration file. Reported whenever Chrome has successfully read the
nsswitch.conf file and is beginning to attempt to parse it.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.IncompatibleReason"
enum="NsswitchIncompatibleReason" expires_after="2022-01-15">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Reason enumeration of why a read and parsed nsswitch.conf DNS configuration
file was considered incompatible with Chrome, leading to Chrome's built-in
DNS resolver being disabled.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.IncompatibleService"
enum="NsswitchService" expires_after="2022-06-19">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumeration of the nsswitch.conf service that caused a compatibility issue,
leading to the nsswitch.conf DNS configuration being considered incompatible
with Chrome. Only emitted when a specific token is present in the
nsswitch.conf file, causing the incompatibility, e.g. because the service is
always incompatible with Chrome or because the service is configured with
incompatible actions.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.NumServices" units="#services"
expires_after="2022-01-15">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Number of services parsed from the nsswitch.conf DNS configuration file.
Reported whenever the file is read and parsed.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.Read" enum="BooleanReceived"
expires_after="2022-06-19">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not an attempt to read nsswitch.conf succeeded. May fail due to
missing file or filesystem issues, but does not consider it a failure if the
file is larger than the size limit (see Net.DNS.DnsConfig.Nsswitch.TooLarge
for that case). Reported for all attempts to read nsswitch.conf.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.TooLarge" enum="BooleanExceeded"
expires_after="2022-06-19">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not an attempt to read nsswitch.conf failed due to the file size
being unreasonably large. Reported for all attempts to read nsswitch.conf.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Resolv.Compatible" enum="BooleanValid"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not the DNS configuration read from a resolv.conf file is
considered compatible with Chrome, that is that the configuration did not
contain any options that Chrome is unable to support using the built-in
resolver. Reported whenever a resolv.conf file is successfully read by
Chrome.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Resolv.FileChange" enum="BooleanChanged"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Counter enum recorded whenever `net::DnsConfigService` detects a change to
the resolv.conf DNS configuration file.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Resolv.Read" enum="BooleanReceived"
expires_after="2022-06-19">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not an attempt to read resolv.conf succeeded and produced a
`__res_state` struct for Chrome to attempt to use. Reported on all attempts
to read the configuration.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Resolv.Valid" enum="BooleanValid"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not the DNS configuration read from a resolv.conf file is
considered &quot;valid&quot;, that is that it contains at least one DNS
server. Reported whenever a resolv.conf file is successfully read by Chrome.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.SecureDnsMode" enum="SecureDnsModeDetails"
expires_after="2022-05-11">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Records details of the secure DNS mode used to configure the host resolver
at construction of the network service.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.AdditionalHttps.Requested"
enum="UnsolicitedHttpsRecordStatus" expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Status of HTTPS DNS records received as additional records in a DnsTask
querying for HTTPS. This would represent a recurssive resolver that is
HTTPS-aware and performing followup queries on behalf of the client.
Recorded as DNS responses are parsed.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.AdditionalHttps.Unsolicited"
enum="UnsolicitedHttpsRecordStatus" expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Status of HTTPS DNS records received as additional records in a DnsTask
querying for a type other than HTTPS. Recorded as DNS responses are parsed.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.ErrorBeforeFallback.Fast" enum="NetErrorCodes"
expires_after="M77">
<obsolete>
Removed from code 2021-02.
</obsolete>
<owner>pauljensen@chromium.org</owner>
<owner>mef@chromium.org</owner>
<summary>
Counts of specific error codes returned by DnsTask. Only counts failures
that took less than 10ms, which are probably local failures.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.ErrorBeforeFallback.Slow" enum="NetErrorCodes"
expires_after="M77">
<obsolete>
Removed from code 2021-02.
</obsolete>
<owner>pauljensen@chromium.org</owner>
<owner>mef@chromium.org</owner>
<summary>
Counts of specific error codes returned by DnsTask. Only counts failures
that took at least 10ms, which are probably remote failures or connectivity
problems.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.Errors" enum="NetErrorCodes"
expires_after="M77">
<owner>pauljensen@chromium.org</owner>
<owner>mef@chromium.org</owner>
<summary>
Counts of specific error codes returned by DnsTask if a subsequent ProcTask
succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.HttpUpgrade" enum="DNS.HttpUpgradeResult"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumeration of whether or not a DNS-based http-&gt;https upgrade is
triggered by HostResolver and the reason why. Recorded for all successfully
completed HTTPS record transactions.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.SuccessTime" units="ms"
expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of time taken by DnsTask (the grouping of all individual DNS
queries for a single instance of resolving a name) in resolutions that
succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.SvcbHttpsTransactionError"
enum="DNS.SvcbHttpsTransactionError" expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumeration of whether or not an HTTPS (SVCB) record transaction succeeded
and whether or not any failure is fatal to the DnsTask. Recorded for all
completed HTTPS record transactions.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.AttemptType" enum="DNS.AttemptType"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumeration of the logic path used (e.g. different protocols) for each
started DnsAttempt (the representation of an individual network request to a
DNS server).
</summary>
</histogram>
<histogram base="true" name="Net.DNS.DnsTransaction.Insecure.FailureTime"
units="ms" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by an insecure DnsTransaction to fail.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.DnsTransaction.Insecure.SuccessTime"
units="ms" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by an insecure DnsTransaction to succeed.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.DnsTransaction.SecureNotValidated.FailureError"
enum="NetErrorCodes" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Counts of specific error codes returned by secure DnsTransactions to a DoH
server that is unavailable or has unknown availability. These transactions
may be probe queries or queries issued in the secure DNS mode.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.DnsTransaction.SecureNotValidated.FailureTime" units="ms"
expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a secure DnsTransaction to a DoH server that is
unavailable or has unknown availability to fail. These transactions may be
probe queries or queries issued in the secure DNS mode.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.DnsTransaction.SecureNotValidated.SuccessTime" units="ms"
expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a secure DnsTransaction to a DoH server that is
unavailable or has unknown availability to succeed. These transactions may
be probe queries or queries issued in the secure DNS mode.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.DnsTransaction.SecureValidated.FailureError"
enum="NetErrorCodes" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Counts of specific error codes returned by secure DnsTransactions to an
available DoH server. A DoH server is available if a probe has been
successfully completed and fewer than a threshold amount of failures have
occurred.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.DnsTransaction.SecureValidated.FailureTime" units="ms"
expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a secure DnsTransaction to an available DoH server
to fail. A DoH server is available if a probe has been successfully
completed and fewer than a threshold amount of failures have occurred.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.DnsTransaction.SecureValidated.SuccessTime" units="ms"
expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a secure DnsTransaction to an available DoH server
to succeed. A DoH server is available if a probe has been successfully
completed and fewer than a threshold amount of failures have occurred.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.SecureValidated.SuccessTimeoutRatio"
units="10*ratio" expires_after="2020-12-20">
<obsolete>
Removed from code 2021-02.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Ratio (scaled up by 10) between the time taken by a successful secure
DnsTransaction attempt and the current dynamically-determined base timeout
in use for the DoH server that accomplished the resolve. Only recorded when
the DoH server is already known to be &quot;available&quot; (successful
probe request and failure thresholds not exceeded).
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.UDP.IdMismatch"
enum="DNS.UdpIdMismatchStatus" expires_after="2021-06-06">
<obsolete>
Removed from code 2021-01.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumerated status of whether a DNS over UDP response ID matched the expected
query ID and whether a mismatched ID is recognized as a recently-queried
one. Logged for every DNS over UDP response received with a parsable ID.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.UDP.IdMismatch.OldestMatchTime"
units="ms" expires_after="2021-04-04">
<obsolete>
Removed from code 2021-01.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time between receiving a mismatched DNS ID (when a DNS response contains an
ID that does not match the ID sent in the query) via UDP and the oldest
known use of the same ID in a query. Logged for every DNS over UDP response
receivied with a mismatched DNS ID.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.UDP.LowEntropyReason"
enum="DNS.UdpLowEntropyReason" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumerated status of the reason why the built-in DNS resolver has detected a
&quot;low entropy&quot; situation for DNS over UDP and has switched to DNS
over TCP.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.UDP.ReusedPort.Count"
units="num recent uses" expires_after="2021-04-04">
<obsolete>
Removed from code 2021-01.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Number of recent uses found of a local port number used for DNS over UDP.
Logged for every DNS over UDP query sent.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTransaction.UDP.ReusedPort.MostRecentAge"
units="ms" expires_after="2021-04-04">
<obsolete>
Removed from code 2021-01.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time between use of a local port number for DNS over UDP and the most recent
DNS over UDP use of the same port. Logged for every DNS over UDP query sent
with at least 1 recognized previous use of the local port.
</summary>
</histogram>
<histogram
name="Net.DNS.HTTPSSVC.RecordHttps.AnyProvider.ExpectNoerror.Parsable"
enum="BooleanValid" expires_after="2022-02-14">
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Indicates whether the result of an HTTPS query was validly parsable or
mangled. Only recorded when DnsRcode indicates NoError. Histograms are
emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram
name="Net.DNS.HTTPSSVC.RecordHttps.AnyProvider.ExpectNoerror.RecordWithError"
enum="Boolean" expires_after="2022-02-14">
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Records true when we receive an HTTPS record and an error RCODE at the same
time. Only recorded for true. Histograms are emitted at the completion of a
DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.HTTPSSVC.RecordHttps.DnsRcode"
enum="HttpssvcDnsRcode" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Records which RCODE the DNS server specified when it responded to our HTTPS
query. If the query timed out before getting a response,
&quot;TimedOut&quot; is recorded instead of an RCODE value. Histograms are
emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordHttps.ExpectIntact.Parsable"
enum="BooleanValid" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Indicates whether the result of an HTTPS query was validly parsable or
mangled. Only recorded when DnsRcode indicates NoError. Histograms are
emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordHttps.ExpectIntact.RecordWithError"
units="records" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Records a sample of one when we receive an HTTPS record and an error RCODE
at the same time. Histograms are emitted at the completion of a DnsTask's
final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordHttps.ResolveTimeHttpsRecord" units="ms"
expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Records how many ms the DNS server took to respond to an HTTPS query.
Histograms are emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.HTTPSSVC.RecordHttps.ResolveTimeRatio"
units="scaled ratio (% / 10)" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>ericorth@chromium.org</owner>
<owner>dmcardle@chromium.org</owner>
<summary>
Records a ratio indicating the relative HTTPS resolve time compared to the
slower A or AAAA resolve time, where A/AAAA/HTTPS belong to the same
DnsTask. Multiply this value by 10 to obtain a percentage P. The HTTPS query
completed in roughly P% of the slower A/AAAA resolve time. Values smaller
than 10 indicate that HTTPS query was faster than A/AAAA. Values larger than
10 indicate that the HTTPS query was slower than A/AAAA. Histograms are
emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.HTTPSSVC.RecordIntegrity.DnsRcode"
enum="HttpssvcDnsRcode" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Records which RCODE the DNS server specified when it responded to our
INTEGRITY query. If the query timed out before getting a response,
&quot;TimedOut&quot; is recorded instead of an RCODE value. Histograms are
emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordIntegrity.ExpectIntact.Integrity"
enum="HttpssvcIntegrityJudgment" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Indicates whether the result of an INTEGRITY query was intact (true) or
mangled (false). Only recorded when DnsRcode indicates NoError. Histograms
are emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordIntegrity.ExpectIntact.RecordWithError"
units="records" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Records a sample of one when we receive an INTEGRITY record and an error
RCODE at the same time. Histograms are emitted at the completion of a
DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordIntegrity.ExpectNoerror.RecordReceived"
units="records" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Counts the number of records received when we get any INTEGRITY record
(Intact or Mangled) for a non-experimental domain. Any INTEGRITY record in
the response would be a surprise! Histograms are emitted at the completion
of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordIntegrity.ResolveTimeIntegrityRecord"
units="ms" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Records how many ms the DNS server took to respond to an INTEGRITY query.
Histograms are emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram base="true"
name="Net.DNS.HTTPSSVC.RecordIntegrity.ResolveTimeNonIntegrityRecord"
units="ms" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Records how many ms the DNS server took to respond to any query other than
an INTEGRITY query. Histograms are emitted at the completion of a DnsTask's
final transaction.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.HTTPSSVC.RecordIntegrity.ResolveTimeRatio"
units="%" expires_after="2022-02-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" and name="HttpssvcIntegrityExpectation" -->
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
Records a ratio indicating the relative INTEGRITY resolve time compared to
the slower A or AAAA resolve time, where A/AAAA/INTEGRITY belong to the same
DnsTask. Multiply this value by 10 to obtain a percentage P. The INTEGRITY
query completed in roughly P% of the slower A/AAAA resolve time. Values
smaller than 10 indicate that INTEGRITY query was faster than A/AAAA. Values
larger than 10 indicate that the INTEGRITY query was slower than A/AAAA.
Histograms are emitted at the completion of a DnsTask's final transaction.
</summary>
</histogram>
<histogram name="Net.DNS.InsecureDnsTask.FailureTime" units="ms"
expires_after="2022-05-15">
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of time taken by an insecure DnsTask in resolutions that failed.
</summary>
</histogram>
<histogram name="Net.DNS.JobQueueTime.Failure" units="ms"
expires_after="2022-06-26">
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
The duration of time DnsTransactions spend waiting to be started by a
DnsTask, aggregated by HostResolverManager::Job. This metric is only
recorded when the Job failed.
</summary>
</histogram>
<histogram name="Net.DNS.JobQueueTime.PerTransaction" units="ms"
expires_after="2022-06-26">
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
The duration of time a DnsTransaction spends waiting to be started by a
DnsTask. The dominant factor is likely the time spent waiting for other
DnsTransactions to complete, i.e. waiting for DnsTask::StartNextTransaction
to be invoked by the dispatcher. If there were no limit on the number of
concurrent DNS queries, we would expect this metric to be near zero.
</summary>
</histogram>
<histogram name="Net.DNS.JobQueueTime.Success" units="ms"
expires_after="2022-06-19">
<owner>dmcardle@chromium.org</owner>
<owner>ericorth@chromium.org</owner>
<summary>
The duration of time DnsTransactions spend waiting to be started by a
DnsTask, aggregated by HostResolverManager::Job. This metric is only
recorded when the Job succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.ProbeSequence.ConfigChange.Failure.AttemptTime"
units="ms" expires_after="2022-05-11">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a probe attempt to fail. The time is measured
since the probe sequence was initiated due to a DNS config change.
</summary>
</histogram>
<histogram name="Net.DNS.ProbeSequence.ConfigChange.Success.AttemptTime"
units="ms" expires_after="2022-05-11">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a probe attempt to succeed. The time is measured
since the probe sequence was initiated due to a DNS config change.
</summary>
</histogram>
<histogram name="Net.DNS.ProbeSequence.NetworkChange.Failure.AttemptTime"
units="ms" expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a probe attempt to fail. The time is measured
since the probe sequence was initiated due to a network change.
</summary>
</histogram>
<histogram name="Net.DNS.ProbeSequence.NetworkChange.Success.AttemptTime"
units="ms" expires_after="2022-06-26">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a probe attempt to succeed. The time is measured
since the probe sequence was initiated due to a network change.
</summary>
</histogram>
<histogram name="Net.DNS.Request.Failure.HostSafetyStatus"
enum="HostSafetyStatus" expires_after="2021-08-30">
<obsolete>
Removed from code 2021-07.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Logged each time a DNS lookup fails. Records how often the TLDs of queried
hostnames are numeric for non-IPv4 hostnames.
</summary>
</histogram>
<histogram name="Net.DNS.Request.Success.HostSafetyStatus"
enum="HostSafetyStatus" expires_after="2021-08-30">
<obsolete>
Removed from code 2021-07.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Logged each time a DNS lookup succeeds. Records how often the TLDs of
queried hostnames are numeric for non-IPv4 hostnames.
</summary>
</histogram>
<histogram name="Net.DNS.Request.TotalTime" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of HostResolver requests from Start() until completion. Includes
requests resolved synchronously using fast local sources, e.g. from cache,
recorded as 0. Excludes speculative requests.
</summary>
</histogram>
<histogram name="Net.DNS.Request.TotalTimeAsync" units="ms"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of HostResolver requests from Start() until completion. Excludes
speculative requests and requests resolved using fast local sources, e.g.
from cache.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveCategory" enum="ResolutionCategory"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether a HostResolverManager::Job (the basic internal unit of work for
non-local host resolutions, potentially merging redundant requests from
Chrome) succeeded or failed, and whether it was speculative.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveError.Fast" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For DNS resolutions that failed after less than 10 ms, which are probably
local failures, what error code the jobs failed with.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveError.Slow" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For DNS resolutions that failed after at least 10 ms, which are probably
remote failures or connectivity problems, what error code the jobs failed
with.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveFailureTime" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of time taken by HostResolverManager::Job (the basic internal unit
of work for non-local host resolutions, potentially merging redundant
requests from Chrome) in resolutions that failed. This is the time to
resolve a hostname from start to finish. Excludes jobs where all requests
are speculative.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveSuccessTime" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>ericorth@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of time taken by HostResolverManager::Job (the basic internal unit
of work for non-local host resolutions, potentially merging redundant
requests from Chrome) in resolutions that succeeded. This is the time to
resolve a hostname from start to finish. Excludes jobs where all requests
are speculative.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsMode.Automatic.ResolveTime" units="ms"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by HostResolverManager::Job (the basic internal unit
of work for non-local host resolutions, potentially merging redundant
requests from Chrome) in resolutions for in AUTOMATIC secure DNS mode.
Excludes jobs where all requests are speculative.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsMode.Off.ResolveTime" units="ms"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by HostResolverManager::Job (the basic internal unit
of work for non-local host resolutions, potentially merging redundant
requests from Chrome) in resolutions for in OFF secure DNS mode. Excludes
jobs where all requests are speculative.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsMode.Secure.ResolveTime" units="ms"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by HostResolverManager::Job (the basic internal unit
of work for non-local host resolutions, potentially merging redundant
requests from Chrome) in resolutions for in SECURE secure DNS mode. Excludes
jobs where all requests are speculative.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsTask.DnsModeAutomatic.FailureTime" units="ms"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a secure DnsTask in resolutions that failed that
were issued in AUTOMATIC mode. Excludes time spent in the subsequent
fallback.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsTask.DnsModeSecure.FailureTime" units="ms"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Duration of time taken by a secure DnsTask in resolutions that failed that
were issued in SECURE mode.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsTaskFailure.FallbackDnsTask.Error"
enum="NetErrorCodes" expires_after="2021-01-31">
<obsolete>
Removed from code 2021-01.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Counts of specific error codes returned by insecure DnsTasks after a secure
DnsTask failed.
</summary>
</histogram>
<histogram name="Net.DNS.SecureDnsTaskFailure.FallbackProcTask.Error"
enum="NetErrorCodes" expires_after="2021-01-31">
<obsolete>
Removed from code 2021-01.
</obsolete>
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Counts of specific error codes returned by a ProcTask after a secure DnsTask
failed. Only records instances where there was no intermediary insecure
DnsTask.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.UI.DropdownSelectionEvent"
enum="DohProviderId" expires_after="2022-08-14">
<!-- Name completed by histogram_suffixes
name="DnsDropdownSelectionEvent" -->
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Provider in a user-initiated dropdown change event that occured when this
provider was one of the dropown options.
</summary>
</histogram>
<histogram name="Net.DNS.UI.ProbeAttemptSuccess" enum="Boolean"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Records the outcome of a DoH probe attempt on the first valid entry in the
custom text field.
</summary>
</histogram>
<histogram name="Net.DNS.UI.ValidationAttemptSuccess" enum="Boolean"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
Records the outcome of a formatting validation attempt on the custom text
field.
</summary>
</histogram>
<histogram name="Net.DNS.UpgradeConfig.DotUpgradeSucceeded" enum="Boolean"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
True if upgrade to DoH from a DoT hostname was attempted and succeeded.
False if it was attempted and failed.
</summary>
</histogram>
<histogram name="Net.DNS.UpgradeConfig.HasPublicInsecureNameserver"
enum="Boolean" expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
True if there was at least one public nameserver during an attempt to
upgrade to DoH from insecure DNS. False if there were no public nameservers
during an attempt to upgrade to DoH from insecure DNS.
</summary>
</histogram>
<histogram name="Net.DNS.UpgradeConfig.Ineligible.DohSpecified" enum="Boolean"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
True if upgrade to DoH was not attempted because the DoH config was already
specified. False if upgrade to DoH was not attempted for some other reason.
</summary>
</histogram>
<histogram name="Net.DNS.UpgradeConfig.Ineligible.UnhandledOptions"
enum="Boolean" expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
True if upgrade to DoH was not attempted because of unhandled options in the
system config. False if upgrade to DoH was not attempted for some other
reason. Emitted each time the DnsConfig is updated.
</summary>
</histogram>
<histogram name="Net.DNS.UpgradeConfig.InsecureUpgradeSucceeded" enum="Boolean"
expires_after="2022-08-14">
<owner>ericorth@chromium.org</owner>
<owner>doh-core@google.com</owner>
<summary>
True if upgrade to DoH from insecure DNS was attempted and succeeded. False
if it was attempted and failed.
</summary>
</histogram>
<histogram name="Net.DNS_Resolution_And_TCP_Connection_Latency2" units="ms"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
The time measured before starting DNS lookup until after the connection is
complete.
</summary>
</histogram>
<histogram name="Net.DomainReliability.BeaconOutcome"
enum="DomainReliabilityBeaconOutcome" expires_after="2022-07-03">
<owner>mmenke@chromium.org</owner>
<owner>src/net/network_error_logging/OWNERS</owner>
<summary>
The outcome of a Domain Reliability beacon, logged upon destruction of the
beacon.
</summary>
</histogram>
<histogram name="Net.ErrAborted.CountPerUpload2" units="aborts"
expires_after="M85">
<owner>csharrison@chromium.org</owner>
<summary>
The count of the ABORTED bucket in Net.ErrorCodesForMainFrame3 at the time
histograms are being uploaded.
</summary>
</histogram>
<histogram name="Net.ErrAborted.ProportionPerUpload" units="%"
expires_after="M85">
<owner>csharrison@chromium.org</owner>
<summary>
The bucket proportion of the ABORTED bucket in Net.ErrorCodesForMainFrame3
at the time histograms are being uploaded.
</summary>
</histogram>
<histogram name="Net.ErrorCodesForHTTPSGoogleMainFrame3" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Positive net error codes that requests for pages end with, including net::OK
and net::ERR_ABORTED. This only counts loads in &quot;main frames&quot; for
https://www.google.com (it does not for example count the error codes for
subresoures on a page). It excludes main frame navigations that are
converted to downloads (unless they fail / are aborted before it's known
that they would be a download), and requests handled externally (like mailto
links).
</summary>
</histogram>
<histogram name="Net.ErrorCodesForImages2" enum="NetErrorCodes"
expires_after="M85">
<owner>skonig@chromium.org</owner>
<owner>hbengali@chromium.org</owner>
<summary>
Net error codes that requests for images end with, including net::OK and
net:ERR_ABORTED.
</summary>
</histogram>
<histogram name="Net.ErrorCodesForMainFrame4" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Positive net error codes that requests for pages end with, including net::OK
and net::ERR_ABORTED. This only counts loads in &quot;main frames&quot; (it
does not for example count the error codes for subresoures on a page). It
excludes main frame navigations that are converted to downloads (unless they
fail / are aborted before it's known that they would be a download), and
requests handled externally (like mailto links).
</summary>
</histogram>
<histogram name="Net.ErrorCodesForSubresources3" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Net error codes that requests for &quot;subresources&quot; end with,
including net::OK and net::ERR_ABORTED.
</summary>
</histogram>
<histogram name="Net.ErrorCodesForTLS13ExperimentMainFrame2"
enum="NetErrorCodes" expires_after="M78">
<obsolete>
Removed April 2021
</obsolete>
<owner>svaldez@chromium.org</owner>
<summary>
Positive net error codes that requests for pages end with, including net::OK
and net::ERR_ABORTED. This only counts loads in &quot;main frames&quot; for
endpoints used in the initial TLS 1.3 deployment. Subresources or main frame
navigations to other origins are not included.
</summary>
</histogram>
<histogram name="Net.ErrorPageCounts" enum="NetErrorPageEvents"
expires_after="2022-06-12">
<owner>edwardjung@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Counts of various events that can occur on the network error page. Note that
this histogram enum buckets are not mutually exclusive and so a single error
page load might report samples into multiple ones. Each bucket has
descriptions that further explain the context of their samples.
</summary>
</histogram>
<histogram name="Net.ErrorPageCounts.SuggestionClicked"
enum="NetErrorOfflineSuggestionType" expires_after="2021-12-19">
<owner>sclittle@chromium.org</owner>
<owner>offline-dev@chromium.org</owner>
<summary>
Counts of the type of offline content suggestions clicked on the network
error page. Reported upon click.
</summary>
</histogram>
<histogram name="Net.ErrorPageCounts.SuggestionPresented"
enum="NetErrorOfflineSuggestionType" expires_after="2021-12-05">
<owner>sclittle@chromium.org</owner>
<owner>offline-dev@chromium.org</owner>
<summary>
Counts of the type of offline content suggestions shown on the network error
page. Multiple suggestions can be shown at the same time. Reported when the
suggestions are presented.
</summary>
</histogram>
<histogram name="Net.ExpectCT.EntriesOnLoad" units="entries"
expires_after="2021-08-07">
<obsolete>
Removed from code 2021-07.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>estark@chromium.org</owner>
<summary>
The number of entries loaded from the Expect-CT database when Chrome starts
up.
</summary>
</histogram>
<histogram name="Net.ExpectCT.HeaderPresentOnResponse" units="BooleanPresent"
expires_after="2022-07-03">
<owner>estark@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Recorded whenever headers are received on an HTTP response. True if an
Expect-CT header was present on the response, and false otherwise.
</summary>
</histogram>
<histogram name="Net.ExpectCTHeader.ParseSuccess" enum="BooleanSuccess"
expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
Sites can send an Expect-CT header to Chrome to indicate that they intend
their sites to comply with Chrome's Certificate Transparency policy. This
histogram is recorded whenever an Expect-CT header is processed on a
connection. True indicates that the header parsed successfully, and false
indicates that there was a parse failure.
</summary>
</histogram>
<histogram name="Net.ExpectCTHeader.PolicyComplianceOnConnectionSetup"
enum="CTComplianceStatus" expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
Sites can send an Expect-CT header to Chrome to indicate that they intend
their sites to comply with Chrome's Certificate Transparency policy. This
histogram is recorded on connection setup, whenever Chrome connects to an
Expect-CT site using a publicly trusted root. The histogram records the CT
policy compliance status of the connection.
</summary>
</histogram>
<histogram name="Net.ExpectCTHeader.PolicyComplianceOnHeaderProcessing"
enum="CTComplianceStatus" expires_after="M77">
<obsolete>
Expired in M77, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
Sites can send an Expect-CT header to Chrome to indicate that they intend
their sites to comply with Chrome's Certificate Transparency policy. This
histogram is recorded whenever an Expect-CT header is successfully parsed on
a connection that chains to a publicly trusted root. The histogram records
the CT policy compliance status of the connection on which the header was
received.
</summary>
</histogram>
<histogram name="Net.Fetch.UploadStreamingProtocolAllowH1"
enum="HttpProtocolScheme" expires_after="2021-10-19">
<owner>yoichio@chromium.org</owner>
<owner>ricea@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
Protocol used to fetch upload streaming with allowHTTP1ForStreamingUpload:
true property. This is recorded per fetch attempt regardless of result.
</summary>
</histogram>
<histogram name="Net.Fetch.UploadStreamingProtocolNotAllowH1"
enum="HttpProtocolScheme" expires_after="2021-10-19">
<owner>yoichio@chromium.org</owner>
<owner>ricea@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
Protocol used to fetch upload streaming with allowHTTP1ForStreamingUpload:
false property. This is recorded per fetch attempt regardless of result.
</summary>
</histogram>
<histogram name="Net.File.Request.Failure.HostSafetyStatus"
enum="HostSafetyStatus" expires_after="2021-08-30">
<obsolete>
Removed from code 2021-07.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Logged each time a file URL request fails. Records how often the TLDs of
queried hostnames are numeric for non-IPv4 hostnames.
</summary>
</histogram>
<histogram name="Net.File.Request.Success.HostSafetyStatus"
enum="HostSafetyStatus" expires_after="2021-08-30">
<obsolete>
Removed from code 2021-07.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Logged each time a file URL request succeeds. Records how often the TLDs of
queried hostnames are numeric for non-IPv4 hostnames.
</summary>
</histogram>
<histogram name="Net.FTP.StartResult" enum="FTPStartResult" expires_after="M79">
<owner>tervay@google.com</owner>
<owner>asanka@chromium.org</owner>
<summary>
Each bucket is the result of whether or not the initiated FTP transaction.
Successful transactions are recorded as either authenticated or
unauthenticated.
</summary>
</histogram>
<histogram name="Net.HasBrokenNEON" enum="BooleanBroken"
expires_after="2022-05-01">
<owner>davidben@chromium.org</owner>
<summary>
Records, on startup, for ARM devices running Android, whether the CPU is
known to have a broken NEON unit. See https://crbug.com/341598.
</summary>
</histogram>
<histogram name="Net.HttpAuthCount" enum="HttpAuthCount"
expires_after="2022-06-19">
<owner>asanka@chromium.org</owner>
<owner>mmenke@chromium.org</owner>
<summary>
Per-authentication-scheme counts of authentication attempts and rejections.
</summary>
</histogram>
<histogram name="Net.HttpAuthNtlmV2Usage" enum="HttpAuthNtlmV2Usage"
expires_after="M79">
<owner>asanka@chromium.org</owner>
<owner>mmenke@chromium.org</owner>
<summary>
Whether NTLMv2 was enabled for an authentication handshake. For a given data
set the number of samples here is expected to be equivalent to the
&quot;NTLM Start&quot; count in the &quot;Net.HttpAuthCount&quot; histogram.
Note that NTLMv2 being enabled makes the client behavior equivalent to
setting LmCompatibilityLevel to 3 or higher.
</summary>
</histogram>
<histogram name="Net.HttpAuthPromptType" enum="HttpAuthPromptType"
expires_after="2021-12-26">
<owner>meacer@chromium.org</owner>
<owner>src/chrome/browser/ui/login/OWNERS</owner>
<summary>Type of the HTTP auth prompt displayed.</summary>
</histogram>
<histogram name="Net.HttpAuthTarget" enum="HttpAuthTarget"
expires_after="2022-04-17">
<owner>asanka@chromium.org</owner>
<owner>mmenke@chromium.org</owner>
<summary>
Per-authentication-scheme counts of authentication targets, such as secure
servers or proxies.
</summary>
</histogram>
<histogram name="Net.HttpContentFreshnessLifetime" units="seconds"
expires_after="M85">
<owner>Please list the metric's owners. Add more owner tags as needed.</owner>
<summary>Length of time that a received resource will be cacheable.</summary>
</histogram>
<histogram name="Net.HttpContentLengthDifferenceWithValidOCL" units="bytes"
expires_after="M85">
<owner>bengr@chromium.org</owner>
<summary>
The difference between the size specified in the X-Original-Content-Length
header and the size of the response body. Only includes resources that have
the X-Original-Content-Length header.
</summary>
</histogram>
<histogram name="Net.HttpContentLengthV2" units="bytes" expires_after="never">
<!-- expires-never: Input to Lingo pipelines. -->
<owner>bengr@chromium.org</owner>
<summary>
Size of the response body. This is the actual number of bytes received,
which usually agrees with but is not necessarily the same as the size
specified by the Content-Length header. Replaces Net.HttpContentLength,
recording non-DRP Http traffic as &quot;Http.Direct&quot; instead of
&quot;Http.Other&quot;.
</summary>
</histogram>
<histogram name="net.HttpIdentSrcURL" units="requests" expires_after="M85">
<owner>tsepez@chromium.org</owner>
<summary>
Count of requests which contained a basic auth username and password
embedded in the URL itself.
</summary>
</histogram>
<histogram name="Net.HttpJob.PrefilterBytesRead" units="bytes"
expires_after="2022-07-03">
<owner>jkarlin@chromium.org</owner>
<owner>shivanisha@chromium.org</owner>
<summary>
Total prefilter (e.g., before decompression) bytes read for an HttpJob
request.
</summary>
</histogram>
<histogram name="Net.HttpJob.ProxyTypeFailed" enum="ProxyScheme"
expires_after="2022-05-11">
<owner>rch@chromium.org</owner>
<summary>
Scheme of the proxy server used by an HTTP job that failed, or SCHEME_DIRECT
if not proxy was used.
</summary>
</histogram>
<histogram name="Net.HttpJob.ProxyTypeSuccess" enum="ProxyScheme"
expires_after="2022-05-11">
<owner>rch@chromium.org</owner>
<summary>
Scheme of the proxy server used by an HTTP job that succeeded, or
SCHEME_DIRECT if not proxy was used.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTime" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob, from starting the transaction until we
are done reading.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTime.TLS13" units="ms"
expires_after="2022-06-19">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob, from starting the transaction until we
are done reading, if the response was received over TLS 1.3 and TCP. This is
recorded to measure the impact of 0-RTT.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTime.TLS13.Google" units="ms"
expires_after="2022-06-19">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob to a Google host, from starting the
transaction until we are done reading, if the response was received over TLS
1.3 and TCP. This is recorded to measure the impact of 0-RTT.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTimeCached" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob, from starting the transaction until we
are done reading, for jobs served from the cache.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTimeCancel" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob, from starting the transaction until
the job is killed. Note that we didn't detect the end of the data for this
job.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTimeNotCached" units="ms"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob, from starting the transaction until we
are done reading, for jobs not served from the cache.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTimeSuccess" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time it takes to complete an HttpJob, from starting the transaction until we
are done reading, for jobs when we read until no more data is available.
</summary>
</histogram>
<histogram name="Net.HttpOriginalContentLengthV2" units="bytes"
expires_after="never">
<!-- expires-never: Input to Lingo pipelines. -->
<owner>bengr@chromium.org</owner>
<summary>
Net.HttpOriginalContentLength with non-data reduction proxy traffic properly
labeled with the &quot;Direct&quot; suffix.
Size specified in the X-Original-Content-Length header. If this header is
not present in the response, the size of the response body is used. Replaces
Net.HttpOriginalContentLength, breaking down traffic by Direct, ViaDRP,
Bypassed, and Other.
</summary>
</histogram>
<histogram name="Net.HttpOriginalContentLengthWithValidOCL" units="bytes"
expires_after="M85">
<owner>bengr@chromium.org</owner>
<summary>
Size specified in the X-Original-Content-Length header. Only includes
resources that have the X-Original-Content-Length header.
</summary>
</histogram>
<histogram name="Net.HttpProxy.ConnectLatency" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>tbansal@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time taken to establish the connection to the HTTP proxy. Note that the
histogram expired briefly for M-86 and M-87 non-stable versions. Exact
counts during that period may not be meaningful.
</summary>
</histogram>
<histogram name="Net.HttpResponseCode" enum="HttpResponseCode"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>The count of HTTP Response codes encountered.</summary>
</histogram>
<histogram name="Net.HttpResponseCode.CustomHttpClient" enum="HttpResponseCode"
expires_after="2022-06-01">
<owner>wenyufu@chromium.org</owner>
<owner>xingliu@chromium.org</owner>
<owner>twellington@chromium.org</owner>
<summary>
Http response code accepted by the request sent from a custom HttpClient, if
a valid response code is received. Recorded when a http response is received
by the custom HttpClient. Android Only. The source of traffic of the
targeted services is added as suffix to this histogram.
</summary>
</histogram>
<!-- Name completed by histogram_suffixes name="CustomHttpClientType" -->
<histogram name="Net.HttpServerProperties.CountOfServers" units="units"
expires_after="M85">
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The total number of ServerInfo structs written to the network service's
prefs file, recorded each time the HttpServerProperties are serialized to
update the copy stored on disk.
</summary>
</histogram>
<histogram name="Net.HttpTimeToFirstByte" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time from when an HTTP request is issued to when the first byte is
processed.
</summary>
</histogram>
<histogram name="Net.HttpTimeToFirstByte.TLS13" units="ms"
expires_after="2022-05-11">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Time from when an HTTP request is issued to when the first byte is
processed, if the response was not cached and received over TLS 1.3 and TCP.
This is recorded to measure the impact of 0-RTT.
</summary>
</histogram>
<histogram name="Net.HttpTimeToFirstByte.TLS13.Google" units="ms"
expires_after="2022-06-12">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Time from when an HTTP request to a Google host is issued to when the first
byte is processed, if the response was not cached and received over TLS 1.3
and TCP. This is recorded to measure the impact of 0-RTT.
</summary>
</histogram>
<histogram name="Net.KeepaliveRequest.BlockStatus"
enum="KeepaliveRequestBlockStatus" expires_after="2020-06-30">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<summary>
Whether and how keepalive requests are blocked. There is a similar histgoram
&quot;Extensions.WebRequest.KeepaliveRequestState&quot;: This histogram
supports platforms where extensions are not supported.
&quot;Extensions.WebRequest.KeepaliveRequestState&quot; includes requests
rejected by WebRequest.onBeforeRequest() which are not counted in this
histogram.
</summary>
</histogram>
<histogram name="Net.KeepaliveRequest.HeadersSize" units="bytes"
expires_after="2020-06-30">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>panicker@chromium.org</owner>
<summary>
The size of the request headers for each request with keepalive specified.
</summary>
</histogram>
<histogram name="Net.KeepaliveRequest.Result" enum="KeepaliveRequestResult"
expires_after="2020-06-30">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>kinuko@chromium.org</owner>
<summary>The end state of keepalive request.</summary>
</histogram>
<histogram name="Net.KeepaliveRequest.UrlPlusHeadersSize" units="bytes"
expires_after="2020-06-30">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>panicker@chromium.org</owner>
<summary>
The sum of the size of the request headers and destination URL for each
request with keepalive specified.
</summary>
</histogram>
<histogram name="Net.KeepaliveRequest.UrlSize" units="bytes"
expires_after="2020-06-30">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<owner>panicker@chromium.org</owner>
<summary>
The size of the destination URL for each request with keepalive specified.
</summary>
</histogram>
<histogram name="Net.KeepaliveStatisticsRecorder.PeakInflightRequests2"
units="requests" expires_after="2020-06-30">
<obsolete>
Removed from code 2021-03.
</obsolete>
<owner>yhirano@chromium.org</owner>
<summary>
The peak number of concurrent outstanding requests with keepalive specified.
This histogram is reported whenever the peak number is updated. For example,
if the inflight number of requests were 0 =&gt; 1 =&gt; 2 =&gt; 1 =&gt; 2
=&gt; 3 =&gt; 2, then 0, 1, 2, and 3 would be reported.
</summary>
</histogram>
<histogram
name="Net.KeepaliveStatisticsRecorder.PeakInflightRequestsPerProcess"
units="requests" expires_after="2020-06-30">
<obsolete>
Removed from code 2019-12.
</obsolete>
<owner>yhirano@chromium.org</owner>
<summary>
The peak number of concurrent outstanding requests with keepalive specified
per render process.
</summary>
</histogram>
<histogram
name="Net.KeepaliveStatisticsRecorder.PeakInflightRequestsPerProcess2"
units="requests" expires_after="2020-06-30">
<obsolete>
Removed from code 2019-12.
</obsolete>
<owner>yhirano@chromium.org</owner>
<summary>
The peak number of concurrent outstanding requests with keepalive specified
per render process. This histogram is reported whenever the peak number is
updated. For example, if the inflight number of requests were 0 =&gt; 1
=&gt; 2 =&gt; 1 =&gt; 2 =&gt; 3 =&gt; 2, then 0, 1, 2, and 3 would be
reported.
</summary>
</histogram>
<histogram name="Net.MainFrameNoStore" enum="MainFrameStorable"
expires_after="M87">
<owner>jkarlin@chromium.org</owner>
<summary>
The distribution of storable vs &quot;cache-control: no-store&quot;
main-frame resources.
Counted after response headers have completed and before the content has
completed. Redirects are counted. All HTTP cache transactions are counted,
not just those that require the network.
</summary>
</histogram>
<histogram name="Net.MediaCache.Response.EnabledOrDisabled"
enum="MediaResponseCacheType" expires_after="2020-12-31">
<owner>morlovich@chromium.org</owner>
<owner>wicarr@microsoft.com</owner>
<owner>webmedia@microsoft.com</owner>
<summary>
Records decision points on whether response-side media content will be
cached or not. This is determined after receiving the HTTP response headers
and before attempting to write the the cache.
</summary>
</histogram>
<histogram name="Net.NeedsHWCAP2Workaround" enum="BooleanBroken"
expires_after="2022-06-01">
<owner>davidben@chromium.org</owner>
<summary>
Records, on startup, for ARM devices running Android, whether the kernel is
missing AT_HWCAP2 from the ELF auxv and /proc/cpuinfo reports support for
ARMv8 features. Those features should also be reported in AT_HWCAP2. This is
to measure the workaround in https://crbug.com/boringssl/46.
</summary>
</histogram>
<histogram name="Net.NetworkChangeNotifier.NewConnectionType"
enum="NetworkConnectionType" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The new network connection type any time a change to the device's active
default network is observed.
</summary>
</histogram>
<histogram name="Net.NetworkChangeNotifierMac.GetCurrentConnectionTypeWaitTime"
units="ms" expires_after="2022-05-01">
<owner>ajuma@chromium.org</owner>
<owner>pauljensen@chromium.org</owner>
<summary>
The amount of time (ms) spent waiting for the connection type to be
determined in NetworkChangeNotifierMac::GetCurrentConnectionType. This is
recorded the first time GetCurrentConnectionType is called, before the
connection type has been determined; it is not recorded again on subsequent
calls to this function.
</summary>
</histogram>
<histogram name="Net.NetworkConfigWatcherMac.SCDynamicStore.Create"
enum="SCStatusCode" expires_after="M85">
<owner>mef@chromium.org</owner>
<owner>pauljensen@chromium.org</owner>
<summary>
This is logged when SCDynamicStoreCreate fails in
network_config_watcher_mac.cc.
</summary>
</histogram>
<histogram
name="Net.NetworkConfigWatcherMac.SCDynamicStore.Create.RunLoopSource"
enum="SCStatusCode" expires_after="M85">
<owner>mef@chromium.org</owner>
<owner>pauljensen@chromium.org</owner>
<summary>
This is logged when SCDynamicStoreCreateRunLoopSource fails in
network_config_watcher_mac.cc.
</summary>
</histogram>
<histogram name="Net.NetworkConfigWatcherMac.SCDynamicStore.NumRetry"
units="retries" expires_after="M85">
<owner>mef@chromium.org</owner>
<owner>pauljensen@chromium.org</owner>
<summary>
This is logged when retrying SCDynamicStore has stopped after either
receiving a success or hitting the maximum number of retries in
network_config_watcher_mac.cc. The 0 bucket is where no retry is performed,
and the maximal bucket is where all retries have failed.
</summary>
</histogram>
<histogram name="Net.NetworkErrorLogging.SignedExchangeRequestOutcome"
enum="NetNetworkErrorLoggingRequestOutcome" expires_after="2022-05-17">
<owner>ksakamoto@chromium.org</owner>
<owner>webpackage-dev@chromium.org</owner>
<summary>
When Network Error Logging observes a completed request of signed exchange
that might generate a report, what happens to it. NEL observes all requests,
both successful and unsuccessful. It sends reports for successful and
unsuccessful requests at specified sampling rates so that error rates can be
calculated. Insecure requests are discarded for having an insecure origin
regardless of existence of a policy for the origin.
</summary>
</histogram>
<histogram name="Net.NotifyAddrChangeFailures" units="units"
expires_after="2018-08-30">
<obsolete>
Deprecated as of 2021/03. The code to emit the metric is removed.
</obsolete>
<owner>pauljensen@chromium.org</owner>
<summary>
On Windows, NetworkChangeNotifierWin calls NotifyAddrChange, which can fail
for unknown reasons. This records the number of times it fails in a row
before a successful call. If it never succeeds, or takes over 100 tries, a
value of 100 is recorded. See http://crbug.com/69198
</summary>
</histogram>
<histogram name="Net.Ntlm.HashDependsOnLocale" enum="Boolean"
expires_after="2021-10-25">
<obsolete>
Removed in 2021/09.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether the NTLM hash depends on the user's current locale. More
specifically, this measures whether a locale-sensitive uppercasing of the
username gives a different result from an ASCII-only uppercasing. The spec
doesn't define uppercasing rules for NTLM. This histogram is intended to
inform https://crbug.com/1051924 on how often an ambiguity would arise
should we switch to an ASCII-only approach.
</summary>
</histogram>
<histogram name="Net.NumQuicSessionsAtShutdown" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of QUIC sessions when the QuicStreamFactory is destroyed.
</summary>
</histogram>
<histogram name="Net.Port.Alpaca" enum="AlpacaPort" expires_after="2022-06-19">
<owner>ricea@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
Ports which may be restricted to mitigate the NAT Slipstream 2.0
vulnerability. Logged only for affected ports which are passed to
net::IsPortAllowedForScheme().
A top-level navigation will be counted 4 times, whereas a subresource will
only be counted once. This is not intentional, but may be useful to estimate
the level of breakage.
</summary>
</histogram>
<histogram name="Net.Port.SlipstreamRestricted" enum="SlipstreamPort"
expires_after="2021-10-31">
<obsolete>
Removed June 2021.
</obsolete>
<owner>ricea@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<summary>
Ports which may be restricted due to the NAT Slipstream 2.0 vulnerability.
Logged for every valid port passed to net::IsPortAllowedForScheme(). Almost
all lookups will end up in the kOther bucket.
A top-level navigation will be counted 4 times, whereas a subresource will
only be counted once. This is not intentional, but may be useful to estimate
the level of breakage.
</summary>
</histogram>
<histogram name="Net.Prefetch.HitBytes" units="bytes" expires_after="M87">
<owner>jkarlin@chromium.org</owner>
<summary>
Bytes read for requests that were served from a cache entry whose
unused_since_prefetch bit is true.
</summary>
</histogram>
<histogram name="Net.Prefetch.PrefilterBytesReadFromNetwork" units="bytes"
expires_after="M85">
<owner>jkarlin@chromium.org</owner>
<summary>
Number of bytes read from the network on behalf of prefetch requests. This
is prefilter, so before any decompression.
This applies to requests with RESOURCE_TYPE_PREFETCH.
</summary>
</histogram>
<histogram name="Net.ProxyScriptFetcher.FirstByteDuration" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<summary>
The time taken from requesting a PAC script to receiving the first byte of
the response body on successful fetches. This does not include time spent
doing proxy auto-discovery, or failed attempts at retrieving PAC scripts. If
the response body was empty, this measures the total time to fetch the
(empty) response body.
</summary>
</histogram>
<histogram name="Net.ProxyScriptFetcher.SuccessDuration" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<summary>
The time taken to successfully fetch a PAC script. This does not include
time spent doing proxy auto-discovery, or failed attempts at retrieving PAC
scripts.
</summary>
</histogram>
<histogram name="Net.PublicKeyPinReportSendingFailure2" enum="NetErrorCodes"
expires_after="M77">
<owner>estark@chromium.org</owner>
<summary>
A validated certificate chain may be subject to additional pinning
requirements on a per-domain basis. When pinning requirements are violated,
Chrome attempts to send a report about the incident. This records the net
error code when sending a pinning violation report fails.
</summary>
</histogram>
<histogram name="Net.PublicKeyPinSuccess" enum="BooleanSuccess"
expires_after="M77">
<owner>agl@chromium.org</owner>
<summary>
A validated certificate chain may be subject to additional
&quot;pinning&quot; requirements on a per-domain basis. This records the
fraction of successful matches between a certificate chain and a pin list.
</summary>
</histogram>
<histogram name="Net.PushedStreamVaryResponseHeader"
enum="PushedStreamVaryResponseHeaderValues" expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Information about the value of the Vary response header in HTTP/2 pushed
streams.
</summary>
</histogram>
<histogram name="Net.QuicActiveSessions" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of active QUIC sessions before we activate a new QUIC session.
</summary>
</histogram>
<histogram name="Net.QuicAltSvcFormat" enum="QuicAltSvcFormat"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Tracks the number of QUIC alt-svc advertisements parsed by Chrome in Google
format vs in IETF format.
</summary>
</histogram>
<histogram name="Net.QuicChromiumClientStream.HandleOnCloseConnectionError"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Log the connection error code when QUIC stream handle closes.
</summary>
</histogram>
<histogram name="Net.QuicChromiumClientStream.HandleOnCloseNetError"
enum="NetErrorCodes" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>Log the net error code when QUIC stream handle closes.</summary>
</histogram>
<histogram name="Net.QuicChromiumClientStream.HandleOnCloseStreamError"
enum="QuicRstStreamErrorCodes" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>Log the stream error code when QUIC stream handle closes.</summary>
</histogram>
<histogram name="Net.QuicChromiumClientStream.TrailingHeadersProcessSuccess"
enum="BooleanSuccess" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>Log success rate of processing trailing headers.</summary>
</histogram>
<histogram name="Net.QuicClientHelloRejectReasons" enum="QuicRejectReasons"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The reject reasons for QUIC's CHLO (client hello) message from server
</summary>
</histogram>
<histogram name="Net.QuicConnection.WritePacketStatus" enum="QuicWriteStatus"
expires_after="2022-05-11">
<owner>wub@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The write result returned by the packet writer when the connection attempts
to write a packet.
</summary>
</histogram>
<histogram name="Net.QuicConnectivityMonitor.NumActiveDegradingSessions"
units="sessions" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of active sessions that are degrading on network changes. The
suffix specifies the network change. Emitted when there are more than one
active sessions.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram
name="Net.QuicConnectivityMonitor.NumActiveQuicSessionsAtNetworkChange"
units="sessions" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of active QUIC sessions when a network change is detected. The
suffix specifies the network change.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram name="Net.QuicConnectivityMonitor.NumAllDegradedSessions"
units="sessions" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of all sessions that detectes path degradation until a network
change happens, including both active sessions and closed sessions. The
suffix specifies the network change.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram
name="Net.QuicConnectivityMonitor.NumAllSessionsDegradedAtNetworkChange"
units="sessions" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The total number of sessions that reports path degradation before a network
change happens, including both still active sessions and closed sessions.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram
name="Net.QuicConnectivityMonitor.NumSessionsTrackedSinceSpeculativeError"
units="sessions" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of total sessions that has been tracked since the first
speculative error, including both active and closed sessions. Only recorded
if non-zero.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram
name="Net.QuicConnectivityMonitor.NumWriteErrorsSeenBeforeDegradation"
units="errors" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of total sessions that has been closed due to
QUIC_PACKET_WRITE_ERROR before first path degradation detection.
The histogram is emitted when session path degrading is detected for the
first time on the current network and there was a session closed with a
speculative signal (QUIC_PACKET_WRITE_ERROR).
</summary>
</histogram>
<histogram name="Net.QuicConnectivityMonitor.PercentageActiveDegradingSessions"
units="%" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The percentage of active sessions that are degrading on network changes. The
suffix specifies the network change. Emitted when there are at least two
active sessions.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram name="Net.QuicConnectivityMonitor.PercentageAllDegradedSessions"
units="%" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The percentage of all sessions that detectes path degradation until a
network change happens, including both active sessions and closed sessions.
Always emit 0 when there is no session reporting path degrading to speculate
a connectivity failure on the current network. The suffix specifies the
network change.
The histogram is emitted when a network change happens which could affect
the current default network, which includes the default network being
changed, alternate networks being connected. It, however, doesn't emit when
disconnecting an alternate network because that does not affect the current
default network.
</summary>
</histogram>
<histogram name="Net.QuicConnectivityMonitor.SessionDegradedBeforeWriteError"
enum="BooleanDetected" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
When a packet write error is detected by the session, if path degradation
has been detected already on the same session.
The histogram is emitted when a session encounters a QUIC_PACKET_WRITE_ERROR
and is soon to be closed.
</summary>
</histogram>
<histogram name="Net.QuicDiskCache.FailureReason"
enum="QuicDiskCacheFailureReason" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Tracks failure reasons to read/load/write of QuicServerInfo to and from disk
cache.
</summary>
</histogram>
<histogram name="Net.QuicDroppedPacketReason" enum="QuicDroppedPacketReason"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The reason a QUIC packet could not be processed, logged for each dropped
packet.
</summary>
</histogram>
<histogram name="Net.QuicHandshakeNotConfirmedNumPacketsReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of QUIC packets received by a QUIC connection whose handshake was
not confirmed when that connection is closed.
</summary>
</histogram>
<histogram name="Net.QuicHandshakeState" enum="QuicHandshakeState"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The state of a QUIC connection's crypto hanshake as it progresses from
starting to confirmation or failure.
</summary>
</histogram>
<histogram name="Net.QuicHpackCompressionPercentage" units="%"
expires_after="2022-05-11">
<obsolete>
Removed in M58.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The compression percentage, logged for each sent HPACK compressed header
frame.
</summary>
</histogram>
<histogram name="Net.QuicHpackDecoder.IndexedEntryAge" units="ms"
expires_after="2022-05-11">
<obsolete>
Removed in M91. This experiment has concluded, header compression algorithm
for HTTP/3 has been standardized.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
For each indexed representation decoded, records the time since the
corresponding entry was added to the dynamic table. This data is being
collected to help analyze a proposed solution to HPACK induced head of line
blocking.
</summary>
</histogram>
<histogram name="Net.QuicHpackDecompressionPercentage" units="%"
expires_after="2022-05-11">
<obsolete>
Removed in M53.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The decompression percentage, logged for each received HPACK compressed
header frame.
</summary>
</histogram>
<histogram name="Net.QuicHpackEncoder.IndexedEntryAge" units="ms"
expires_after="2022-05-11">
<obsolete>
Removed in M91. This experiment has concluded, header compression algorithm
for HTTP/3 has been standardized.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
For each indexed representation encoded, records the time since the
corresponding entry was added to the dynamic table. This data is being
collected to help analyze a proposed solution to HPACK induced head of line
blocking.
</summary>
</histogram>
<histogram name="Net.QuicHttpStream.ProcessResponseHeaderSuccess"
enum="BooleanSuccess" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Log the success rate of HTTP layer reading QUIC response headers, for
investigating b/177893733.
</summary>
</histogram>
<histogram name="Net.QuicHttpStream.ResponseStatus"
enum="QuicRstStreamErrorCodes" expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Stream error of QuicSpdyStream when QuicHttpStream::ComputeResponseStatus()
returns ERR_QUIC_PROTOCOL_ERROR, for investigating b/177893733.
</summary>
</histogram>
<histogram name="Net.QuicNetworkDegradingDurationTillConnected" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Time from when QUIC detects performance degradation on the current network
to when QUIC notices a new network is connected.
</summary>
</histogram>
<histogram name="Net.QuicNetworkDegradingDurationTillDisconnected" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Time from when QUIC detects performance degradation on the current network
to when QUIC notices the current network is disconnected.
</summary>
</histogram>
<histogram name="Net.QuicNetworkDegradingDurationTillNewNetworkMadeDefault"
units="ms" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time from QUIC detecting network performance degradation to an
alternative network becoming default.
</summary>
</histogram>
<histogram name="Net.QuicNetworkDisconnectionDuration" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time from network disconnection to an alternative network becoming
default.
</summary>
</histogram>
<histogram name="Net.QuicNumSentClientHellos" units="units"
expires_after="2022-07-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of client hello messages sent.</summary>
</histogram>
<histogram name="Net.QuicNumServerConfig.UpdateMessagesIgnored"
enum="BooleanIgnored" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of times ServerConfigUpdateMessages ignored.</summary>
</histogram>
<histogram name="Net.QuicServerInfo.DiskCacheState"
enum="QuicServerConfigState" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The state of the QUIC server information when it's loaded from the disk
cache.
</summary>
</histogram>
<histogram name="Net.QuicSession.AbortedPendingStreamRequests"
units="stream requests" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of pending stream requests aborted when the session is closed.
Pending streams are those which could not be created immediately because
there were too many active streams.
</summary>
</histogram>
<histogram name="Net.QuicSession.AcceptChForOrigin" enum="Boolean"
expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records whether the QUIC session received an Accept-CH entry for the given
origin, which GetAcceptChViaAlps() returns. Logged every time
QuicHttpStream::GetAcceptChViaAlps() is called, typically once for each
request that is served over HTTP/3.
</summary>
</histogram>
<histogram name="Net.QuicSession.AcceptChFrameReceivedViaAlps"
enum="AcceptChEntries" expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records both whether there are any valid origin fields and whether there are
any invalid ones in the ACCEPT_CH frame. Logged during the TLS handshake of
a QUIC connection if ALPS is negotiated, once for every ACCEPT_CH HTTP/3
frame received (possibly zero, typically not more than one).
</summary>
</histogram>
<histogram name="Net.QuicSession.ActiveStreamsOnGoAwayAfterPathDegrading"
units="Streams" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of active streams when the quic session decides to go away on
path degrading.
</summary>
</histogram>
<histogram name="Net.QuicSession.AsyncRead" enum="Boolean"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if the result of reading a packet from the network was ERR_IO_PENDING.
Recorded for each packet when Read() returns.
</summary>
</histogram>
<histogram name="Net.QuicSession.BlockedFrames.Received" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of BLOCKED frames recevied by a QuicSession when the session is
closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.BlockedFrames.Sent" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of BLOCKED frames sent by a QuicSession when the session is
closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.CertVerificationResult" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code returned to a QUIC session from the CertVerifier when
a certification verification is attempted.
</summary>
</histogram>
<histogram name="Net.QuicSession.CertVerifierJob.CompleteTime"
units="Milliseconds" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Time spent verifying a certificate when racing cert veriifcation with host
resolution.
</summary>
</histogram>
<histogram name="Net.QuicSession.ClientSideMtu" units="bytes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The final maximum packet size of the connection used by the client before
the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.CloseAllSessionsError" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code which resulted in all sessions being closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.ClosedByPublicReset" enum="Boolean"
expires_after="2022-05-11">
<owner>wub@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
For a QUIC session that is closed by a public reset, this boolean shows
whether it is a public reset sent from a Google server or not.
</summary>
</histogram>
<histogram name="Net.QuicSession.ClosedByRtoAtClient.ReceivedPacketCount"
units="packets" expires_after="2022-05-11">
<owner>wub@chromium.org</owner>
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
For a QUIC session that is closed by QUIC_TOO_MANY_RTOS at client, this is
the number of packets it received before it is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.ClosedByRtoAtClient.SentPacketCount"
units="packets" expires_after="2022-05-11">
<owner>wub@chromium.org</owner>
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
For a QUIC session that is closed by QUIC_TOO_MANY_RTOS at client, this is
the number of packets it sent before it is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.ClosedDuringInitializeSession" enum="Boolean"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if the QUIC session is closed during the call to InitializeSession,
logged for each session just after InitializeSession is called.
</summary>
</histogram>
<histogram name="Net.QuicSession.CloseSessionOnError" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code which resulted in the session being closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.CoalesceStreamFrameStatus"
enum="BooleanCoalesced" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
When a new stream frame is added to a QUIC packet, record whether it's
coalesced with the existing stream frames.
</summary>
</histogram>
<histogram name="Net.QuicSession.Connect" units="RTTs"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Samples of the number of round-trips needed by a QUIC connection before a
request could be sent by the client.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectAfterBroken" enum="BooleanSuccess"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if a QUIC connection connected successfully after having been broken.
Only emitted after a QUIC connection attempt to a server that was previous
marked as broken.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionClose.HandshakeFailureBlackHole.QuicError"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error which caused a QUIC connection to be closed before the
hanshake was confirmed, in the case where no packets were received. This
provides a breakdown of the entires in
Net.QuicSession.ConnectionClose.HandshakeNotConfirmed.Reason where the value
is BLACK_HOLE.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionClose.HandshakeFailureUnknown.QuicError"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error which caused a QUIC connection to be closed before the
hanshake was confirmed, in the case where at least 1 packet was received.
This provides a breakdown of the entires in
Net.QuicSession.ConnectionClose.HandshakeNotConfirmed.Reason where the value
is UNKNOWN.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionClose.HandshakeNotConfirmed.Reason"
enum="QuicHandshakeFailureReason" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The reason a QUIC handshake failed.</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionClose.NumOpenStreams.HandshakeTimedOut"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of streams open when a QUIC session crypto handshake timed out.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionClose.NumOpenStreams.TimedOut"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of streams open when a QUIC session timed out.</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionClose.NumTotalStreams.HandshakeTimedOut"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of total streams created when a QUIC session crypto handshake
timed out.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionCloseErrorCodeClient"
enum="QuicErrorCodes" expires_after="2022-07-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the QUIC connection being closed by
the client.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionCloseErrorCodeClientGoogle"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the QUIC connection being closed by
the client to a Google server.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionCloseErrorCodeServer"
enum="QuicErrorCodes" expires_after="2022-07-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the QUIC connection being closed by
the server.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionCloseErrorCodeServerGoogle"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the QUIC connection being closed by
the a Google server.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfApplication"
enum="QuicHttp3ErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from the server.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfApplicationGoogle"
enum="QuicHttp3ErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from a Google server.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfApplicationGQuicErrorMissing"
enum="QuicHttp3ErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from the server, when the GQUIC error was missing.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfApplicationGQuicErrorMissingGoogle"
enum="QuicHttp3ErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from a Google server, when the GQUIC error was missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfTransport"
enum="QuicTransportErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC transport error code in a CONNECTION_CLOSE frame received from the
server.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfTransportGoogle"
enum="QuicTransportErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from a Google server.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfTransportGQuicErrorMissing"
enum="QuicTransportErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC transport error code in a CONNECTION_CLOSE frame received from the
server, when the GQUIC error was missing.
</summary>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfTransportGQuicErrorMissingGoogle"
enum="QuicTransportErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from a Google server, when the GQUIC error was missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionDuration" units="ms"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The duration of a QUIC connection starting from 1-RTT key available to
connection close.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionDurationWithPublicReset" units="ms"
expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>Duration of connections received PUBLIC_RESET.</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionFlowControlBlocked"
enum="BooleanBlocked" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Whether QUIC session's connection is flow control blocked when a PING
message is sent to server.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionIpPooled" enum="Boolean"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if an active session already exists for a given Ip during connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionMigration"
enum="QuicConnectionMigrationStatus" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The result of a QUIC connection migration attempt. The suffix specifies the
cause of connection migration.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionMigrationProbeSuccess"
enum="BooleanSuccess" expires_after="2021-07-11">
<obsolete>
The histogram was marked obsolete Jan 2021, in favor of the new histogram
Net.QuicConnection.PathValidationSuccess.
</obsolete>
<owner>fayang@chromium.org</owner>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The result of connectivity probing according to different migration causes.
Recorded for every connectivity probing when attempting connection
migrations.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionStateAfterDNS"
enum="ConnectionStateAfterDNS" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Logs the state of the connection from stale host when fresh dns resolution
is completed. This histogram is only valid when race_stale_dns_on_connection
experiment is enabled.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionTypeFromPeer" enum="AddressFamily"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The IP Address family of this connection, as reported by the server.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionTypeFromSelf" enum="AddressFamily"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The IP Address family of this connection, as seen locally.</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectRandomPortRequiringConfirmation"
units="RTTs" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Samples of the number of round-trips needed by a QUIC connection before a
request could be sent by the client, when handshake confirmation was
required. (The operating system randomly selected a source port for the
connection.)
</summary>
</histogram>
<histogram name="Net.QuicSession.CreationError" enum="QuicSessionErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Count of errors during attempts to create a QUIC session (before even using
the session).
</summary>
</histogram>
<histogram name="Net.QuicSession.CryptoRetransmitCount.HandshakeConfirmed"
units="count" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Times of retransmission time out of connections with successful handshake.
</summary>
</histogram>
<histogram name="Net.QuicSession.CryptoRetransmitCount.HandshakeNotConfirmed"
units="count" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Times of crypto retransmission timeout of connections with failed handshake.
</summary>
</histogram>
<histogram name="Net.QuicSession.DrainingStreamsOnGoAwayAfterPathDegrading"
units="Streams" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of draining streams when the quic session decides to go away on
path degrading.
</summary>
</histogram>
<histogram name="Net.QuicSession.DuplicatePacketsReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of duplicate packets recevied by a QuicSession when the session
is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.EncryptionEstablishedTime"
units="Milliseconds" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The elapsed time between starting the crypto handshake and installing the
first encryption key that can carry application data (either 0-RTT or
1-RTT).
</summary>
</histogram>
<histogram name="Net.QuicSession.FinalTcpCwnd" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The value of the TCP cubic sender's CWND when the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.FinchConfigIsValid" enum="Boolean"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Logged every time we parse a QUIC Finch config, and logs whether the config
was valid. Invalid configs are most likely to be obsolete configs. Note that
this is still logged (as true) when no variations config is present.
</summary>
</histogram>
<histogram name="Net.QuicSession.FinchObsoleteVersion" enum="Boolean"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Triggered any time Finch configures an obsolete QUIC version. Only recorded
when obsolete versions are not allowed (which is the default).
</summary>
</histogram>
<histogram name="Net.QuicSession.FreshDnsResolutionTime" units="ms"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time for a fresh DNS resolution from DoResolveHost to having a fresh DNS
result.
</summary>
</histogram>
<histogram name="Net.QuicSession.GapBetweenWriteErrorAndNetworkDisconnection"
units="ms" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
This measures the time gap between the most recent write error and the
network disconnection.
</summary>
</histogram>
<histogram name="Net.QuicSession.GoAwayReceivedForConnectionMigration"
enum="BooleanReceived" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Whether QuicGoAwayFrame is received from server for connection migration due
to client's port change. Logged when a QuicGoAwayFrame with error code
QUIC_ERROR_MIGRATING_PORT is received.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeConfirmedTime" units="Milliseconds"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The elapsed time between starting the crypto handshake, and receiving
confirmation from the server.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeStatusOnConnectionMigration"
enum="BooleanConfirmed" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The handshake status when the session attempts to migrate the connection
according to different migration causes.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeStatusOnPortMigration"
enum="BooleanConfirmed" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The handshake status when the session attempts to port migration on path
degrading.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeTimeout.PathDegradingDetected"
enum="BooleanDetected" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Whether path degrading has been detected by the time a QUIC connection is
closed due to handshake timeout.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioHpackReceived" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for received headers using HPACK.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioHpackSent" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for sent headers using HPACK.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioQpackReceived" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for received headers using QPACK.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioQpackSent" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for sent headers using QPACK.
</summary>
</histogram>
<histogram name="Net.QuicSession.HostResolution.HandshakeConfirmedTime"
units="Milliseconds" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The elapsed time between the end of resolving the DNS name of the server for
a QUIC connection, and receiving crypto handshake confirmation from the
server. Logged after crypto handshake is confirmed.
</summary>
</histogram>
<histogram name="Net.QuicSession.IncorrectConnectionIDsReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number packets recevied by a QuicSession with an incorrect connection id
when the sesesion is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.InitialRttEsitmateSource"
enum="InitialRttEstimateSource" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The source for the initial RTT estimate recorded when a QUIC session is
created.
</summary>
</histogram>
<histogram name="Net.QuicSession.KeyUpdate.PerConnection" units="count"
expires_after="2022-05-11">
<obsolete>
Replaced 2020-10-22 with Net.QuicSession.KeyUpdate.PerConnection2 that is
only logged for connections which supported key update.
</obsolete>
<owner>mattm@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of key updates processed per connection, recorded on connection
close. Only logged for connections which reached the 1-RTT level.
</summary>
</histogram>
<histogram name="Net.QuicSession.KeyUpdate.PerConnection2" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of key updates processed per connection, recorded on connection
close. Only logged for connections which reached the 1-RTT level and
supported key update.
</summary>
</histogram>
<histogram name="Net.QuicSession.KeyUpdate.PotentialPeerKeyUpdateAttemptCount"
units="count" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Count of packets received that appeared to attempt a key update but failed
decryption which have been received since the last successfully decrypted
packet, recorded on connection close. Only logged for connections which
reached the 1-RTT level and supported key update.
</summary>
</histogram>
<histogram name="Net.QuicSession.KeyUpdate.Reason" enum="QuicKeyUpdateReason"
expires_after="2022-05-11">
<owner>mattm@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The reason why each key update occured.</summary>
</histogram>
<histogram name="Net.QuicSession.KeyUpdate.Success.{Group}"
enum="QuicKeyUpdateSuccess" expires_after="2022-05-11">
<owner>mattm@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Records the success or failure of the last key update for connections where
the key update was initiated by the {Group} side. Failure is defined as
having sent at least one packet in the new key phase but never receiving an
ack for any packet sent in the new key phase before the connection was
closed.
</summary>
<token key="Group">
<variant name="Local"/>
<variant name="Remote"/>
</token>
</histogram>
<histogram name="Net.QuicSession.KeyUpdate.Supported"
enum="QuicKeyUpdateSupported" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Whether key update was supported by either or both sides of the connection,
recorded on connection close. Only logged for connections which reached the
1-RTT level.
</summary>
</histogram>
<histogram
name="Net.QuicSession.LastInFlightPacketSentTimeFromHandshakeCompletionWithPublicReset"
units="ms" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Time from handshake completion to last packet was sent for connections
received PUBLIC_RESET.
</summary>
</histogram>
<histogram name="Net.QuicSession.LastSentPacketContentBeforePublicReset"
units="bitfield value" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
A bitfield representing the last sent packet content before connection
receives PUBLIC_RESET.
</summary>
</histogram>
<histogram name="Net.QuicSession.MaxConsecutiveRtoWithForwardProgress"
units="count" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Max consecutive retransmission timeout before making forward progress.
</summary>
</histogram>
<histogram
name="Net.QuicSession.MaxConsecutiveRtoWithForwardProgressAndBlackholeDetected"
units="count" expires_after="2022-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Max consecutive retransmission timeout before making forward progress when
blackhole has been detected.
</summary>
</histogram>
<histogram name="Net.QuicSession.MaxReordering" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The maximum packet sequence number reordering observed by a QUIC connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.MaxReorderingTime" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ratio of the maximum reordering time of a QUIC packet to the min rtt.
</summary>
</histogram>
<histogram name="Net.QuicSession.MaxReorderingTimeLongRtt" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ratio of the maximum reordering time of a QUIC packet to the min rtt,
only for those sessions with a min rtt larger than 100 ms.
</summary>
</histogram>
<histogram name="Net.QuicSession.MigrateToSocketSuccess" enum="Boolean"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Records whether the migration of the QuicSession to a new socket is
successful.
</summary>
</histogram>
<histogram name="Net.QuicSession.MinRTT" units="ms" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The minimum RTT observed during the life of a QUIC connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.MtuProbesSent" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of MTU probes sent by the client during the session. Logged when
the connection is destroyed.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumActiveStreamsOnIdleTimeout" units="streams"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of active streams when idle timeout is detected and connection is
being closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumMigrations" units="units"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of successful migrations for a QUIC session.</summary>
</histogram>
<histogram name="Net.QuicSession.NumMigrationsExercisedBeforePublicReset"
units="migrations" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Number of connection migrations exercised before the connection receives a
public reset.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumOpenStreams" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of QUIC streams opened when a new QUIC stream is created.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumPendingStreamRequests"
units="stream requests" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of pending stream requests when a new stream request is added to
the pending list. Pending streams are those which could not be created
immediately because there were too many active streams.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumPingsSent" units="pings"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of pings a QUIC connection sends during its lifetime.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumStreamsWaitingToWriteOnIdleTimeout"
units="streams" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of streams waiting to write when idle timeout is detected and
connection is being closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumTotalStreams" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The total number of streams created by the client when the session is
closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.OutOfOrderGapReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of missing packets between the current received packet and the
previously largest received packet sequence number, when the current
received packet had a lower sequence number than the previously received
packet sequence number.
</summary>
</histogram>
<histogram name="Net.QuicSession.OutOfOrderLargePacketsReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of times the current received packet had a lower sequence number
than the previously received packet sequence number, and the size of the
current packet is larger than the size of the previous packet.
</summary>
</histogram>
<histogram name="Net.QuicSession.OutOfOrderPacketsReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of times the current received packet had a lower sequence number
than the previously received packet sequence number.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketGapReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of missing packets between the current received packet and the
previously largest received packet sequence number.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketGapReceivedNearPing" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of missing packets between the last received packet before a PING
frame sent and the first packet received after PING sent.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketGapSent" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of missing packets between the current received packet and the
previously largest received packet sequence number, as reported by the
remote end of the connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketLossRate" units="1/10th Percent"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ratio of the number of missing packets, to the maximum packet sequence
number received, for QUIC connections longer than 21 packets received via
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketRetransmitsPerMille" units="permille"
expires_after="2022-07-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of packets retransmitted per 1000. Only sessions with
packets_sent &gt;= 100 are included. Recorded in session destructor.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketWriteTime" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time taken to Write() a QUIC packet to the socket. Recorded for each
packet when it is sent. The suffix specifies if the write completed
synchonously or asynchronously.
</summary>
</histogram>
<histogram name="Net.QuicSession.PathValidationSuccess" enum="BooleanSuccess"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The result of path validation according to different migration causes.
</summary>
</histogram>
<histogram name="Net.QuicSession.PendingStreamsWaitTime" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The wait time of the pending stream when it is finally serviced. Pending
streams are those which could not be created immediately because there were
too many active streams.
</summary>
</histogram>
<histogram name="Net.QuicSession.PlatformNotification"
enum="QuicPlatformNotification" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The platform notification received by QUIC when network change happens.
</summary>
</histogram>
<histogram name="Net.QuicSession.PortMigration"
enum="QuicConnectionMigrationStatus" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The result of a QUIC port migration attempt.</summary>
</histogram>
<histogram name="Net.QuicSession.PreferAesGcm" enum="BooleanPreferred"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if the QUIC session prefers to use AES GCM because of hardware support.
</summary>
</histogram>
<histogram name="Net.QuicSession.ProbingRetryCountUntilSuccess" units="retries"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Number of retries to send connectivity probing packet on new path until
success.
</summary>
</histogram>
<histogram name="Net.QuicSession.ProbingTimeInMillisecondsUntilSuccess"
units="ms" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The wait time to receive a matched probing response to mark connectivity
probing as successful.
</summary>
</histogram>
<histogram name="Net.QuicSession.PublicResetAddressMismatch2"
enum="QuicAddressMismatch" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
When a public reset packet is received, whether the client IP address and
port number in it differ from the client IP address and port number in the
ServerHello handshake message. In the comparison, the first address is the
one in ServerHello and the second address is the one in public reset.
</summary>
</histogram>
<histogram name="Net.QuicSession.Pushed" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of push streams received when the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.PushedAndClaimed" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of pushed and used streams when the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.PushedAndUnclaimedBytes" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of bytes that is pushed but not used when the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.PushedBytes" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of bytes that is pushed when the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.Qpack.HeaderListCountWhenBlockedStreamLimited"
units="count" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ordinality of a header list within a connection during the encoding of
which unacknowledged dynamic table entries could not be referenced due to
the limit on the number of blocked streams.
</summary>
</histogram>
<histogram name="Net.QuicSession.Qpack.HeaderListCountWhenInsertionBlocked"
units="count" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ordinality of a header list within a connection during the encoding of
which at least one dynamic table insertion was blocked.
</summary>
</histogram>
<histogram name="Net.QuicSession.Qpack.HeaderListCountWhenInsertionNotBlocked"
units="count" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ordinality of a header list within a connection during the encoding of
which no dynamic table insertion was blocked.
</summary>
</histogram>
<histogram
name="Net.QuicSession.Qpack.HeaderListCountWhenNotBlockedStreamLimited"
units="count" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The ordinality of a header list within a connection during the encoding of
which the limit on the number of blocked streams did not prevent referencing
unacknowledged dynamic table entries.
</summary>
</histogram>
<histogram name="Net.QuicSession.QuicVersion" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>Version of the QUIC protocol used for this connection.</summary>
</histogram>
<histogram name="Net.QuicSession.ReadError" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code returned when attempting to read from a QUIC
connection. The suffix specifies the condition/source of the read error.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReadError.CurrentNetwork.HandshakeConfirmed"
enum="NetErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code returned when attempting to read on the current
network from a QUIC connection after handshake has been confirmed.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.BlockedStreams" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The value of the SETTINGS_QPACK_BLOCKED_STREAMS parameter received on an
HTTP/3 connection, if any.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.CountPlusOne" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of SETTINGS parameters received on an HTTP/3 connection,
incremented by one (the SETTINGS frame can be empty).
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.MaxHeaderListSize2"
units="bytes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The value of the SETTINGS_MAX_HEADER_LIST_SIZE parameter received on an
HTTP/3 connection, if any.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.MaxTableCapacity2"
units="bytes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The value of the SETTINGS_QPACK_MAX_TABLE_CAPACITY parameter received on an
HTTP/3 connection, if any.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.ReservedCountPlusOne"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of reserved SETTINGS parameters (that is, with identifier in the
form 0x1f * N + 0x21 for a non-negative integer value of N) received on an
HTTP/3 connection, incremented by one (there might be zero reserved
identifiers). Defined at
https://quicwg.org/base-drafts/draft-ietf-quic-http.html#name-defined-settings-parameters.
These should not be treated specially on the receive side, because they are
sent to exercise the requirement that unknown identifiers are ignored. Here
an exception is made for logging only, to understand what kind of
identifiers are received.
</summary>
</histogram>
<histogram name="Net.QuicSession.RejectHasProof" enum="Boolean"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if the QUIC REJ message received from the server contains a proof.
</summary>
</histogram>
<histogram name="Net.QuicSession.RejectLength" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The length in bytes of a QUIC REJ message received from the server.
</summary>
</histogram>
<histogram name="Net.QuicSession.RetryAfterWriteErrorCount2" units="retries"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of consecutive times a packet was retried after a write error,
using exponential backoff.
</summary>
</histogram>
<histogram name="Net.QuicSession.RstStreamErrorCodeClient"
enum="QuicRstStreamErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in a stream being reset by the client.
</summary>
</histogram>
<histogram name="Net.QuicSession.RstStreamErrorCodeServer"
enum="QuicRstStreamErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in a stream being reset by the server.
</summary>
</histogram>
<histogram name="Net.QuicSession.SecureResourceSecureSession" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of request for secure resources over QUIC sessions. True if the
session is secure, false if it is not.
</summary>
</histogram>
<histogram name="Net.QuicSession.SelfShloAddressMismatch"
enum="QuicAddressMismatch" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
When a SHLO handshake message is received, whether the client IP address and
port number in it differ from the local client IP address and port number.
In the comparison, the first address is the one in SHLO and the second
address is the client IP address.
</summary>
</histogram>
<histogram name="Net.QuicSession.SendPacketSize" units="bytes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The size in bytes of an encrypted QUIC packet sent to the peer at the
specified encryption level.
</summary>
</histogram>
<histogram name="Net.QuicSession.ServerSideMtu" units="bytes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The largest packet which the client received from the server during the
session.
</summary>
</histogram>
<histogram name="Net.QuicSession.SmoothedRTT" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The final smoothed RTT observed during the life of a QUIC connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.StaleAndFreshHostMatched" enum="Boolean"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if fresh host lists contains stale host used in racing connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.StaleConnectionTime" units="ms"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time a QUIC connection from invalid stale dns result takes to do Crypto
handshake. This starts on DoConnect and ends when the connection finishes.
</summary>
</histogram>
<histogram name="Net.QuicSession.StaleHostRacing" enum="Boolean"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>True if the stale host is used in racing connection.</summary>
</histogram>
<histogram name="Net.QuicSession.StatelessResetAfterProbingCancelled"
enum="BooleanReceived" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Records when a STATELESS_RESET is received after a connectivity probing is
cancelled.
</summary>
</histogram>
<histogram name="Net.QuicSession.StatelessResetDuringProbing"
enum="BooleanReceived" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
When probing is cancelled, records whether a STATELESS_RESET is received.
</summary>
</histogram>
<histogram name="Net.QuicSession.StopSendingErrorCodeClient"
enum="QuicRstStreamErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The QUIC error code that we sent in a STOP_SENDING frame.</summary>
</histogram>
<histogram name="Net.QuicSession.StopSendingErrorCodeServer"
enum="QuicRstStreamErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code that we received in a STOP_SENDING frame.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamCloseErrorCodeClient.HandshakeConfirmed"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the stream (and connection) being
closed by the client after the handshake was confirmed.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamCloseErrorCodeServer.HandshakeConfirmed"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the stream (and connection) being
closed by the client after the handshake was confirmed.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamFlowControlBlocked"
enum="BooleanBlocked" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Whether any of QUIC session's streams are flow control blocked when a PING
message is sent to server.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamFrameDuplicatedLongConnection"
units="1/10th Percent" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of stream frames received which were duplicates, out of every
1000 stream frames received. Only for QUIC sessions which received at least
100 packets.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamFrameDuplicatedPercentLongConnection"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The percentage of stream frames received which were duplicates. Only for
QUIC sessions which received at least 100 packets.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamFrameDuplicatedPercentShortConnection"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The percentage of stream frames received which were duplicates. Only for
QUIC sessions which received fewer than 100 packets.
</summary>
</histogram>
<histogram name="Net.QuicSession.StreamFrameDuplicatedShortConnection"
units="1/10th Percent" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of stream frames received which were duplicates, out of every
1000 stream frames received. Only for QUIC sessions which received fewer
than 100 packets.
</summary>
</histogram>
<histogram name="Net.QuicSession.TimedOutWithOpenStreams.ConsecutiveRTOCount"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
If a QUIC connection timed out with open streams, this contains a count of
consecutive RTOs.
</summary>
</histogram>
<histogram name="Net.QuicSession.TimedOutWithOpenStreams.ConsecutiveTLPCount"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
If a QUIC connection timed out with open streams, this contains a count of
consecutive TLPs.
</summary>
</histogram>
<histogram name="Net.QuicSession.TimedOutWithOpenStreams.HasUnackedPackets"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
If a QUIC connection timed out with open streams, this will be true when the
connection has unacked packets.
</summary>
</histogram>
<histogram name="Net.QuicSession.TimedOutWithOpenStreams.LocalPort"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
If a QUIC connection timed out locally with open streams, this contains the
local port number for the connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.TimeFromResolveHostToConfirmConnection"
units="Milliseconds" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time a QuicStreamFactory Job takes from host rersolution to connection
confirmation.
</summary>
</histogram>
<histogram name="Net.QuicSession.TooManyOpenStreams" enum="BooleanTooMany"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if more than 100 streams are open when a new stream is activated.
</summary>
</histogram>
<histogram name="Net.QuicSession.TooSmallInitialSentPacket" units="bytes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
When a QUIC packet is sent at initial encryption that is smaller than the
minimum size, this records the size difference (minimum_size -
observed_size).
</summary>
</histogram>
<histogram name="Net.QuicSession.UndecryptablePacketsReceived" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of undecryptable packets recevied by a QuicSession when the
session is closed. Includes packets where a decryption key was not present.
</summary>
</histogram>
<histogram name="Net.QuicSession.UndecryptablePacketsReceivedWithDecrypter"
units="units" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of undecryptable packets recevied by a QuicSession when the
session is closed. Only includes packets where a decryption key was present
for the packet's encryption level.
</summary>
</histogram>
<histogram name="Net.QuicSession.UnexpectedNotGoingAway"
enum="QuicSessionLocations" expires_after="2022-05-11">
<obsolete>
This histogram was removed in Feb 2021, because the corresponded crash has
been fixed.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The location in quic_client_session.cc where a session is unexpectedly not
going away.
</summary>
</histogram>
<histogram name="Net.QuicSession.UnexpectedObservers"
enum="QuicSessionLocations" expires_after="2022-05-11">
<obsolete>
This histogram was removed in Feb 2021, because the corresponded crash has
been fixed.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The location in quic_client_session.cc where there were unexpected
observers.
</summary>
</histogram>
<histogram name="Net.QuicSession.UnexpectedOpenStreams"
enum="QuicSessionLocations" expires_after="2022-05-11">
<obsolete>
This histogram was removed in Feb 2021, because the corresponded crash has
been fixed.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The location in quic_client_session.cc where there were unexpected open
streams.
</summary>
</histogram>
<histogram name="Net.QuicSession.ValidConnectionTime" units="ms"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time a QUIC connection that will be confirmed takes for Crypto
handshake. The event starts on DoConnect, and ends when the connection
finishes.
</summary>
</histogram>
<histogram name="Net.QuicSession.VerifyProofTime" units="ms"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Time spent verifying the signature and certificate chain. This is logged
whenever QUIC verifies the certificate chain and signature during crypto
handshake.
</summary>
</histogram>
<histogram name="Net.QuicSession.WriteError" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code returned when attempting to write to a QUIC
connection.
</summary>
</histogram>
<histogram name="Net.QuicSession.WriteError.HandshakeConfirmed"
enum="NetErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code returned when attempting to write to a QUIC
connection after the handshake has been confirmed.
</summary>
</histogram>
<histogram name="Net.QuicSession.WriteError.NetworkDisconnected"
enum="NetErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The most recent network error code when attempting to write to a QUIC
connection when the network gets disconnected.
</summary>
</histogram>
<histogram name="Net.QuicSession.WritePacketNotReusableReason"
enum="QuicNotReusableReason" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The reason QUIC packet writer needed to allocate a new buffer, rather than
the expected case of reusing its existing one.
</summary>
</histogram>
<histogram name="Net.QuicSession.ZeroRttReason"
enum="SSLHandshakeEarlyDataReason" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Indicates whether a QUIC handshake attempted or used 0-RTT on the
connection, and if 0-RTT was not used, it provides reasons why.
</summary>
</histogram>
<histogram name="Net.QuicSession.ZeroRttReasonGoogle"
enum="SSLHandshakeEarlyDataReason" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Indicates whether a QUIC handshake attempted or used 0-RTT on the
connection, and if 0-RTT was not used, it provides reasons why. Only records
connections with Google hosted servers.
</summary>
</histogram>
<histogram name="Net.QuicSession.ZeroRttReasonNonGoogle"
enum="SSLHandshakeEarlyDataReason" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Indicates whether a QUIC handshake attempted or used 0-RTT on the
connection, and if 0-RTT was not used, it provides reasons why. Only records
connections with non-Google servers.
</summary>
</histogram>
<histogram name="Net.QuicSession.ZeroRttState" enum="ZeroRttState"
expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>Whether 0-RTT was successfully used in the connection.</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.AttemptMigrationBeforeHandshake"
enum="BooleanAttempted" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Records if a new connection on the alternate network is attempted when a
connection fails before handshake is confirmed.
</summary>
</histogram>
<histogram
name="Net.QuicStreamFactory.AttemptMigrationBeforeHandshake.FailedConnectionType"
enum="NetworkConnectionType" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Connection type of the default network when the connection fails with
handshake not confirmed.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.BadPacketLossEvents5"
enum="QuicBadPacketLossEvents" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
A count of how often a user hits 1, 2, 3, 4 and 5 bad packet loss events for
port 443. Recorded whenever QUIC has bad packet loss (high packet loss on
multiple consecutive connections).
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.ConnectionOnNonDefaultNetwork"
enum="BooleanSuccess" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Status of the connection on the non-default network when it finishes. A
connection may stay on the non-default network during the initial setup when
the platform's default network changes.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.DefaultNetworkMatch"
enum="BooleanMatched" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Records, for initial socket created for each new QUIC connection, whether
the bound network matched the default network tracked by QuicStreamFactory.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.DisabledReasons"
enum="QuicDisabledReason" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Rrecords reasons QUIC is disabled (for all ports), if sufficent recent
connections experience: public reset post crypto handshake, or timeouts with
streams open. QUIC is disabled until the next reboot of Chrome. Logged
during session close.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.DoConnectFailureLocation"
enum="JobProtocolErrorLocation" expires_after="2022-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Log the location in QuicStreamFactory where QUIC_PROTOCOL_ERROR is reported.
</summary>
</histogram>
<histogram
name="Net.QuicStreamFactory.MigrationBeforeHandshake.NewConnectionType"
enum="NetworkConnectionType" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Connection type of the alternate network when a connection is about to be
attempted when the original connection fails on the default network with
handshake not confirmed.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.MigrationBeforeHandshake2"
enum="BooleanSuccess" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Status of the connection which is created for migration before handshake is
confirmed.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.MigrationBeforeHandshakeFailedReason"
enum="NetErrorCodes" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The network error code returned when the retried connection on the alternate
network before handshake fails.
</summary>
</histogram>
<histogram
name="Net.QuicStreamFactory.NetworkChangeDuringMigrationBeforeHandshake"
enum="BooleanChanged" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Captures whether the default network has been changed when the new
connection succeeds on the &quot;alternate&quot; network.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.PublicResetsPostHandshake"
units="resets" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Captures the maximum number of public resets post handshake that occurred
within a window of recent connections (default 20). Will help inform the
choice of threshold to disable QUIC for clients that experience pathalogical
errors. Logged during session close.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.QuicIsDisabled" enum="Ports"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Recorded whenever QUIC is disabled for a port due to repeated lossy
connections (high packet loss on multiple consecutive connections). QUIC is
disabled until next reboot of Chrome.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.TimeoutsWithOpenStreams"
units="timeouts" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Captures the maximum number of connection timeouts with streams open that
occurred within a window of recent connections (default 20). Will help
inform the choice of threshold to disable QUIC for clients that experience
pathalogical errors. Logged during session close.
</summary>
</histogram>
<histogram name="Net.QuicTransportClient.ConnectionCloseCodeClient"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>vasilvv@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The Google QUIC error code which resulted in the QuicTransport connection
being closed by the client.
</summary>
</histogram>
<histogram name="Net.QuicTransportClient.ConnectionCloseCodeServer"
enum="QuicErrorCodes" expires_after="2022-05-11">
<owner>vasilvv@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The Google QUIC error code which resulted in the QuicTransport connection
being closed by the server.
</summary>
</histogram>
<histogram name="Net.QuicTransportClient.ConnectionError" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>vasilvv@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The error code for cases when QuicTransport failed to establish a
connection.
</summary>
</histogram>
<histogram name="Net.QuicTransportClient.Error" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>vasilvv@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The code for QuicTransport errors.</summary>
</histogram>
<histogram name="Net.QuicTransportClient.FailedAtConnectState"
enum="QuicTransportClientConnectState" expires_after="2022-05-11">
<owner>vasilvv@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The state at which establishing a QuicTransport connection has failed.
</summary>
</histogram>
<histogram name="Net.QuicTransportClient.FailedAtState"
enum="QuicTransportClientState" expires_after="2022-05-11">
<owner>vasilvv@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The state at which the QuicTransportClient has been marked as failed.
</summary>
</histogram>
<histogram
name="Net.Radio.PossibleWakeupTrigger.{ProtocolType}WriteAnnotationId"
enum="TrafficAnnotationUniqueIdHash" expires_after="2022-06-01">
<owner>bashi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records a traffic annotation ID hash when a write to a {ProtocolType} socket
happens and the radio state is dormant. Only recorded on Android.
</summary>
<token key="ProtocolType">
<variant name="TCP"/>
<variant name="UDP"/>
</token>
</histogram>
<histogram name="Net.RedirectChainLength" units="redirects" expires_after="M85">
<owner>csharrison@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
The total number of redirects encountered during processing a URLRequest.
This includes redirects generated by servers (for example, 302 Found) and
redirects generated internally (for example, HSTS redirects or error pages).
</summary>
</histogram>
<histogram name="Net.RedirectWithUnadvertisedContentEncoding" enum="Boolean"
expires_after="M77">
<owner>eustas@chromium.org</owner>
<summary>
True for redirect responses with unadvertised &quot;Content-Encoding&quot;.
False for valid redirect responses. See http://crbug.com/714514
</summary>
</histogram>
<histogram name="Net.Reporting.HeaderType" enum="NetReportingHeaderType"
expires_after="2022-06-26">
<owner>rodneyding@google.com</owner>
<owner>src/net/reporting/OWNERS</owner>
<summary>
The type of header received for configuring reporting API endpoints,
recorded when reporting API headers are successfully parsed.
</summary>
</histogram>
<histogram name="Net.Reporting.ReportOutcome" enum="NetReportingReportOutcome"
expires_after="2021-06-25">
<obsolete>
Removed July 2021
</obsolete>
<owner>chlily@chromium.org</owner>
<owner>juliatuttle@chromium.org</owner>
<summary>
The outcome of Reporting trying to deliver a report, recorded when the
report is finally erased from memory.
</summary>
</histogram>
<histogram name="Net.Reporting.UploadHeaderType"
enum="NetReportingUploadHeaderType" expires_after="2022-02-18">
<owner>rodneyding@google.com</owner>
<owner>src/net/reporting/OWNERS</owner>
<summary>
The type of header that produced the endpoint used for uploading reports for
the Reporting API, recorded when reports have been succesfully uploaded,
counted once for each report.
</summary>
</histogram>
<histogram name="Net.ResourceLoader.ReadDeferral" units="ms"
expires_after="M77">
<owner>clamy@chromium.org</owner>
<summary>
When starting a cross-site navigation, the time between reading the headers
and body of the response.
</summary>
</histogram>
<histogram name="Net.RestrictedCookieManager.CookiePartitionKeyOK"
enum="Boolean" expires_after="2022-10-01">
<owner>dylancutler@chromium.org</owner>
<owner>src/net/cookies/OWNERS</owner>
<summary>
Logged whenever a partitioned cookie is set from a renderer process, which
can be from either document.cookie or the CookieStore API. True if the
partition key was set with the FromScript constructor (used by the
CookieStore API) or if the partition key matches the
RestrictedCookieManager's internal partition key (which is the case for
cookies set/modified by document.cookie).
</summary>
</histogram>
<histogram name="Net.RestrictedCookieManager.PartitionedCookiesInScript"
units="cookies" expires_after="2022-12-06">
<owner>dylancutler@chromium.org</owner>
<owner>src/net/cookies/OWNERS</owner>
<summary>
Logs the number of partitioned cookies accessed by a script. Logged only
when partitioned cookies are enabled.
</summary>
</histogram>
<histogram name="Net.RestrictedCookieManager.SetPartitionedCookie"
enum="Boolean" expires_after="2022-12-06">
<owner>dylancutler@chromium.org</owner>
<owner>src/net/cookies/OWNERS</owner>
<summary>
True iff the cookie set by RestrictedCookieManager is a partitioned cookie.
Only logged when partitioned cookies are enabled and the cookie set by RCM
will be accepted.
</summary>
</histogram>
<histogram name="Net.RestrictedCookieManager.SiteForCookiesOK" enum="Boolean"
expires_after="2022-06-12">
<owner>morlovich@chromium.org</owner>
<owner>src/net/cookies/OWNERS</owner>
<summary>
Logged on any document.cookie or CookieStore API operation. True if the
browser-side site_for_cookies and the render-provided value match.
</summary>
</histogram>
<histogram name="Net.RestrictedCookieManager.TopFrameOriginOK" enum="Boolean"
expires_after="2022-05-11">
<owner>morlovich@chromium.org</owner>
<owner>src/net/cookies/OWNERS</owner>
<summary>
Logged on any document.cookie or CookieStore API operation. True if the
browser-side top_frame_origin and the render-provided value match.
</summary>
</histogram>
<histogram
name="Net.SameSiteBlockedCookieSiteEngagement.CookieInsecureAndSameSiteNone"
enum="SiteEngagementLevel" expires_after="2020-12-31">
<obsolete>
Removed July 2021.
</obsolete>
<owner>chlily@chromium.org</owner>
<owner>morlovich@chromium.org</owner>
<summary>
The site engagement level of a frame that triggers the
CookieInsecureAndSameSiteNone warning, whether the cookie was actually
blocked or not. Recorded every time one or more cookies triggers the
warning.
</summary>
</histogram>
<histogram name="Net.SameSiteBlockedCookieSiteEngagement.CookieNoSameSite"
enum="SiteEngagementLevel" expires_after="2021-11-21">
<obsolete>
Removed July 2021.
</obsolete>
<owner>chlily@chromium.org</owner>
<owner>morlovich@chromium.org</owner>
<summary>
The site engagement level of a frame that triggers the CookieNoSameSite
warning, whether the cookie was actually blocked or not. Recorded every time
one or more cookies triggers the warning.
</summary>
</histogram>
<histogram name="Net.SiteDomainIsSafe" enum="Boolean" expires_after="M95">
<obsolete>
Removed November 2021.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether the origin passed to SchemefulSite's constructor is safe or not.
&quot;Unsafe&quot; sites have an eTLD+1 that is not a canonical hostname.
e.g., &quot;http://foo.127.1/&quot; has an eTLD+1 of &quot;127.1&quot;, but
the canonical form of &quot;http://127.1&quot; is
&quot;http://127.0.0.1&quot;. Logged for all origins with network hosts
(http, https, ws, etc). See https://crbug.com/1157010.
</summary>
</histogram>
<histogram name="Net.SocketUnchangeableReceiveBuffer" units="Bytes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The size of a socket's receive buffer when the attempt to change it via
setsockopt failed.
</summary>
</histogram>
<histogram name="Net.SocketUnchangeableSendBuffer" units="Bytes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The size of a socket's send buffer when the attempt to change it via
setsockopt failed.
</summary>
</histogram>
<histogram name="Net.SpdyFrameStreamAndSessionFlowControlState"
enum="SpdyFrameFlowControlState" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The counts of the flow control state of each frame (with stream and session
flow control on).
</summary>
</histogram>
<histogram name="Net.SpdyHeadersCompressionPercentage" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The percent compression achieved when compressing HEADERS frames.
</summary>
</histogram>
<histogram name="Net.SpdyHpackDecompressionPercentage" units="%"
expires_after="2022-05-11">
<obsolete>
Removed in M53.
</obsolete>
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The compression percentage in received HPACK compressed header frames.
</summary>
</histogram>
<histogram name="Net.SpdyIPPoolDomainMatch" enum="SpdyIPPoolDomainMatch"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Status of checking if a SPDY domain can handle a IP match. If a match is
found, we successfully used the IP Pooling. If a match is not found, we
could have used IP Pooling, except the TLS Cert didn't match the IP-pooled
domain.
</summary>
</histogram>
<histogram name="Net.SpdyPushedStreamFate" enum="SpdyPushedStreamFate"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
This histogram is recorded exactly once for every PUSH_PROMISE frame
received on an HTTP/2 connection, and tracks the fate of the pushed stream.
</summary>
</histogram>
<histogram name="Net.SpdyResponseCode" enum="HttpResponseCode"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
HTTP status codes received in HTTP/2 HEADERS frames. If a stream contains
one or more informational (1xx) response preceeding the main response, each
status code is logged separately.
</summary>
</histogram>
<histogram name="Net.SpdySession.AcceptChForOrigin" enum="Boolean"
expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records whether the HTTP/2 session received an Accept-CH entry for the given
origin, which GetAcceptChViaAlps() returns. Logged every time
SpdyHttpStream::GetAcceptChViaAlps() is called, typically once for each
request that is served over HTTP/2.
</summary>
</histogram>
<histogram name="Net.SpdySession.AlpsAcceptChEntries" enum="AcceptChEntries"
expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records both whether there are any valid origin fields and whether there are
any invalid ones in ACCEPT_CH frames. Logged once for each TLS handshake of
a HTTP/2 connection if ALPS is negotiated, regardless of the number of
ACCEPT_CH frames received in ALPS.
</summary>
</histogram>
<histogram name="Net.SpdySession.AlpsDecoderStatus" enum="AlpsDecoderError"
expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records the status (OK or error code) returned by AlpsDecoder when parsing
ALPS data. Logged once for each TLS handshake of a HTTP/2 connection if ALPS
is negotiated.
</summary>
</histogram>
<histogram name="Net.SpdySession.AlpsSettingParameterCount" units="parameters"
expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records the total number of setting parameters received in SETTINGS frames
in ALPS. Logged once for each TLS handshake of a HTTP/2 connection if ALPS
is negotiated, regardless of the number of SETTINGS frames received in ALPS.
</summary>
</histogram>
<histogram name="Net.SpdySession.ClosedOnError" enum="NetErrorCodes"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>Net error codes when SpdySession was closed.</summary>
</histogram>
<histogram name="Net.SpdySession.CreateStreamWithSocketConnected"
enum="BooleanSuccess" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>Socket connected status in SpdySession::CreateStream.</summary>
</histogram>
<histogram name="Net.SpdySession.GoAwayReceived" enum="Http2WireErrorCodes"
expires_after="2022-05-11">
<owner>bnc@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records the error code value received in each HTTP/2 GOAWAY frame.
</summary>
</histogram>
<histogram name="Net.SpdySession.PushedAndUnclaimedBytes" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The number of bytes that is pushed but not used when the session is closed.
</summary>
</histogram>
<histogram name="Net.SpdySession.PushedBytes" units="count"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The number of bytes that is pushed when the session is closed.
</summary>
</histogram>
<histogram name="Net.SpdySession.ServerSupportsWebSocket" units="Boolean"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether the server has advertised support for WebSockets over HTTP/2.
</summary>
</histogram>
<histogram name="Net.SpdySessionErrorDetails2" enum="SpdyProtocolErrorDetails2"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>The type of SPDY Protocol error encountered.</summary>
</histogram>
<histogram name="Net.SpdySessionErrorDetails_Google2"
enum="SpdyProtocolErrorDetails2" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
WARNING: r181910 added an enum value in the middle, so don't trust the
counts for values 9 and above for Chrome builds after that revision.
The type of SPDY Protocol error encountered when talking to a google.com
server.
</summary>
</histogram>
<histogram name="Net.SpdySessionGet" enum="SpdySessionGet"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>The type of SPDY Session used when looking up a session.</summary>
</histogram>
<histogram name="Net.SpdySessionGetPeerAddressNotConnected"
enum="BooleanSuccess" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether SpdySession::Get{Peer,Local}Address was called when the connection
had no socket.
</summary>
</histogram>
<histogram name="Net.SpdyStreamsAbandonedPerSession" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The number of pushed, but abandoned streams over a single session.
</summary>
</histogram>
<histogram name="Net.SpdyStreamsPerSession" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>The number of streams issued over a single session.</summary>
</histogram>
<histogram name="Net.SpdyStreamsPushedAndClaimedPerSession" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The number of pushed, and used streams over a single session.
</summary>
</histogram>
<histogram name="Net.SpdyStreamsPushedPerSession" units="units"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>The number of push streams received over a single session.</summary>
</histogram>
<histogram name="Net.SSL_CipherSuite" enum="SSLCipherSuite"
expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>agl@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
The SSL/TLS cipher suite that was negotiated. Recorded for each SSL/TLS
connection in the socket pool where Connect() succeeds.
</summary>
</histogram>
<histogram name="Net.SSL_Connection_Error" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>agl@chromium.org</owner>
<summary>
Counts of specific error codes returned when opening an SSL connection.
</summary>
</histogram>
<histogram name="Net.SSL_Connection_Error_TLS13Experiment" enum="NetErrorCodes"
expires_after="M78">
<obsolete>
Removed April 2021
</obsolete>
<owner>svaldez@chromium.org</owner>
<summary>
Counts of specific error codes returned when opening an SSL connection for
an endpoint we are using in the initial TLS 1.3 deployment.
</summary>
</histogram>
<histogram name="Net.SSL_Connection_Latency_2" units="ms" expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>agl@chromium.org</owner>
<summary>Time from when the Connect() starts until it completes.</summary>
</histogram>
<histogram name="Net.SSL_Connection_Latency_TLS13Experiment" units="ms"
expires_after="M85">
<obsolete>
Removed April 2021
</obsolete>
<owner>svaldez@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes for a set of domains
that we are using in the initial TLS 1.3 deployment.
</summary>
</histogram>
<histogram name="Net.SSL_KeyExchange.ECDHE" enum="ECDHECurves"
expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>agl@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<owner>sigbjorn@opera.com</owner>
<summary>
The curve used for key exchange for ECDHE. Recorded for each SSL/TLS
connection in the socket pool where Connect() succeeds.
</summary>
</histogram>
<histogram name="Net.SSLCertVerificationTime" units="ms" expires_after="M89">
<owner>rsleevi@chromium.org</owner>
<summary>Time to complete a certificate verification (success case).</summary>
</histogram>
<histogram name="Net.SSLCertVerificationTimeError" units="ms"
expires_after="M89">
<owner>rsleevi@chromium.org</owner>
<summary>Time to complete a certificate verification (error case).</summary>
</histogram>
<histogram name="Net.SSLClientCertSignatureAlgorithm"
enum="SSLSignatureAlgorithm" expires_after="2022-12-31">
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each non-resumption TLS handshake that sends a client certificate, the
signature algorithm used by the client.
</summary>
</histogram>
<histogram name="Net.SSLHandshakeDetails" enum="SSLHandshakeDetails"
expires_after="2022-06-19">
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each successful TLS handshake, what kind of handshake was used. This
metric distinguishes TLS 1.2 (or earlier) and TLS 1.3 as they have very
different resumption and round-trip behaviors. It also distinguishes full
handshakes, resumption, 0-RTT, and False Start.
</summary>
</histogram>
<histogram name="Net.SSLHandshakeEarlyDataReason"
enum="SSLHandshakeEarlyDataReason" expires_after="2022-05-11">
<owner>davidben@chromium.org</owner>
<owner>svaldez@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Indicates whether a TLS 1.3 connection ended up using 0-RTT or not, and why;
this includes reasons such as the server declining to resume the connection
and the client not having enough tickets available. This metric is only
recorded if 0-RTT supported is enabled in the client.
</summary>
</histogram>
<histogram name="Net.SSLHandshakeEarlyDataReason.Google"
enum="SSLHandshakeEarlyDataReason" expires_after="2022-06-12">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Indicates whether a TLS 1.3 connection to a Google host ended up using 0-RTT
or not, and why; this includes reasons such as the server declining to
resume the connection and the client not having enough tickets available.
This metric is only recorded if 0-RTT supported is enabled in the client.
</summary>
</histogram>
<histogram name="Net.SSLKeyLogFileUse" enum="SSLKeyLogFileAction"
expires_after="M92">
<owner>cthomp@chromium.org</owner>
<owner>security-enamel@chromium.org</owner>
<summary>
Counts when the SSLKEYLOGFILE environment variable or --ssl-key-log-file
command-line flag are set, and when they enable the SSLKeyLogger feature.
</summary>
</histogram>
<histogram name="Net.SSLLegacyCryptoFallback" enum="SSLLegacyCryptoFallback"
expires_after="2022-06-19">
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each TLS connection, whether it needed the legacy crypto fallback and a
classification as to why. See https://crbug.com/658905 and
https://crbug.com/691888. Note some connections are reported as sending
SHA-1 certificates because, although SHA-1 is no longer accepted in
certificates, servers may send unused certificates in the handshake. Some
such servers additionally match their certificate chains against the
ClientHello. These servers require the client advertise legacy algorithms
despite not actually using them.
</summary>
</histogram>
<histogram name="Net.SSLNegotiatedAlpnProtocol"
enum="SSLNegotiatedAlpnProtocol" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each TLS handshake, whether ALPN was negotiated; and if so, the
negotiated protocol.
</summary>
</histogram>
<histogram name="Net.SSLRenegotiationInfoSupported" enum="BooleanSupported"
expires_after="2022-12-31">
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each TLS handshake, whether the server supports the renegotiation_info
extension (RFC 5746). If the server negotiated TLS 1.3, which removed
renegotiation, it is considered to support the extension. Servers that do
not support it are potentially vulnerable to an attack involving TLS
renegotiation.
</summary>
</histogram>
<histogram name="Net.SSLRSAKeyUsage.UnknownRoot" enum="RSAKeyUsage"
expires_after="2022-07-03">
<owner>davidben@chromium.org</owner>
<summary>
For each TLS connection which uses a unknown root, an RSA key, and TLS 1.2
or below, what the result of checking the RSA key usage would have been.
</summary>
</histogram>
<histogram name="Net.SSLSignatureAlgorithm" enum="SSLSignatureAlgorithm"
expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each SSL connection with a full handshake using a DHE- or ECDHE-based
key exchange, the signature algorithm used to authenticate the peer. In TLS
1.2, this is the signature on the ServerKeyExchange message. (Note: Although
the ECDSA values specify a curve, the curve is only enforced in TLS 1.3.)
</summary>
</histogram>
<histogram name="Net.SSLVersion" enum="SSLOrQUICVersion" expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>davidben@chromium.org</owner>
<summary>
The SSL/TLS version that was negotiated. Recorded for each SSL/TLS
connection in the socket pool where Connect() succeeds.
</summary>
</histogram>
<histogram name="Net.SSLVersionGoogle" enum="SSLOrQUICVersion"
expires_after="2022-05-11">
<owner>davidben@chromium.org</owner>
<owner>rsleevi@chromium.org</owner>
<summary>
The SSL/TLS version that was negotiated to a Google host. Recorded for each
appplicable SSL/TLS connection in the socket pool where Connect() succeeds.
Google servers all support TLS 1.2, so any occurrences of TLS 1.0 or TLS 1.1
indicate an outdated insecure TLS MITM proxy, such as some antivirus
configurations. TLS 1.0 and 1.1 are deprecated, so record these to see how
prevalent they are. See https://crbug.com/896013.
</summary>
</histogram>
<histogram name="Net.TCP_Connection_Latency" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>mmenke@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes. Only times under 10
minutes are logged.
</summary>
</histogram>
<histogram name="Net.TCP_Connection_Latency_IPv4_No_Race" units="ms"
expires_after="M85">
<owner>mgersh@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes when the network
address only contains IPv4 addresses. Only times under 10 minutes are
logged.
</summary>
</histogram>
<histogram name="Net.TCP_Connection_Latency_IPv4_Wins_Race" units="ms"
expires_after="M85">
<owner>mgersh@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes when the IPv4
fallback connection won the race against IPv6. Only times under 10 minutes
are logged.
</summary>
</histogram>
<histogram name="Net.TCP_Connection_Latency_IPv6_Raceable" units="ms"
expires_after="M85">
<owner>mgersh@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes when we race an IPv6
connection against an IPv4 connection with a 300ms delay. Only times under
10 minutes are logged.
</summary>
</histogram>
<histogram name="Net.TCP_Connection_Latency_IPv6_Solo" units="ms"
expires_after="M85">
<owner>mgersh@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes when the network
address only contains IPv6 addresses. Only times under 10 minutes are
logged.
</summary>
</histogram>
<histogram name="Net.TcpConnectAttempt.Latency.Error" units="ms"
expires_after="2022-07-12">
<owner>bashi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time taken when failed to establish a TCP connection to an individual
endpoint. This includes the case when the attempt was aborted by a higher
layer (likely because it took too long).
</summary>
</histogram>
<histogram name="Net.TcpConnectAttempt.Latency.Success" units="ms"
expires_after="2022-07-12">
<owner>bashi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time taken to successfully establish a TCP connection to an individual
endpoint.
</summary>
</histogram>
<histogram name="Net.TcpConnectAttempt.LatencyPercentRTT.Error" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time taken when failed to establish a TCP connection to an individual
endpoint, expressed as a multiple of the transport RTT. This includes the
case when the attempt was aborted by a higher layer (likely because it took
too long). This may have fewer samples than Net.TcpConnectAttempt.Latency.*
in cases where the network quality estimation was unknown.
</summary>
</histogram>
<histogram name="Net.TcpConnectAttempt.LatencyPercentRTT.Success" units="%"
expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time taken to successfully establish a TCP connection to an individual
endpoint, expressed as a multiple of the transport RTT. This may have fewer
samples than Net.TcpConnectAttempt.Latency.* in cases where the network
quality estimation was unknown.
</summary>
</histogram>
<histogram name="Net.TcpRtt.AtDisconnect" units="ms" expires_after="M85">
<owner>bmcquade@chromium.org</owner>
<summary>
The kernel's estimated TCP round trip time. Recorded for each TCP socket, at
the time it is disconnected.
</summary>
</histogram>
<histogram base="true" name="Net.TrustTokens.FetchFailedReason"
enum="FetchFailedReasonOrResourceRequestBlockedReason"
expires_after="2021-03-30">
<obsolete>
This was a temporary addition used for debugging during M88.
</obsolete>
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>davidvc@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
A descriptive reason why a Fetch API call with an associated Trust Tokens
operation failed. This might help debug a surfeit of 'TypeError: failed to
fetch' observed in live testing.
</summary>
</histogram>
<histogram name="Net.TrustTokens.IssuanceHelperLocalFulfillResult"
enum="FulfillTrustTokenIssuanceAnswerStatus" expires_after="2022-01-15">
<owner>davidvc@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
For locally diverted platform-provided trust token issuance requests, the
results of the LocalOperationDelegate issuance delegation call. This is a
liveness metric that allows verifying that platform-provided trust token
issuance is working during the feature's initial rollout (and, if it isn't,
that helps debug the failures).
</summary>
</histogram>
<histogram base="true" name="Net.TrustTokens.NetErrorForFetchFailure"
enum="NetErrorCodes" expires_after="2022-06-26">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>davidvc@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
The net error for a failed Fetch API call with an associated Trust Tokens
operation. This was originally added to help debug a surfeit of 'TypeError:
failed to fetch' observed in live testing, and it is now retained since it's
useful for ongoing health monitoring.
</summary>
</histogram>
<histogram base="true" name="Net.TrustTokens.NetErrorForTrustTokenOperation"
enum="NetErrorCodes" expires_after="2022-06-26">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>davidvc@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
The //net status codes for resource requests that had started Trust Tokens
operations. This captures the reasons why requests with Trust Tokens
operations fail and might help debug a surfeit of &quot;TypeError: failed to
fetch&quot; observed in live testing.
</summary>
</histogram>
<histogram
name="Net.TrustTokens.Operation{TimeSpan}Time.{Outcome}.{Type}{OptionalPlatformProvided}"
units="ms" expires_after="2022-01-15">
<owner>davidvc@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
Time taken to execute various parts of a Trust Tokens operation: 1. Begin =
time taken to execute the operation's outbound Begin half 2. Server = time
from the end of the outbound Begin half to the beginning of the inbound
Finalize half 3. Finalize = time taken to execute the inbound Finalize half
4. Total = Begin + Server + Finalize (only recorded for operations that see
server responses)
The other variants (see histogram_suffixes_list's TrustTokenOperationType
entry): 1. Outcome (Success or Failure) 2. The type of Trust Tokens
operation 3. Whether the operation was platform-provided (i.e. executed by a
method other than a direct HTTP request to the issuer's server)
</summary>
<token key="TimeSpan">
<variant name="Begin"/>
<variant name="Finalize"/>
<variant name="Server"/>
<variant name="Total"/>
</token>
<token key="Outcome">
<variant name="Failure"/>
<variant name="Success"/>
</token>
<token key="Type">
<variant name="Issuance"/>
<variant name="Redemption"/>
<variant name="Signing"/>
</token>
<token key="OptionalPlatformProvided">
<variant name=""/>
<variant name=".PlatformProvided"/>
</token>
</histogram>
<histogram name="Net.TrustTokens.RedemptionRequestEmpty" enum="BooleanEmpty"
expires_after="2022-01-15">
<owner>davidvc@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
Whether the Trust Tokens redemption logic received an empty redemption
request string from its underlying cryptographic library. If this is always
true, but servers occasionally see empty redemption request headers, it
might suggest middleware (namely extensions) is removing the headers'
values.
</summary>
</histogram>
<histogram base="true" name="Net.TrustTokens.RequestHelperFactoryOutcome"
enum="TrustTokenRequestHelperFactoryOutcome" expires_after="2022-06-26">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>davidvc@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
For resource requests that bear Trust Tokens parameters, the results of
running TrustTokenRequestHelperFactory to initialize Trust Tokens handling
logic. This might help debug a surfeit of failed Trust Tokens issuance
operations observed in live testing.
</summary>
</histogram>
<histogram
name="Net.TrustTokens.SubresourceOperationRequiringFeaturePolicy.PolicyIsConsistentWithBrowserOpinion"
enum="BooleanConsistent" expires_after="2021-09-30">
<obsolete>
Removed from code 2021-02.
</obsolete>
<owner>davidvc@chromium.org</owner>
<owner>privacy-sandbox-dev@chromium.org</owner>
<summary>
For a Trust Tokens operation associated with a subresource request, stores
whether the browser believed the frame had the Feature Policy feature
necessary for executing the operation.
</summary>
</histogram>
<histogram name="Net.UdpSocketRandomBindErrorCode" enum="NetErrorCodes"
expires_after="M77">
<owner>mgersh@chromium.org</owner>
<summary>Chromium error code from call to RandomBind() UDP socket.</summary>
</histogram>
<histogram name="Net.UDPSocketWinClose" units="ms" expires_after="2022-05-11">
<owner>dschinazi@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>The time spent in closesocket call in UDPSocketWin::Close.</summary>
</histogram>
<histogram name="Net.Url.HostSafetyStatus" enum="HostSafetyStatus"
expires_after="2021-08-30">
<obsolete>
Removed from code 2021-07.
</obsolete>
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Logged each time url/ canonicalizes a hostname with a numeric TLD that's not
an IPv4 hostname. Unlike other histograms that record HostSafetyStatus, this
one does not record the OK bucket, since it's both not terribly meaningful
and URLs are canonicalized so frequently.
</summary>
</histogram>
<histogram name="Net.URLLoaderThrottleDeferTime.WillProcessResponse.{Throttle}"
units="ms" expires_after="2022-03-13">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures time {Throttle} deferred a request on WillProcessResponse. Logged
every time {Throttle} defers a request.
</summary>
<token key="Throttle" variants="WillProcessResponseThrottleNames"/>
</histogram>
<histogram name="Net.URLLoaderThrottleDeferTime.WillStartRequest.{Throttle}"
units="ms" expires_after="2022-03-13">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures time {Throttle} deferred a request on WillStartRequest. Logged
every time {Throttle} defers a request.
</summary>
<token key="Throttle" variants="WillStartRequestThrottleNames"/>
</histogram>
<histogram name="Net.URLLoaderThrottleDeferTime.{Stage}" units="ms"
expires_after="2022-03-14">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures time a URLLoaderThrottle was deferred when on {Stage}. Logged every
time a throttle defers a request.
</summary>
<token key="Stage" variants="URLLoaderThrottleStages"/>
</histogram>
<histogram name="Net.URLLoaderThrottleExecutionTime.{Stage}" units="ms"
expires_after="2022-03-14">
<owner>cduvall@chromium.org</owner>
<owner>jam@chromium.org</owner>
<summary>
Measures time a URLLoaderThrottle took to execute {Stage}. Logged every time
a throttle runs.
</summary>
<token key="Stage" variants="URLLoaderThrottleStages"/>
</histogram>
<histogram name="Net.URLRequest.ReferrerHasInformativePath"
enum="BooleanPathIsInformative" expires_after="2022-05-31">
<!-- Name completed by histogram_suffixes name="ReferrerPolicySameOrigin" -->
<owner>davidvc@chromium.org</owner>
<owner>kaustubhag@chromium.org</owner>
<summary>
Records for each URLRequest whether its referrer contains more information
than just its origin (this is the case exactly when it has at least one
character apart from a leading slash in its path, e.g. http://example.com/a
but not http://example.com/ nor http://example.com).
</summary>
</histogram>
<histogram name="Net.URLRequest.ReferrerPolicyForRequest"
enum="URLRequestReferrerPolicy" expires_after="2022-05-31">
<!-- Name completed by histogram_suffixes name="ReferrerPolicySameOrigin" -->
<owner>davidvc@chromium.org</owner>
<owner>kaustubhag@chromium.org</owner>
<summary>
Records the distribution of referrer policies provided with outgoing
URLRequests, and whether or not the requests were cross-origin.
</summary>
</histogram>
<histogram name="Net.URLRequest.ReferrerPolicyHeaderPresentOnRedirect"
enum="BooleanPresent" expires_after="M85">
<obsolete>
Expired in M85, code removed in M98
</obsolete>
<owner>estark@chromium.org</owner>
<summary>
Records the usage of the Referrer-Policy header on redirect responses. This
histogram is recorded on each HTTP redirect response, with the value true if
a Referrer-Policy header was present and false otherwise.
</summary>
</histogram>
<histogram name="Net.WebSocket.CloseCode" enum="WebSocketCloseCode"
expires_after="2021-07-01">
<obsolete>
Removed July 2021.
</obsolete>
<owner>ricea@chromium.org</owner>
<owner>yhirano@chromium.org</owner>
<owner>yoichio@chromium.org</owner>
<summary>
Records the status code with which WebSockets are closed. Logged once for
every successfully opened WebSocket. Includes codes &quot;No Status
Rcvd&quot; and &quot;Abnormal Closure&quot; which are never sent over the
wire but generated internally. See RFC6455 section 7.4.1 for the meanings of
the codes. Newer codes are documented at
https://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number.
Codes that have not been standardised are bucketed to save storage space.
Used to determine if changes in framing change the error rate.
</summary>
</histogram>
<histogram name="Net.WebSocket.ErrorCodes" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: needed for long-term tracking of ecosystem -->
<owner>yhirano@chromium.org</owner>
<owner>ricea@chromium.org</owner>
<summary>
Positive net error codes that WebSockets end with, including OK and ABORTED.
</summary>
</histogram>
<histogram name="Net.WebSocket.HandshakeResult2"
enum="WebSocketHandshakeResult2" expires_after="never">
<!-- expires-never: needed for long-term tracking of ecosystem -->
<owner>yhirano@chromium.org</owner>
<owner>ricea@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Results of WebSocket handshakes, including information whether the handshake
happened over HTTP/2. Use this histogram as a baseline for investigating
feature usage counters.
</summary>
</histogram>
<histogram name="Net.WebSocket.ResponseCode" enum="HttpResponseCode"
expires_after="never">
<!-- expires-never: needed for long-term tracking of ecosystem -->
<owner>yhirano@chromium.org</owner>
<owner>ricea@chromium.org</owner>
<summary>All HTTP status codes seen during WebSocket handshakes.</summary>
</histogram>
</histograms>
</histogram-configuration>