blob: dbd728512a8eb9d9b92b015560b3ab37ec6b3955 [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of 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="DnsOverHttpsSecure">
<variant name="Insecure" summary="DoH is not enabled"/>
<variant name="Secure" summary="DoH is enabled"/>
</variants>
<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="2023-05-27">
<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 name="HttpCache.AddTransactionToEntry" units="ms"
expires_after="2023-05-14">
<owner>bashi@chromium.org</owner>
<owner>net-dev@chromium.org</owner>
<summary>
The time taken an HttpCache::Transaction to be added to ActiveEntry. It
roughly captures time to acquire a write lock for an disk cache. Recorded
every time a transaction (re)starts. Not recorded if the cache is
memory-backed.
</summary>
</histogram>
<histogram name="HttpCache.BeforeSend" units="ms" expires_after="2023-06-04">
<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.BlockfileWriteInUserBuffer" enum="Boolean"
expires_after="2023-06-11">
<owner>jam@chromium.org</owner>
<owner>swarm-team@google.com</owner>
<summary>
Records whether a write operation in the blockfile implementation used the
in-memory user-buffer or went to disk. This is emitted each time a write
operation to the disk cache occurs.
</summary>
</histogram>
<histogram name="HttpCache.CreateDiskEntry" units="ms"
expires_after="2023-06-18">
<owner>yhirano@chromium.org</owner>
<owner>net-dev@chromium.org</owner>
<summary>
The time taken to create a disk cache entry. Recorded when the entry is
created for the first time in the HttpCacheTransaction. Not recorded if the
cache is memory-backed.
</summary>
</histogram>
<histogram name="HttpCache.IsNoStore{Type}" enum="Boolean"
expires_after="2023-04-28">
<owner>bashi@chromium.org</owner>
<owner>blink-network-stack@google.com</owner>
<summary>
Whether or not a response has `Cache-Control: no-store`. Recorded when a
HTTP transaction is finished. This histogram is for {Type}.
</summary>
<token key="Type">
<variant name="" summary="all request types"/>
<variant name=".MainFrameHTML" summary="main frame requests"/>
</token>
</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.OpenDiskEntry" units="ms" expires_after="2023-06-18">
<owner>yhirano@chromium.org</owner>
<owner>net-dev@chromium.org</owner>
<summary>
The time taken to open a disk cache entry. Recorded when the entry is
created for the first time in the HttpCacheTransaction. Not recorded if the
cache is memory-backed.
</summary>
</histogram>
<histogram name="HttpCache.Pattern" enum="HttpCachePattern"
expires_after="2023-07-09">
<owner>morlovich@chromium.org</owner>
<owner>jkarlin@chromium.org</owner>
<summary>For each http cache transaction, the recorded pattern.</summary>
</histogram>
<histogram name="HttpCache.PrefetchFirstReuseTime" units="ms"
expires_after="2023-07-02">
<owner>nrosenthal@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The time between the prefetch has been saved to cache and the time it was
reused for the first time. Recorded when a request matches a previously
cached prefetch response.
</summary>
</histogram>
<histogram name="HttpCache.PrefetchReuseState" enum="PrefetchReuseState"
expires_after="2023-07-02">
<owner>nrosenthal@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each request that matched a previously prefetched cached response,
record the cache state of the entry. - Is it the first reuse of the entry? -
Is it reused within the allotted time window? - Would the entry be
reused/revalidated if not for the prefetch time window? Recorded when a
request matches a previously cached prefetch response.
</summary>
</histogram>
<histogram name="HttpCache.PrefetchReuseTime" units="ms"
expires_after="2023-07-02">
<owner>nrosenthal@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The time between the prefetch has been saved to cache and the time it was
reused, including subsequent attempts to reuse beyond the first. Recorded
when a request matches a previously cached prefetch response.
</summary>
</histogram>
<histogram name="HttpCache.RestrictedPrefetchReuse"
enum="RestrictedPrefetchReused" expires_after="2023-06-11">
<owner>nrosenthal@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each http cache transaction, recorded whether a restricted prefetch (a
cross-origin prefetch with as=document) was reused, when response read from
the cache completes.
</summary>
</histogram>
<histogram name="HttpCache.TotalDiskCacheTimePerTransaction.{AccessType}"
units="ms" expires_after="2023-05-06">
<owner>bashi@chromium.org</owner>
<owner>blink-network-stack@google.com</owner>
<summary>
For each HTTP cache transaction, record total time spent {AccessType} the
disk cache. Recorded when a transaction finished. This histogram does not
record partial requests.
</summary>
<token key="AccessType">
<variant name="Read" summary="reading from"/>
<variant name="Write" summary="writing to"/>
</token>
</histogram>
<histogram name="Net.AlternateProtocolBrokenLocation"
enum="BrokenAlternateProtocolLocation" expires_after="2023-02-19">
<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="2023-05-27">
<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="2023-06-04">
<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="2023-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="2023-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.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.LeafExtendedKeyUsage.{RootType}"
enum="NetCertificateEKUStatus" expires_after="2023-02-11">
<owner>mattm@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
For successfully validated server certificates, records information of the
leaf certificate's ExtendedKeyUsage extension. The buckets are mutually
exclusive (only one value will be logged for a particular verification.)
</summary>
<token key="RootType">
<variant name="KnownRoot"/>
<variant name="LegacyKnownRoot"/>
<variant name="PrivateRoot"/>
</token>
</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.CertificateTransparency.SCT.VerificationTime"
units="microseconds" expires_after="2023-06-04">
<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="2023-06-04">
<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="M101">
<obsolete>
Removed 2022-02.
</obsolete>
<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 name="Net.CertVerifier.MacKeychainCerts.IntermediateCacheInitTime"
units="ms" expires_after="2023-04-09">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When initializing the builtin certificate verifier on Mac using the
DomainCacheFullCerts implementation of the system trust store integration,
this records how long it took to query the Mac keychain and initialize the
cache of intermediate certificates.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacKeychainCerts.IntermediateCount"
units="certificates" expires_after="2023-06-11">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When initializing the builtin certificate verifier on Mac using the
DomainCacheFullCerts or KeychainCacheFullCerts implementation of the system
trust store integration, this records the number of certificates that were
included in the cache of intermediate certificates.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacKeychainCerts.TotalCount"
units="certificates" expires_after="2023-06-11">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When initializing the builtin certificate verifier on Mac using the
DomainCacheFullCerts or KeychainCacheFullCerts implementation of the system
trust store integration, this records the number of certificates found in
the Mac keychain.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacKeychainCerts.TrustCount"
units="certificates" expires_after="2023-06-11">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When initializing the builtin certificate verifier on Mac using the
KeychainCacheFullCerts implementation of the system trust store integration,
this records the number of certificates found in the Mac keychain which had
trust records marking them as either trusted or distrusted.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacTrustDomainCacheInitTime" units="ms"
expires_after="2023-06-11">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When the builtin certificate verifier is used on Mac and the platform
trusted certificates cache is initialized (or re-initialized if keychain
trust settings changed), records how long it took to initialize all the
trust domain caches. Only recorded by the DomainCacheFullCerts
implementation, which may or may not be used depending on Finch trial
parameters.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacTrustDomainCertCount.{Domain}"
units="certificates" expires_after="2023-04-09">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When the builtin certificate verifier is used on Mac and the platform
trusted certificates cache is initialized (or re-initialized if keychain
trust settings changed), records the number of certificates read from the
{Domain} trust domain. Only counts certificates that were successfully
parsed. Only recorded by the DomainCacheFullCerts implementation, which may
or may not be used depending on Finch trial parameters.
</summary>
<token key="Domain">
<variant name="Admin"/>
<variant name="System"/>
<variant name="User"/>
</token>
</histogram>
<histogram name="Net.CertVerifier.MacTrustImplCacheInitTime" units="ms"
expires_after="2023-06-11">
<owner>mattm@chromium.org</owner>
<owner>hchao@chromium.org</owner>
<summary>
When the builtin certificate verifier is used on Mac and the platform
trusted certificates cache is initialized (or re-initialized if keychain
trust settings changed), records how long it took to initialize both the
trust cache and the intermediates cache. Only recorded by the
DomainCacheFullCerts and KeychainCacheFullCerts implementations, which may
or may not be used depending on Finch trial parameters.
</summary>
</histogram>
<histogram base="true" name="Net.CertVerifier.NameNormalizationPrivateRoots"
enum="NetCertificateNameNormalization" expires_after="2023-01-15">
<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="2023-06-11">
<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="2023-06-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="2023-06-18">
<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="2023-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.AccessCheckResult" enum="CorsAccessCheckResult"
expires_after="2023-01-15">
<owner>toyoshim@chromium.org</owner>
<owner>src/services/network/OWNERS</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="2023-01-15">
<owner>carlosil@chromium.org</owner>
<owner>estark@chromium.org</owner>
<owner>src/services/network/OWNERS</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="2023-01-15">
<owner>toyoshim@chromium.org</owner>
<owner>src/services/network/OWNERS</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="2023-06-04">
<owner>toyoshim@chromium.org</owner>
<owner>src/services/network/OWNERS</owner>
<summary>
The distribution of the CORS preflight cache query results. This counts on
each cache query.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCheckError2" enum="CorsAccessCheckError"
expires_after="2023-06-04">
<owner>toyoshim@chromium.org</owner>
<owner>src/services/network/OWNERS</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="2023-06-04">
<owner>titouan@chromium.org</owner>
<owner>clamy@chromium.org</owner>
<owner>src/services/network/OWNERS</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="2023-06-04">
<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="2023-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="2023-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.DNS.DnsConfig.AdditionalDnsQueryTypesEnabled"
enum="BooleanEnabled" expires_after="2023-06-25">
<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="2023-06-18">
<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="2023-06-18">
<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="2023-04-16">
<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.IncompatibleService"
enum="NsswitchService" expires_after="2023-10-07">
<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.NisServiceInHosts"
enum="BooleanIncluded" expires_after="2023-02-19">
<obsolete>
Deprecated 2022-20. As of M108, NIS is treated as incompatible. Instances
where it was the cause of incompatibility will be recorded in
Net.DNS.DnsConfig.Nsswitch.IncompatibleService.
</obsolete>
<owner>horo@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether or not NIS service is registered in the &quot;hosts:&quot; database
of an nsswitch.conf. Recorded when a resolv.conf file is successfully read
by Chrome and the DNS configuration read from the resolv.conf file is
considered compatible with Chrome.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.Read" enum="BooleanReceived"
expires_after="2023-06-18">
<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="2023-06-18">
<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="2023-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="2023-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="2023-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="2023-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="2023-06-04">
<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.DnsConfig.Windows.Compatibility"
enum="DNS.WindowsCompatibility" expires_after="2023-06-25">
<owner>horo@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumeration of whether or not the DNS configuration setting of Windows is
considered compatible with Chrome and the reason why it is considered
incompatible. Reported whenever the DNS configuration setting of Windows is
read by Chrome.
</summary>
</histogram>
<histogram name="Net.DNS.DnsHosts.Count" units="count" expires_after="M113">
<owner>horo@chromium.org</owner>
<owner>net-dev@chromium.org</owner>
<summary>
The number of hosts parsed from a Hosts file. Reported whenever a Hosts file
is read and parsed.
</summary>
</histogram>
<histogram name="Net.DNS.DnsHosts.EstimateMemoryUsage" units="bytes"
expires_after="M113">
<owner>horo@chromium.org</owner>
<owner>net-dev@chromium.org</owner>
<summary>
Estimated memory usage to keep the parsed result of a Hosts file. Reported
whenever a Hosts file is read and parsed.
</summary>
</histogram>
<histogram name="Net.DNS.DnsHosts.FileSize" units="bytes" expires_after="M113">
<owner>horo@chromium.org</owner>
<owner>net-dev@chromium.org</owner>
<summary>
The file size of a Hosts file. Reported whenever a Hosts file is read.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.AdditionalHttps.Requested"
enum="UnsolicitedHttpsRecordStatus" expires_after="2023-04-09">
<owner>awillia@chromium.org</owner>
<owner>doh-core@google.com</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="2023-06-25">
<owner>awillia@chromium.org</owner>
<owner>doh-core@google.com</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.Errors" enum="NetErrorCodes"
expires_after="M77">
<obsolete>
Removed in crrev.com/c/1355602.
</obsolete>
<owner>pauljensen@chromium.org</owner>
<owner>mef@chromium.org</owner>
<summary>
Counts of specific error codes returned by DnsTask if a subsequent
HostResolverSystemTask succeeded.
</summary>
</histogram>
<histogram name="Net.DNS.DnsTask.SuccessTime" units="ms"
expires_after="2023-07-09">
<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="2023-07-09">
<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="2023-06-25">
<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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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="2023-06-14">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>awillia@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.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.H3SupportedGoogleHost.TaskTypeMetadataAvailability"
enum="DNS.TaskTypeMetadataAvailability" expires_after="M110">
<obsolete>
Replaced by Net.DNS.H3SupportedGoogleHost.TaskTypeMetadataAvailability2 on
2022-12.
</obsolete>
<owner>horo@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The succeeded DNS Task type of HostResolverManager::Job (the basic internal
unit of work for non-local host resolutions, potentially merging redundant
requests from Chrome) that succeeded with or without valid HTTPS DNS
metadata. This is recorded when a DNS Job succeeded for a domain if the
domain is one of Google hosts which that is expected to have valid HTTPS DNS
metadata with HTTP/3 support.
</summary>
</histogram>
<histogram name="Net.DNS.H3SupportedGoogleHost.TaskTypeMetadataAvailability2"
enum="DNS.TaskTypeMetadataAvailability" expires_after="2023-05-31">
<owner>horo@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The succeeded DNS Task type of HostResolverManager::Job (the basic internal
unit of work for non-local host resolutions, potentially merging redundant
requests from Chrome) that succeeded with or without valid HTTPS DNS
metadata. This is recorded for successful https- or wss-schemed queries to a
set of Google hosts expected to have HTTPS DNS metadata, if the query type
requests the HTTPS record.
</summary>
</histogram>
<histogram name="Net.DNS.HTTPSSVC.RecordHttps.{secure}.ExpectNoerror.DnsRcode"
enum="HttpssvcDnsRcode" expires_after="2023-10-01">
<owner>horo@chromium.org</owner>
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</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>
<token key="secure" variants="DnsOverHttpsSecure"/>
</histogram>
<histogram name="Net.DNS.HTTPSSVC.RecordHttps.{secure}.ExpectNoerror.Parsable"
enum="BooleanValid" expires_after="2023-10-01">
<owner>horo@chromium.org</owner>
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</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>
<token key="secure" variants="DnsOverHttpsSecure"/>
</histogram>
<histogram
name="Net.DNS.HTTPSSVC.RecordHttps.{secure}.ExpectNoerror.RecordWithError"
enum="Boolean" expires_after="2023-10-01">
<owner>horo@chromium.org</owner>
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</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>
<token key="secure" variants="DnsOverHttpsSecure"/>
</histogram>
<histogram
name="Net.DNS.HTTPSSVC.RecordHttps.{secure}.ExpectNoerror.ResolveTimeAddressRecord"
units="ms" expires_after="2023-10-01">
<owner>horo@chromium.org</owner>
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records how many ms the DNS server took to respond to address queries.
Histograms are emitted at the completion of a DnsTask's final transaction.
</summary>
<token key="secure" variants="DnsOverHttpsSecure"/>
</histogram>
<histogram
name="Net.DNS.HTTPSSVC.RecordHttps.{secure}.ExpectNoerror.ResolveTimeExperimental"
units="ms" expires_after="2023-10-01">
<owner>horo@chromium.org</owner>
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</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>
<token key="secure" variants="DnsOverHttpsSecure"/>
</histogram>
<histogram
name="Net.DNS.HTTPSSVC.RecordHttps.{secure}.ExpectNoerror.ResolveTimeRatio"
units="scaled ratio (% / 10)" expires_after="2023-10-01">
<owner>horo@chromium.org</owner>
<owner>davidben@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records a ratio indicating the relative HTTPS query 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>
<token key="secure" variants="DnsOverHttpsSecure"/>
</histogram>
<histogram name="Net.DNS.InsecureDnsTask.FailureTime" units="ms"
expires_after="2023-02-26">
<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="2023-03-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 failed.
</summary>
</histogram>
<histogram name="Net.DNS.JobQueueTime.PerTransaction" units="ms"
expires_after="2023-06-04">
<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="2023-03-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="2023-06-11">
<owner>awillia@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="2023-06-11">
<owner>awillia@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="2023-06-11">
<owner>awillia@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="2023-06-11">
<owner>awillia@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.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="2023-04-23">
<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="2023-04-23">
<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="2023-04-23">
<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="2023-06-14">
<owner>awillia@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="2023-02-19">
<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.SystemTask.FailureTime" units="ms"
expires_after="2023-08-28">
<owner>horo@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of time taken by HostResolverSystemTask (the grouping of all
individual DNS queries for a single instance of resolving a name using the
system resolver) in resolutions that failed.
</summary>
</histogram>
<histogram name="Net.DNS.SystemTask.SuccessTime" units="ms"
expires_after="2023-08-28">
<owner>horo@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Duration of time taken by HostResolverSystemTask (the grouping of all
individual DNS queries for a single instance of resolving a name using the
system resolver) in resolutions that succeeded.
</summary>
</histogram>
<histogram base="true" name="Net.DNS.UI.DropdownSelectionEvent"
enum="DohProviderId" expires_after="2023-07-02">
<!-- 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="2023-06-14">
<owner>awillia@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="2023-06-18">
<owner>awillia@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="2023-04-23">
<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="2023-04-23">
<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="2023-02-19">
<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="2023-06-14">
<owner>awillia@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="2023-04-23">
<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="2023-05-14">
<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.ErrorCodesForIsolatedAppScheme" enum="NetErrorCodes"
expires_after="2023-11-08">
<owner>cmfcmf@chromium.org</owner>
<owner>peletskyi@chromium.org</owner>
<summary>
Positive net error codes that HTTP requests using the isolated-app: URL
scheme 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.ErrorPageCounts" enum="NetErrorPageEvents"
expires_after="2023-06-25">
<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.ErrorPageCounts.WebAppAlternativeErrorPage"
enum="NetErrorCodes" expires_after="2023-06-11">
<owner>ericwilligers@chromium.org</owner>
<owner>alexbn@chromium.org</owner>
<summary>
Counts the number of times web apps receive `ERR_INTERNET_DISCONNECTED` and
the alternative error page (rather than the dino) is shown. Reported when
the error page html is being prepared. See
`NetErrorHelper::GenerateLocalizedErrorPage` (crbug.com/1280518).
</summary>
</histogram>
<histogram name="Net.ExpectCT.HeaderPresentOnResponse" enum="BooleanPresent"
expires_after="2023-06-04">
<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.HasBrokenNEON" enum="BooleanBroken"
expires_after="2023-02-19">
<obsolete>
Removed 2023-01. The workaround is now effectively disabled in Chromium (but
not Cronet, as of writing), and the latest Chromium-side metrics report
0.00% of devices are still affected.
</obsolete>
<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.HttpAuthNtlmV2Usage" enum="HttpAuthNtlmV2Usage"
expires_after="M79">
<owner>mmenke@chromium.org</owner>
<owner>src/net/OWNERS</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.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.CanIncludeCookies" enum="Boolean"
expires_after="2023-06-18">
<owner>cfredric@chromium.org</owner>
<owner>kaustubhag@chromium.org</owner>
<summary>
Counts the HTTP requests which involve reading from the cookie jar to
construct a Cookie header vs. the HTTP requests which are disallowed from
including a Cookie header.
</summary>
</histogram>
<histogram name="Net.HttpJob.MainJobWaitTimeWithAvailableSpdySession"
units="ms" expires_after="2023-06-25">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Wait time of main job while there is an available SPDY session but no QUIC
session.
</summary>
</histogram>
<histogram name="Net.HttpJob.MainJobWaitTimeWithoutAvailableSpdySession"
units="ms" expires_after="2023-06-25">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Wait time of main job while there is no available SPDY session and no QUIC
session.
</summary>
</histogram>
<histogram name="Net.HttpJob.PrefilterBytesRead" units="bytes"
expires_after="2023-04-16">
<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-11-13">
<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="2023-03-19">
<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="2023-07-02">
<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="2023-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.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="2023-06-25">
<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.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="2023-08-22">
<owner>davidben@chromium.org</owner>
<owner>src/third_party/boringssl/OWNERS</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.NewConnectionCost"
enum="NetworkConnectionCost" expires_after="2023-07-02">
<owner>fbeaufort@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
The new network connection cost any time a change to the device's active
default network is observed.
</summary>
</histogram>
<histogram name="Net.NetworkChangeNotifier.NewConnectionType"
enum="NetworkConnectionType" expires_after="2023-07-02">
<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.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="2023-03-29">
<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.NumQuicSessionsAtShutdown" units="units"
expires_after="2023-06-04">
<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.OnTransferSizeUpdated.Experimental.OverridenBy"
enum="OnTransferSizeUpdatedFrom" expires_after="2023-06-18">
<owner>amanvr@chromium.org</owner>
<owner>carlscab@chromium.org</owner>
<owner>woa-performance@google.com</owner>
<summary>
Records the number of times OnTransferSizeUpdated is called from different
overriding methods. This UMA is useful to understand the distribution of
calls being made to this method and will help see the reductions in IPC when
we implement a prototype (b/257057692) where we remove unnecessary
URLLoaderClient::OnTransferSizeUpdated IPCs.
</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="2023-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="2023-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="2023-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-09-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="2023-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="2023-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="2023-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="2023-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="2023-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.QuicConnection.WritePacketStatus" enum="QuicWriteStatus"
expires_after="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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-09-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="2023-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.QuicHttpStream.ProcessResponseHeaderSuccess"
enum="BooleanSuccess" expires_after="2023-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="2023-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.QuicMultiPort.AltPortFailureWhenPathDegradingVsGeneral"
units="%" expires_after="2023-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The percentage comparison between alternative port probe failure when
default path is degrading and in general.
</summary>
</histogram>
<histogram name="Net.QuicMultiPort.AltPortRttWhenPathDegradingVsGeneral"
units="%" expires_after="2023-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The percentage comparison between alternative port response time when
default path is degrading and response time in general.
</summary>
</histogram>
<histogram name="Net.QuicMultiPort.NumDefaultPathDegrading" units="times"
expires_after="2023-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of time that a session which has multi-port enabled enters
path-degrading state on the default path.
</summary>
</histogram>
<histogram name="Net.QuicMultiPort.NumMultiPortFailureWhenPathDegrading"
units="times" expires_after="2023-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of alternative port probing failure when the default path is
degrading.
</summary>
</histogram>
<histogram name="Net.QuicMultiPort.NumMultiPortFailureWhenPathNotDegrading"
units="times" expires_after="2023-05-11">
<owner>renjietang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of alternative port probing failure when the default path is
healthy.
</summary>
</histogram>
<histogram name="Net.QuicNetworkDegradingDurationTillConnected" units="ms"
expires_after="2023-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="2023-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="2023-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="2023-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.QuicNumServerConfig.UpdateMessagesIgnored"
enum="BooleanIgnored" expires_after="2023-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="2023-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="2023-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="2023-06-04">
<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="2023-06-04">
<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="2023-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-09-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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-09-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="2023-06-04">
<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="2023-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="2023-05-27">
<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="2023-06-04">
<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="2023-05-27">
<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="2023-06-04">
<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-11-13">
<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="2023-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="2023-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="2023-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-11-13">
<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-09-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-06-04">
<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.ConnectionStateAfterDNS"
enum="ConnectionStateAfterDNS" expires_after="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-05-27">
<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="2023-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-09-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="2023-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="2023-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="2023-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="2023-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="2023-01-15">
<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="2023-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.HandshakeStatusOnMigratingToServerPreferredAddress"
enum="BooleanConfirmed" expires_after="2024-05-11">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The handshake status when the session attempts to validate received server
preferred address.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeStatusOnPortMigration"
enum="BooleanConfirmed" expires_after="2023-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="2023-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-09-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-09-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-09-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="2023-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="2023-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="2023-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="2023-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.PerConnection2" units="count"
expires_after="2023-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="2023-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="2023-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="2023-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.LastInFlightPacketSentTimeFromHandshakeCompletionWithPublicReset"
units="ms" expires_after="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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-12-18">
<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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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.OnServerPreferredAddressAvailable"
enum="QuicConnectionMigrationStatus" expires_after="2024-06-04">
<owner>fayang@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The result of a QUIC server preferred address migration attempt.
</summary>
</histogram>
<histogram name="Net.QuicSession.OutOfOrderGapReceived" units="units"
expires_after="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-05-27">
<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="2023-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="2024-06-18">
<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="2023-02-12">
<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="2023-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="2023-06-04">
<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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-06-04">
<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="2023-06-04">
<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="2023-06-04">
<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="2023-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="2023-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.EnableExtendedConnect"
enum="Boolean" expires_after="2023-05-11">
<owner>momoka@google.com</owner>
<owner>ricea@chromium.org</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The value of the SETTINGS_ENABLE_CONNECT_PROTOCOL parameter received on an
HTTP/3 connection, if the parameter is not present log false.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.MaxHeaderListSize2"
units="bytes" expires_after="2023-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-09-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-03-19">
<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="2023-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="2023-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="2023-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="2023-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="2023-06-04">
<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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-07-09">
<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="2023-06-04">
<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="2023-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="2023-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="2023-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="2023-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="2023-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.ConsecutivePTOCount"
units="units" expires_after="2023-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 PTOs.
</summary>
</histogram>
<histogram name="Net.QuicSession.TimedOutWithOpenStreams.ConsecutiveRTOCount"
units="units" expires_after="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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.ValidConnectionTime" units="ms"
expires_after="2023-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-09-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="2023-07-09">
<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="2023-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="2023-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="2023-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="2023-06-04">
<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="2023-06-04">
<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="2023-03-19">
<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="2023-06-04">
<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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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="2023-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.Radio.PossibleWakeupTrigger.{ProtocolType}WriteAnnotationId"
enum="TrafficAnnotationUniqueIdHash" expires_after="2023-02-22">
<owner>bashi@chromium.org</owner>
<owner>blink-network-stack@google.com</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="2023-02-18">
<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.UploadHeaderType"
enum="NetReportingUploadHeaderType" expires_after="2023-06-04">
<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="2023-07-09">
<owner>dylancutler@google.com</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="2023-06-18">
<owner>dylancutler@google.com</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="2023-04-25">
<owner>dylancutler@google.com</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="BooleanMatched" expires_after="2023-07-09">
<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="BooleanMatched" expires_after="2023-07-09">
<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.SocketUnchangeableReceiveBuffer" units="Bytes"
expires_after="2023-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="2023-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="2023-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="2023-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.SpdyIPPoolDomainMatch" enum="SpdyIPPoolDomainMatch"
expires_after="2023-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="2023-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-09-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="2023-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="2023-06-04">
<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="2023-09-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.AlpsDecoderStatus.Bypassed"
enum="AlpsDecoderError" expires_after="2023-09-11">
<owner>arichiv@chromium.org</owner>
<owner>src/net/OWNERS</owner>
<summary>
Net.SpdySession.AlpsDecoderStatus records errors returned by the AlpsDecoder
class in HTTP/2 responses. Errors logged to that histogram cause a session
termination, which isn't always desired. This histogram records errors that
we want to note, but that shouldn't stop the connection.
</summary>
</histogram>
<histogram name="Net.SpdySession.AlpsSettingParameterCount" units="parameters"
expires_after="2023-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="2023-06-04">
<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="2023-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="2023-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="2023-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="2023-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" enum="Boolean"
expires_after="2023-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="2023-12-06">
<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="2023-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="2023-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="2023-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="2023-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="2023-12-06">
<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="2023-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="2023-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.ECHResult" enum="SSLECHResult"
expires_after="2023-07-08">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
For each TLS connection that offered Encrypted ClientHello (ECH), what was
the result of that connection. In particular, this measures if the recovery
flow was needed and, if so, whether it fixed the connection.
</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_ECH" enum="NetErrorCodes"
expires_after="2023-07-08">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Counts of specific error codes returned when opening an SSL connection.
Recorded for connections to servers that advertise support for Encrypted
ClientHello (ECH) in DNS. (Specifically, connections where the HTTPS record
used included an ECHConfigList.)
</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_ECH" units="ms"
expires_after="2023-07-08">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</owner>
<summary>
Time from when the Connect() starts until it completes. Recorded for
successful connections to servers that advertise support for Encrypted
ClientHello (ECH) in DNS. (Specifically, connects where the HTTPS record
used included an ECHConfigList.)
</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="2023-07-09">
<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="2023-07-09">
<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-08-14">
<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="M116">
<owner>cthomp@chromium.org</owner>
<owner>trusty-transport@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.
This histogram was temporarily expired from M92 until M104.
</summary>
</histogram>
<histogram name="Net.SSLLegacyCryptoFallback" enum="SSLLegacyCryptoFallback"
expires_after="2022-12-25">
<obsolete>
Replaced by Net.SSLLegacyCryptoFallback2. This one incorrectly counted all
SHA-1-based algorithms in certificates, rather than just RSASSA-PKCS1-v1_5.
</obsolete>
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</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.SSLLegacyCryptoFallback2" enum="SSLLegacyCryptoFallback"
expires_after="2023-07-21">
<owner>davidben@chromium.org</owner>
<owner>trusty-transport@chromium.org</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="2023-06-04">
<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="2023-11-20">
<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="2023-06-04">
<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="2023-06-18">
<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">
<obsolete>
Removed 2022-02.
</obsolete>
<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">
<obsolete>
Removed 2022-02.
</obsolete>
<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">
<obsolete>
Removed 2022-02.
</obsolete>
<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">
<obsolete>
Removed 2022-02.
</obsolete>
<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="2023-12-06">
<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="2023-12-06">
<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.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 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="2023-02-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-10-30">
<!-- 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}"
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>
</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-08-28">
<!-- 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.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="2023-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.URLLoaderThrottleDeferTime.WillProcessResponse.{Throttle}"
units="ms" expires_after="2023-02-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="2023-02-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="2023-02-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="2023-02-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="2023-04-16">
<!-- 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="2023-04-16">
<!-- 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.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>