<!--
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
[email protected].
-->
<histogram-configuration>
<histograms>
<variants name="DnsOverHttpsSecure">
<variant name="Insecure" summary="DoH is not enabled"/>
<variant name="Secure" summary="DoH is enabled"/>
</variants>
<variants name="DnsResolveTimeDiffBucket">
<variant name="FirstRecord10msTo25ms"
summary="between 10ms (inclusive) and 25ms (exclusive)"/>
<variant name="FirstRecord25msTo50ms"
summary="between 25ms (inclusive) and 50ms (exclusive)"/>
<variant name="FirstRecord50msTo100ms"
summary="between 50ms (inclusive) and 100ms (exclusive)"/>
<variant name="FirstRecord100msTo250ms"
summary="between 100ms (inclusive) and 250ms (exclusive)"/>
<variant name="FirstRecord250msTo500ms"
summary="between 250ms (inclusive) and 500ms (exclusive)"/>
<variant name="FirstRecord500msTo1s"
summary="between 500ms (inclusive) and 1s (exclusive)"/>
<variant name="FirstRecordFasterThan10ms" summary="less than 10ms"/>
<variant name="FirstRecordSlowerThan1s" summary="more than or equal to 1s"/>
</variants>
<variants name="NetworkTransactionBlockedHostType">
<variant name=""/>
<variant name="GoogleHost"/>
</variants>
<variants name="NetworkTransactionBlockedProtocol">
<variant name="H1"/>
<variant name="H2"/>
<variant name="H3"/>
<variant name="Unknown"/>
</variants>
<variants name="SuccessOrFailure">
<variant name="Failure" summary="Operation failed"/>
<variant name="Success" summary="Operation succeeded"/>
</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="Crypto.TPMDuration.Virtual.{Operation}{SignatureAlgorithm}"
units="ms" expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records status for various virtual TPM
operations that Chrome artificially triggers on startup for measurement
purposes. Note that if new key creation fails, wrapped key creation and
message signing will not take place.
</summary>
<token key="Operation">
<variant name="MessageSigning"/>
<variant name="NewKeyCreation"/>
<variant name="WrappedKeyCreation"/>
</token>
<token key="SignatureAlgorithm">
<variant name="ECDSA"/>
<variant name="RSA"/>
</token>
</histogram>
<histogram name="Crypto.TPMDuration.{Operation}{SignatureAlgorithm}" units="ms"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records status for various TPM operations
that Chrome artificially triggers on startup for measurement purposes. Note
that if new key creation fails, wrapped key creation and message signing
will not take place.
</summary>
<token key="Operation">
<variant name="MessageSigning"/>
<variant name="NewKeyCreation"/>
<variant name="WrappedKeyCreation"/>
</token>
<token key="SignatureAlgorithm">
<variant name="ECDSA"/>
<variant name="RSA"/>
</token>
</histogram>
<histogram name="Crypto.TpmError.VirtualCreateKey" units="win32 error code"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error code returned by NCryptCreatePersistedKey. One of the error codes from
https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4.
</summary>
</histogram>
<histogram name="Crypto.TpmError.VirtualFinalizeKey" units="win32 error code"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error code returned by NCryptFinalizeKey. One of the error codes from
https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4.
</summary>
</histogram>
<histogram name="Crypto.TpmError.VirtualOpenKey" units="win32 error code"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error code returned by NCryptOpenKey. One of the error codes from
https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4.
</summary>
</histogram>
<histogram name="Crypto.TpmError.VirtualOpenStorage" units="win32 error code"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error code returned by NCryptOpenStorageProvider. One of the error codes
from https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-4.
</summary>
</histogram>
<histogram name="Crypto.TPMOperation.Virtual.{Operation}{SignatureAlgorithm}"
enum="BooleanSuccess" expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records status for various virtual TPM
actions that Chrome artificially triggers on startup for measurement
purposes. Note that if new key creation fails, wrapped key creation and
message signing will not take place.
</summary>
<token key="Operation">
<variant name="MessageSigning"/>
<variant name="MessageVerify"/>
<variant name="NewKeyCreation"/>
<variant name="WrappedKeyCreation"/>
</token>
<token key="SignatureAlgorithm">
<variant name="ECDSA"/>
<variant name="RSA"/>
</token>
</histogram>
<histogram name="Crypto.TPMOperation.Win.{Operation}{SignatureAlgorithm}.Error"
units="win32 error code" expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/crypto/OWNERS</owner>
<summary>
Collected on Windows when an operation failed while using a TPM-protected
key. Represents the Win32 status returned by the API corresponding with that
operation.
</summary>
<token key="Operation">
<variant name="MessageSigning"/>
<variant name="NewKeyCreation"/>
<variant name="WrappedKeyCreation"/>
</token>
<token key="SignatureAlgorithm">
<variant name="ECDSA"/>
<variant name="RSA"/>
</token>
</histogram>
<histogram name="Crypto.TPMOperation.{Operation}{SignatureAlgorithm}"
enum="BooleanSuccess" expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records status for various TPM actions that
Chrome artificially triggers on startup for measurement purposes. Note that
if new key creation fails, wrapped key creation and message signing will not
take place.
</summary>
<token key="Operation">
<variant name="MessageSigning"/>
<variant name="MessageVerify"/>
<variant name="NewKeyCreation"/>
<variant name="WrappedKeyCreation"/>
</token>
<token key="SignatureAlgorithm">
<variant name="ECDSA"/>
<variant name="RSA"/>
</token>
</histogram>
<histogram name="Crypto.TPMSupport2" enum="TPMSupport"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records whether a TPM is present and, if
so, what the best supported algorithm is.
</summary>
</histogram>
<histogram name="Crypto.TPMSupportType" enum="TPMType"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records whether a virtual and/or hardware
TPM is present.
</summary>
</histogram>
<histogram name="Crypto.UnexportableKeys.BackgroundTaskDuration{Priority}"
units="ms" expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time that passed between starting a TPM operation on an
unexportable_keys::UnexportableKeyService and completing the operation
(either successfully or not).
This time includes both the time spent waiting in a task queue and the
execution time. These sub-intervals are covered by
Crypto.UnexportableKeys.BackgroundTaskQueueWaitDuration and
Crypto.UnexportableKeys.BackgroundTaskRunDuration histograms
correspondingly.
Includes operations that were scheduled with {Priority}.
Recorded right after a TPM operation completes.
</summary>
<token key="Priority">
<variant name="" summary="all priorities"/>
<variant name=".BestEffort" summary="the BestEffort priority"/>
<variant name=".UserBlocking" summary="the UserBlocking priority"/>
<variant name=".UserVisible" summary="the UserVisible priority"/>
</token>
</histogram>
<histogram
name="Crypto.UnexportableKeys.BackgroundTaskQueueWaitDuration{Priority}"
units="ms" expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time spent waiting in a task queue for the subset of TPM
operations that are asynchronously scheduled through
unexportable_keys::UnexportableKeyService.
This duration is a sub-interval of
Crypto.UnexportableKeys.BackgroundTaskDuration.
Includes operations that were scheduled with {Priority}.
Recorded right before a TPM operation is sent to the background thread for
execution.
</summary>
<token key="Priority">
<variant name="" summary="all priorities"/>
<variant name=".BestEffort" summary="the BestEffort priority"/>
<variant name=".UserBlocking" summary="the UserBlocking priority"/>
<variant name=".UserVisible" summary="the UserVisible priority"/>
</token>
</histogram>
<histogram name="Crypto.UnexportableKeys.BackgroundTaskResult{TaskType}"
enum="UnexportableKeyServiceResult" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of the subset of TPM operations that are scheduled
asynchronously through unexportable_keys::UnexportableKeyService. In some
error cases, the result might be returned synchronously.
Recorded right after a TPM operation completes. Recorded only for
{TaskType}.
</summary>
<token key="TaskType">
<variant name=".FromWrappedKey"
summary="operations to create a signing key from a wrapped key"/>
<variant name=".GenerateKey"
summary="operations to generate a new signing key"/>
<variant name=".Sign" summary="signing operations"/>
</token>
</histogram>
<histogram name="Crypto.UnexportableKeys.BackgroundTaskRunDuration{TaskType}"
units="ms" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time that passed between starting executing a TPM operation on a
background thread and completing the operation (either successfully or not).
Includes only a subset of TPM operations that are scheduled asynchronously
through unexportable_keys::UnexportableKeyService.
This duration is a sub-interval of
Crypto.UnexportableKeys.BackgroundTaskDuration. Unlike
Crypto.UnexportableKeys.BackgroundTaskDuration, this histogram is split by a
task type instead of a task priority because the priority doesn't matter
once a task starts executing. Only one task can be executed at the time due
to TPM limitations.
Includes {TaskType}.
Recorded right after a TPM operation completes.
</summary>
<token key="TaskType">
<variant name="" summary="all operation types"/>
<variant name=".FromWrappedKey"
summary="only operations to create a signing key from a wrapped key"/>
<variant name=".GenerateKey"
summary="only operations to generate a new signing key"/>
<variant name=".Sign" summary="only signing operations"/>
</token>
</histogram>
<histogram name="Crypto.VirtualKeySupport" enum="TPMSupport"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Collected on Windows at startup. Records whether a virtual TPM is present
and, if so, what the best supported algorithm is.
</summary>
</histogram>
<histogram name="HttpCache.AccessToDone2" units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.CreateDiskEntry" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>For each http cache transaction, the recorded pattern.</summary>
</histogram>
<histogram name="HttpCache.TotalDiskCacheTimePerTransaction.{AccessType}"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-02-25">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.AlternateServiceForDnsAlpnH3Failed" enum="NetErrorCodes"
expires_after="2024-07-28">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Positive net error codes that failed alternative protocol requests end with.
Recorded only when an DNS alpn H3 job fails, and the main job succeeds.
</summary>
</histogram>
<histogram name="Net.AlternativeServiceTypeForRequest"
enum="AlternativeServiceType" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Information about the AlternativeService used for each request.
Warning: this histogram was expired from 2024-04-03 to 2024-05-31; data may
be missing.
</summary>
</histogram>
<histogram name="Net.Certificate.ChangeNotification"
enum="CertificateChangeNotificationType" expires_after="never">
<!-- expires-never: core cert verifier metric; monitored by Chirps -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded each time a platform certificate change notification occurs. (Note
that on Linux and ChromeOS these events are generated by the Chrome
Certificate Manager but there are no notifications for changes that occurred
outside of Chrome, and on Windows there are no notifications at all.)
This does not count internal changes like Chrome Root Store and CRLSet
updates.
</summary>
</histogram>
<histogram name="Net.Certificate.TLSFeatureExtensionWithPrivateRoot"
enum="Boolean" expires_after="M77">
<owner>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</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.SCTOrigin" enum="SCTOrigin"
expires_after="2025-07-21">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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.AndroidTrustStoreInit" units="ms"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time needed to initialize the Android platform Trust store when using the
builtin certificate verifier on Android.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacKeychainCerts.IntermediateCacheInitTime"
units="ms" expires_after="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</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.
Warning: this histogram was expired from 2023-04-09 to 2023-06-07(M116);
data may be missing.
</summary>
</histogram>
<histogram name="Net.CertVerifier.MacKeychainCerts.IntermediateCount"
units="certificates" expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</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.
Warning: this histogram was expired from 2023-04-09 to 2023-06-07(M116);
data may be missing.
</summary>
<token key="Domain">
<variant name="Admin"/>
<variant name="System"/>
<variant name="User"/>
</token>
</histogram>
<histogram name="Net.CertVerifier.MacTrustImplCacheInitTime" units="ms"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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_First_Job_Latency" units="ms"
expires_after="never">
<!-- expires-never: core cert verifier metric; monitored by Chirps -->
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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.ConnectionInfo.MainFrame" enum="ConnectionInfo"
expires_after="2025-01-05">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For each CONTENT_DECODING_FAILED, record the filter that failed.
</summary>
</histogram>
<histogram name="Net.ContentEncodingType" enum="ContentEncodingType"
expires_after="2024-12-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For each response stream, record the Content-Encoding type. If multiple
encoding types are specified, this histogram only records the last one.
Note: Compression Dictionary Transport headers (i.e. "sbr" for
Shared Brotli) will be recorded as "Unknown" in this histogram.
</summary>
</histogram>
<histogram name="Net.Cors.PreflightCheckError2" enum="CorsAccessCheckError"
expires_after="2024-12-30">
<owner>[email protected]</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="2024-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-09-29">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-08-04">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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.DnsClientCapability"
enum="DNS.DnsClientCapability" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Whether DNS clients can and are allowed to perform secure and insecure DNS
transactions. Logged when HostResolverManager receives a host resolution
request using HostResolverSource::ANY.
</summary>
</histogram>
<histogram name="Net.DNS.DnsConfig.Nsswitch.Compatible" enum="BooleanValid"
expires_after="2025-02-10">
<owner>[email protected]</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.IncompatibleService"
enum="NsswitchService" expires_after="2024-12-08">
<owner>[email protected]</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.Read" enum="BooleanReceived"
expires_after="2024-12-08">
<owner>[email protected]</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="2024-12-30">
<owner>[email protected]</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="2024-12-30">
<owner>[email protected]</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.SecureDnsMode" enum="SecureDnsModeDetails"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-08-01">
<owner>[email protected]</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.DnsConfig.Windows.ReadSystemSettings{RetryCount}"
enum="DNS.WindowsReadSystemSettingsResult" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
The result of reading system DNS settings. Reported whenever Chrome tries to
read the DNS configuration setting of Windows.
</summary>
<token key="RetryCount">
<variant name="0"/>
<variant name="1"/>
<variant name="2"/>
<variant name="3"/>
</token>
</histogram>
<histogram name="Net.DNS.DnsHosts.Count" units="count"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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.SuccessTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</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="2024-12-08">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-06-17">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-06-17">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-06-17">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-07-22">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-07-22">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-06-17">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-06-17">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-06-17">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Enumerated status of the reason why the built-in DNS resolver has detected a
"low entropy" situation for DNS over UDP and has switched to DNS
over TCP.
</summary>
</histogram>
<histogram name="Net.DNS.H3SupportedGoogleHost.TaskTypeMetadataAvailability2"
enum="DNS.TaskTypeMetadataAvailability" expires_after="2025-02-10">
<owner>[email protected]</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="2024-10-06">
<owner>[email protected]</owner>
<owner>[email protected]</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,
"TimedOut" 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="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-08-04">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-08-04">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-07-22">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-09-22">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-07-22">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-12-08">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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>[email protected]</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>[email protected]</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>[email protected]</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 base="true" name="Net.DNS.ResolveContext.DohAutoupgrade.Status"
enum="DohServerAutoupgradeStatus" expires_after="2025-07-22">
<!-- Name completed by histogram_suffixes
name="DohProviderId" -->
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
The state of the Secure DNS (DoH) auto-upgrade functionality. This histogram
is only emitted by clients with secure DNS set to automatic mode, and the
emission occurs one minute after the insecure DNS to secure DNS auto-upgrade
network probing begins. There will be one histogram emission per DoH
provider in the system DNS configuration per NetworkContext that allows
using secure DNS queries, and re-emissions can occur each time the DNS
configuration changes.
</summary>
</histogram>
<histogram name="Net.DNS.ResolveError.Fast" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</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.ResolveTimeDiff.AddressRecordBeforeHTTPS.{Bucket}"
units="ms" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time difference between the first address record (A or AAAA) and HTTPS
record were resolved. Recorded when an address record was resolved before
HTTPS record and the address record was resolved {Bucket}.
</summary>
<token key="Bucket" variants="DnsResolveTimeDiffBucket"/>
</histogram>
<histogram name="Net.Dns.ResolveTimeDiff.{Variant}.{Bucket}" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time difference between A and AAAA records were resolved. Recorded when
{Variant}, and the first one was resolved {Bucket}.
</summary>
<token key="Bucket" variants="DnsResolveTimeDiffBucket"/>
<token key="Variant">
<variant name="AAAABeforeA" summary="AAAA resolved before A"/>
<variant name="ABeforeAAAA" summary="A resolved before AAAA"/>
</token>
</histogram>
<histogram name="Net.DNS.SystemTask.FailureTime" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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 name="Net.DNS.UI.ProbeAttemptSuccess" enum="Boolean"
expires_after="2023-12-17">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2024-10-28">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-05-08">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-05-08">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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.
Warning: this histogram was expired from 2023-04-23 to 2023-06-12; data may
be missing.
</summary>
</histogram>
<histogram name="Net.DNS.UpgradeConfig.Ineligible.DohSpecified" enum="Boolean"
expires_after="2025-05-08">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-05-08">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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="2025-05-08">
<owner>[email protected]</owner>
<owner>src/net/dns/OWNERS</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>[email protected]</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="2024-07-26">
<owner>[email protected]</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.ErrorCodesForHTTPSGoogleMainFrame3" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</owner>
<summary>
Positive net error codes that requests for pages end with, including net::OK
and net::ERR_ABORTED. This only counts loads in "main frames" 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.ErrorCodesForIsolatedAppScheme" enum="NetErrorCodes"
expires_after="2025-05-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/chrome/browser/web_applications/isolated_web_apps/OWNERS</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>[email protected]</owner>
<summary>
Positive net error codes that requests for pages end with, including net::OK
and net::ERR_ABORTED. This only counts loads in "main frames" (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>[email protected]</owner>
<summary>
Net error codes that requests for "subresources" end with,
including net::OK and net::ERR_ABORTED.
</summary>
</histogram>
<histogram name="Net.ErrorPageCounts" enum="NetErrorPageEvents"
expires_after="2025-02-10">
<owner>[email protected]</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.WebAppAlternativeErrorPage"
enum="NetErrorCodes" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</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.HttpAuthCount" enum="HttpAuthCount"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Per-authentication-scheme counts of HTTP authentication attempts and
rejections.
</summary>
</histogram>
<histogram name="Net.HttpAuthNtlmV2Usage" enum="HttpAuthNtlmV2Usage"
expires_after="M79">
<owner>[email protected]</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
"NTLM Start" count in the "Net.HttpAuthCount" histogram.
Note that NTLMv2 being enabled makes the client behavior equivalent to
setting LmCompatibilityLevel to 3 or higher.
</summary>
</histogram>
<histogram name="Net.HttpAuthTarget" enum="HttpAuthTarget"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Per-authentication-scheme counts of HTTP authentication targets, such as
secure servers or proxies.
Emitted at the same time as Net.HttpAuthCount, on every HTTP authentication
attempt or rejection.
</summary>
</histogram>
<histogram name="Net.HttpContentLengthDifferenceWithValidOCL" units="bytes"
expires_after="M85">
<owner>[email protected]</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>[email protected]</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 "Http.Direct" instead of
"Http.Other".
</summary>
</histogram>
<histogram name="Net.HttpJob.BytesReceived2" units="bytes"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<summary>
Total bytes received over the network for an HttpJob request. This is
measured when the HttpJob is completed.
Bytes after switching protocols (such as WebSockets) are not counted.
There is no previous version of this metric. It is numbered to be in sync
with similar metrics. Unlike PrefilterBytesRead, this metric accounts for
all HTTP stream bytes (not just the content body), counts bytes for aborted
jobs, and network bytes in 304 Not Modified exchanges (rather than cached
content bodies).
</summary>
</histogram>
<histogram name="Net.HttpJob.BytesSent2" units="bytes"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<summary>
Total bytes sent over the network for an HttpJob request. This is measured
when the HttpJob is completed.
Bytes after switching protocols (such as WebSockets) are not counted.
There is no previous version of this metric. It is numbered to be in sync
with similar metrics.
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.AllowListMatch.BytesReceived2"
units="bytes" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<summary>
Total bytes received over the network for an HttpJob request that would be
covered by IP Protection based on match with respect to the masked domain
list alone. This is irrespective of token and proxy availability. Any bypass
logic (e.g. first party to top level frame) will be considered, if set.
These bytes will be recorded even if `EnableIpPrivacyProxy` is `false`. This
is measured when the HttpJob is completed.
There is no previous version of this metric. It is numbered to be in sync
with similar metrics. Unlike PrefilterBytesRead, this metric accounts for
all HTTP stream bytes (not just the content body), counts bytes for aborted
jobs, and network bytes in 304 Not Modified exchanges (rather than cached
content bodies).
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.AllowListMatch.BytesSent"
units="bytes" expires_after="2025-01-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<summary>
Total bytes sent over the network for an HttpJob request that would be
covered by IP Protection based on match with respect to the masked domain
list alone. This is irrespective of token and proxy availability. Any bypass
logic (e.g. first party to top level frame) will be considered, if set.
These bytes will be recorded even if `EnableIpPrivacyProxy` is `false`. This
is measured when the HttpJob is completed.
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.AllowListMatch.BytesSent2"
units="bytes" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<summary>
Total bytes sent over the network for an HttpJob request that would be
covered by IP Protection based on match with respect to the masked domain
list alone. This is irrespective of token and proxy availability. Any bypass
logic (e.g. first party to top level frame) will be considered, if set.
These bytes will be recorded even if `EnableIpPrivacyProxy` is `false`. This
is measured when the HttpJob is completed.
This version improves on BytesSent by counting bytes for aborted jobs and
network bytes in 304 Not Modified exchanges.
</summary>
</histogram>
<histogram
name="Net.HttpJob.IpProtection.AllowListMatch.PrefilterBytesRead.Net"
units="bytes" expires_after="2025-01-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<summary>
Total prefilter (e.g., before decompression) bytes read for an HttpJob
request that would be covered by IP Protection and served from the network
based on match with respect to the masked domain list alone. This is
irrespective of token and proxy availability. Any bypass logic (e.g. first
party to top level frame) will be considered, if set. These bytes will be
recorded even if `EnableIpPrivacyProxy` is `false`. This is measured when
the HttpJob is completed.
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.BytesSent" units="bytes"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<owner>src/chrome/browser/ip_protection/OWNERS</owner>
<summary>
Total bytes sent over the network for an HttpJob request that is covered by
IP Protection. These bytes will be recorded even if the IP Protection proxy
is configured as `direct://` (i.e. an IP Protection proxy is configured but
doesn't actually proxy any traffic).
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.PrefilterBytesRead.Net" units="bytes"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<owner>src/chrome/browser/ip_protection/OWNERS</owner>
<summary>
Total prefilter (e.g., before decompression) bytes read for an HttpJob
request that is covered by IP Protection and served from the network. These
bytes will be recorded even if the IP Protection proxy is configured as
`direct://` (i.e. an IP Protection proxy is configured but doesn't actually
proxy any traffic).
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.TotalTimeNotCached" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<owner>src/chrome/browser/ip_protection/OWNERS</owner>
<summary>
Time it takes to complete an HttpJob that is covered by IP Protection, from
starting the transaction until we are done reading, for jobs not served from
the cache. This time will be recorded even if the IP Protection proxy is
configured as `direct://` (i.e. an IP Protection proxy is configured but
doesn't actually proxy any traffic).
</summary>
</histogram>
<histogram name="Net.HttpJob.IpProtection.TotalTimeNotCached.{Chain}"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/android_webview/OWNERS</owner>
<owner>src/chrome/browser/ip_protection/OWNERS</owner>
<summary>
Similar to Net.HttpJob.IpProtection.TotalTimeNotCached, but only chains with
the given chain_id, as provided in the GetProxyInfo RPC response.
</summary>
<token key="Chain">
<variant name="Chain1"/>
<variant name="Chain2"/>
<variant name="Chain3"/>
</token>
</histogram>
<histogram name="Net.HttpJob.MainJobWaitTimeWithAvailableSpdySession"
units="ms" expires_after="2025-02-10">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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.Ads.Net" units="bytes"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total prefilter (e.g., before decompression) bytes read for an HttpJob
request that is run on behalf of a request tagged as advertising related.
</summary>
</histogram>
<histogram name="Net.HttpJob.PrefilterBytesRead{Source}" units="bytes"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Total prefilter (e.g., before decompression) bytes read for an HttpJob
request.
</summary>
<token key="Source">
<variant name=""/>
<variant name=".Cache" summary="For requests served from the cache."/>
<variant name=".Net" summary="For requests served from the network."/>
</token>
</histogram>
<histogram name="Net.HttpJob.ProxyTypeFailed" enum="ProxyScheme"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Scheme of the proxy server used by an HTTP job that failed, or
SCHEME_INVALID if no proxy was used. A value is emitted for each failed HTTP
stream. Note: Although SCHEME_DIRECT is deprecated, value 1 corresponds to a
direct proxy. Warning: this histogram was expired from 2022-11-13 to
2023-12-01; data may be missing.
</summary>
</histogram>
<histogram name="Net.HttpJob.ProxyTypeSuccess" enum="ProxyScheme"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Scheme of the proxy server used by an HTTP job that succeeded, or
SCHEME_INVALID if no proxy was used. A value is emitted for each successful
HTTP stream. Note: Although SCHEME_DIRECT is deprecated, value 1 corresponds
to a direct proxy. Warning: this histogram was expired from 2023-03-19 to
2023-12-01; data may be missing.
</summary>
</histogram>
<histogram name="Net.HttpJob.TotalTime" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</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.Google" units="ms"
expires_after="2025-01-21">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</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>[email protected]</owner>
<summary>
Net.HttpOriginalContentLength with non-data reduction proxy traffic properly
labeled with the "Direct" 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>[email protected]</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-09-17">
<owner>[email protected]</owner>
<owner>[email protected]</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.HttpRequestSSLUpgradeDecision"
enum="HttpRequestSSLUpgradeDecision" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded for all top-frame HTTP/HTTPS/WS/WSS requests made by
UrlRequestHttpJob. Records whether the request was upgraded from HTTP (or
WS) to HTTPS (or WSS), and whether the decision to upgrade required dynamic
STS data.
</summary>
</histogram>
<histogram name="Net.HttpRequestStsState" enum="HttpRequestStsState"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The HSTS status of top-frame HTTP/WS requests made by UrlRequestHttpJob.
Requests with kProtectedHttp are immediately internally redirected to a
secure request.
</summary>
</histogram>
<histogram name="Net.HttpResponseCode" enum="HttpResponseCode"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</owner>
<summary>The count of HTTP Response codes encountered.</summary>
</histogram>
<histogram name="Net.HttpResponseCode2" enum="HttpResponseCode"
expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The count of HTTP Response codes encountered, for codes registered in the
IANA HTTP Status Code Registry. Ignores unknown response codes. Recorded
when HttpResponseHeaders are constructed, after parsing.
</summary>
</histogram>
<histogram name="Net.HttpTimeToFirstByte" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</owner>
<summary>
Time from when an HTTP request is issued to when the first byte is
processed.
</summary>
</histogram>
<histogram name="Net.HttpTimeToFirstByte.TLS13.Google" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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.NeedsHWCAP2Workaround" enum="BooleanBroken"
expires_after="2024-06-30">
<owner>[email protected]</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-11-12">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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.NetworkErrorLogging.SignedExchangeRequestOutcome"
enum="NetNetworkErrorLoggingRequestOutcome" expires_after="2023-03-29">
<owner>[email protected]</owner>
<owner>[email protected]</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.NetworkTransaction.GenerateProxyAuthTokenBlocked{HostType}.{Protocol}"
enum="Boolean" expires_after="2024-11-13">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records whether generating a proxy auth token is blocked or not. Recorded
every time HttpAuthController::MaybeGenerateAuthToken() is called in
HttpNetworkTransaction::DoGenerateProxyAuthToken().
</summary>
<token key="HostType" variants="NetworkTransactionBlockedHostType"/>
<token key="Protocol" variants="NetworkTransactionBlockedProtocol"/>
</histogram>
<histogram
name="Net.NetworkTransaction.GenerateProxyAuthTokenBlockTime{HostType}.{Protocol}"
units="ms" expires_after="2024-11-13">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
The time taken for a proxy auth token generation to finish if the generation
was blocked. Recorded in
HttpNetworkTransaction::DoGenerateProxyAuthTokenComplete() when the
generation is complete.
</summary>
<token key="HostType" variants="NetworkTransactionBlockedHostType"/>
<token key="Protocol" variants="NetworkTransactionBlockedProtocol"/>
</histogram>
<histogram
name="Net.NetworkTransaction.GenerateServerAuthTokenBlocked{HostType}.{Protocol}"
enum="Boolean" expires_after="2024-11-13">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records whether generating a server auth token is blocked or not. Recorded
every time HttpAuthController::MaybeGenerateAuthToken() is called in
HttpNetworkTransaction::DoGenerateServerAuthToken().
</summary>
<token key="HostType" variants="NetworkTransactionBlockedHostType"/>
<token key="Protocol" variants="NetworkTransactionBlockedProtocol"/>
</histogram>
<histogram
name="Net.NetworkTransaction.GenerateServerAuthTokenBlockTime{HostType}.{Protocol}"
units="ms" expires_after="2024-11-13">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
The time taken for a server auth token generation to finish if the
generation was blocked. Recorded in
HttpNetworkTransaction::DoGenerateServerAuthTokenComplete() when the
generation is complete.
</summary>
<token key="HostType" variants="NetworkTransactionBlockedHostType"/>
<token key="Protocol" variants="NetworkTransactionBlockedProtocol"/>
</histogram>
<histogram
name="Net.NetworkTransaction.InitializeStreamBlocked{HostType}.{Protocol}"
enum="Boolean" expires_after="2024-11-13">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records whether HTTP stream initialization is blocked or not. Recorded every
time HttpStream::InitializeStream() is called.
</summary>
<token key="HostType" variants="NetworkTransactionBlockedHostType"/>
<token key="Protocol" variants="NetworkTransactionBlockedProtocol"/>
</histogram>
<histogram
name="Net.NetworkTransaction.InitializeStreamBlockTime{HostType}.{Protocol}"
units="ms" expires_after="2024-11-13">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
The time taken for HTTP stream initialization to finish if the
initialization was blocked. Recorded in
HttpNetworkTransaction::DoInitStreamComplete when the stream initialization
is complete.
</summary>
<token key="HostType" variants="NetworkTransactionBlockedHostType"/>
<token key="Protocol" variants="NetworkTransactionBlockedProtocol"/>
</histogram>
<histogram name="Net.NetworkTransaction{HostType}.RetryReason"
enum="HttpNetworkTransactionRetryReason" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>Log the reason when HttpNetworkTransaction retries.</summary>
<token key="HostType">
<variant name=""/>
<variant name="H3SupportedGoogleHost"/>
</token>
</histogram>
<histogram name="Net.NumQuicSessionsAtShutdown" units="units"
expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of QUIC sessions when the QuicSessionPool is destroyed.
</summary>
</histogram>
<histogram name="Net.OnTransferSizeUpdated.Experimental.OverridenBy"
enum="OnTransferSizeUpdatedFrom" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.ProxyScriptFetcher.FirstByteDuration" units="ms"
expires_after="2024-04-03">
<owner>[email protected]</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.PublicKeyPinReportSendingFailure2" enum="NetErrorCodes"
expires_after="M77">
<owner>[email protected]</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.QuicActiveSessionCount.{GoingAwayReason}" units="sesions"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of active sessions that are marked as going away because
{GoingAwayReason}.
</summary>
<token key="GoingAwayReason">
<variant name="CertDBChanged" summary="the certificate database changed"/>
<variant name="CertVerifierChanged"
summary="the certificate veriier changed"/>
<variant name="ClockSkewDetected" summary="a clock skew was detected"/>
<variant name="IPAddressChanged" summary="an IP address changed"/>
</token>
</histogram>
<histogram name="Net.QuicActiveSessions" units="units"
expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of active QUIC sessions before we activate a new QUIC session.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicAltSvcFormat" enum="QuicAltSvcFormat"
expires_after="2025-07-01">
<owner>[email protected]</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="2025-02-02">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>Log the stream error code when QUIC stream handle closes.</summary>
</histogram>
<histogram name="Net.QuicChromiumClientStream.HeaderDecodingDelay{ServerType}"
units="ms" expires_after="2025-06-07">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The delay in decoding received headers due to having to wait for dynamic
table entries to arrive on the QPACK encoder stream. Zero if header block
could be decoded as soon as it was received. This is recorded for
connections made to {ServerType}.
</summary>
<token key="ServerType">
<variant name="" summary="all QUIC servers"/>
<variant name="Google" summary="Google servers"/>
</token>
</histogram>
<histogram
name="Net.QuicChromiumClientStream.Http3DatagramDroppedOnWriteConnectUdpPayload"
enum="BooleanSuccess" expires_after="2024-12-04">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records whether an HTTP Datagram was dropped when trying to send a UDP
payload over the QUIC stream. Datagram is dropped if the QUIC session has
not yet received SETTINGS_H3_DATAGRAM frame and therefore does not support
sending or receiving datagrams.
</summary>
</histogram>
<histogram name="Net.QuicChromiumClientStream.TrailingHeadersProcessSuccess"
enum="BooleanSuccess" expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>Log success rate of processing trailing headers.</summary>
</histogram>
<histogram name="Net.QuicConnection.MultiPortPathCreationCancelled"
enum="PathValidationReason" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The reason for the existing path validation when a new multi-port path
creation is attempted but failed because of existing validation.
</summary>
</histogram>
<histogram name="Net.QuicConnection.MultiPortPathStatusWhenMigrating"
enum="MultiPortStatusOnMigration" expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The status of the multi-port path when the client initiates the migration.
</summary>
</histogram>
<histogram name="Net.QuicConnection.ServerAllowsActiveMigrationForMultiPort"
enum="BooleanEnabled" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
When multi-port is enabled, log whether the server allows active migration
that's required for multi-port
</summary>
</histogram>
<histogram name="Net.QuicConnection.WritePacketStatus" enum="QuicWriteStatus"
expires_after="2024-12-08">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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-09-17">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicHandshakeState" enum="QuicHandshakeState"
expires_after="2025-01-19">
<owner>[email protected]</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="2024-01-21">
<owner>[email protected]</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="2024-11-27">
<owner>[email protected]</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="2024-11-17">
<owner>[email protected]</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="2024-07-07">
<owner>[email protected]</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.NumMultiPortFailureWhenPathDegrading"
units="times" expires_after="2024-12-08">
<owner>[email protected]</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="2024-12-08">
<owner>[email protected]</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.QuicMultiPort.NumProbeAttempts" units="times"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of alternative port probing attempts.</summary>
</histogram>
<histogram name="Net.QuicMultiPort.NumSuccessfulProbes" units="times"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of successful alternative port probes.</summary>
</histogram>
<histogram name="Net.QuicNetworkDegradingDurationTillConnected" units="ms"
expires_after="2023-09-17">
<owner>[email protected]</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="2024-05-05">
<owner>[email protected]</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="2024-05-26">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>The number of times ServerConfigUpdateMessages ignored.</summary>
</histogram>
<histogram name="Net.QuicProxyDatagramClientSocket.MaxQueueSizeReached"
enum="BooleanSuccess" expires_after="2024-12-04">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Records whether queue is at maximum capacity when an HTTP/3 datagram arrives
on the QUIC stream in client socket. A QUIC connection parses the Datagram
frame and passes it to the QUIC SPDY session, which then extracts the
quarter stream ID to determine which stream to invoke `OnHttp3Datagram`
method on. The incoming datagram is dropped if full and added to queue
otherwise.
</summary>
</histogram>
<histogram name="Net.QuicServerInfo.DiskCacheState"
enum="QuicServerConfigState" expires_after="2025-07-01">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-11-17">
<owner>[email protected]</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.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.BlockedFrames.Received" units="units"
expires_after="2024-02-04">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-04-10">
<owner>[email protected]</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="2024-12-08">
<owner>[email protected]</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{HandshakeType}"
enum="Boolean" expires_after="2024-06-02">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
For a QUIC session that is closed by a public reset, where the handshake was
{HandshakeType}, this boolean shows whether it is a public reset sent from a
Google server or not.
</summary>
<token key="HandshakeType">
<variant name="" summary="not confirmed"/>
<variant name=".HandshakeConfirmed" summary="confirmed"/>
</token>
</histogram>
<histogram name="Net.QuicSession.ClosedByRtoAtClient.ReceivedPacketCount"
units="packets" expires_after="2023-11-19">
<owner>[email protected]</owner>
<owner>[email protected]</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-11-19">
<owner>[email protected]</owner>
<owner>[email protected]</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="2024-05-26">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-06-02">
<owner>[email protected]</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-09-17">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of streams open when a QUIC session crypto handshake timed out.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionClose.NumOpenStreams.TimedOut"
units="units" expires_after="2024-02-11">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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.ConnectionCloseErrorCodeServerIetfApplication{GQuicMissing}{ServerType}{HandshakeType}"
enum="QuicHttp3ErrorCodes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC application transport error code in a CONNECTION_CLOSE frame
received from the server{GQuicMissing}. This is recorded for connections
made to {ServerType}{HandshakeType}.
</summary>
<token key="GQuicMissing">
<variant name="" summary=""/>
<variant name="GQuicErrorMissing"
summary=", when the GQUIC error was missing"/>
</token>
<token key="ServerType">
<variant name="" summary="all QUIC servers"/>
<variant name="ECH" summary="ECH-capable servers">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
</variant>
<variant name="Google" summary="Google servers"/>
</token>
<token key="HandshakeType">
<variant name="" summary=""/>
<variant name=".HandshakeConfirmed"
summary=", where the handshake was confirmed"/>
<variant name=".HandshakeNotConfirmed"
summary=", where the handshake was not confirmed"/>
</token>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCodeServerIetfTransport{GQuicMissing}{ServerType}{HandshakeType}"
enum="QuicTransportErrorCodes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC transport error code in a CONNECTION_CLOSE frame received from the
server{GQuicMissing}. This is recorded for connections made to
{ServerType}{HandshakeType}.
Warning: the ConnectionCloseErrorCodeServerIetfTransportGoogle variant was
expired from 09/12/2022 to 03/22/2023; data may be missing.
</summary>
<token key="GQuicMissing">
<variant name="" summary=""/>
<variant name="GQuicErrorMissing"
summary=", when the GQUIC error was missing"/>
</token>
<token key="ServerType">
<variant name="" summary="all QUIC servers"/>
<variant name="ECH" summary="ECH-capable servers">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
</variant>
<variant name="Google" summary="Google servers"/>
</token>
<token key="HandshakeType">
<variant name="" summary=""/>
<variant name=".HandshakeConfirmed"
summary=", where the handshake was confirmed"/>
<variant name=".HandshakeNotConfirmed"
summary=", where the handshake was not confirmed"/>
</token>
</histogram>
<histogram
name="Net.QuicSession.ConnectionCloseErrorCode{Closer}{ServerType}{HandshakeType}"
enum="QuicErrorCodes" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The QUIC error code which resulted in the QUIC connection being closed by
the {Closer}. This is recorded for connections made to
{ServerType}{HandshakeType}.
</summary>
<token key="Closer">
<variant name="Client" summary="client"/>
<variant name="Server" summary="server"/>
</token>
<token key="ServerType">
<variant name="" summary="all QUIC servers"/>
<variant name="ECH" summary="ECH-capable servers">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
</variant>
<variant name="Google" summary="Google servers"/>
</token>
<token key="HandshakeType">
<variant name="" summary=""/>
<variant name=".HandshakeConfirmed"
summary=", where the handshake was confirmed"/>
<variant name=".HandshakeNotConfirmed"
summary=", where the handshake was not confirmed"/>
</token>
</histogram>
<histogram name="Net.QuicSession.ConnectionDuration" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</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="2024-06-30">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
True if an active session already exists for a given Ip during connection.
Recorded when attempting to create a new session. Warning: this histogram
was expired from 2024-02-04 to 2024-03-28; data may be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.ConnectionMigration"
enum="QuicConnectionMigrationStatus" expires_after="2025-01-05">
<owner>[email protected]</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.ConnectionTypeFromPeer" enum="AddressFamily"
expires_after="2025-07-01">
<owner>[email protected]</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-09-17">
<owner>[email protected]</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="2024-02-11">
<owner>[email protected]</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="2024-06-30">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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.EcnMarksObserved" enum="EcnPermutations"
expires_after="2024-10-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The combination of ECN marks observed on a single QuicSession. Recorded when
the session is closed.
</summary>
</histogram>
<histogram name="Net.QuicSession.EncryptionEstablishedTime"
units="Milliseconds" expires_after="2025-01-05">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.FinchObsoleteVersion" enum="Boolean"
expires_after="2025-07-01">
<owner>[email protected]</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.FindMatchingIpSessionResult{ServerType}"
enum="QuicFindMatchingIpSessionResult" expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Result of finding matching IP session when DNS resolution finishes.
</summary>
<token key="ServerType">
<variant name="" summary="all QUIC servers"/>
<variant name="Google" summary="Google servers"/>
</token>
</histogram>
<histogram name="Net.QuicSession.GapBetweenWriteErrorAndNetworkDisconnection"
units="ms" expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The elapsed time between starting the crypto handshake, and receiving
confirmation from the server.
Warning: this histogram was expired from 2023-01-15 to 2023-11-08; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeConfirmedTime.ECH"
units="Milliseconds" expires_after="2024-08-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The elapsed time between starting the crypto handshake, and receiving
confirmation from the server, measured only for ECH-capable servers.
</summary>
</histogram>
<histogram name="Net.QuicSession.HandshakeStatusOnConnectionMigration"
enum="BooleanConfirmed" expires_after="2023-09-17">
<owner>[email protected]</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>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for received headers using HPACK.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioHpackSent" units="%"
expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for sent headers using HPACK.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioQpackReceived" units="%"
expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Header compression ratio as percentage for received headers using QPACK.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.HeaderCompressionRatioQpackSent" units="%"
expires_after="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-02-11">
<owner>[email protected]</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="2024-05-26">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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-11-19">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2025-04-10">
<owner>[email protected]</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>[email protected]</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.NumDefaultPathDegrading" units="times"
expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of times that a session enters path-degrading state on the
default path.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumForwardProgressMadeAfterPathDegrading"
units="times" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of times that a session makes forward progress after the original
default path is degrading.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumMigrations" units="units"
expires_after="2025-02-10">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2024-10-13">
<owner>[email protected]</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.NumReceivedOrigins" units="origins"
expires_after="2025-02-11">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of origins in received ORIGIN frames. This is recorded for each
received ORIGIN frame. If multiple ORIGIN frames are received over the
duration of a connection, this count is recorded for each frame.
</summary>
</histogram>
<histogram name="Net.QuicSession.NumStreamsWaitingToWriteOnIdleTimeout"
units="streams" expires_after="2025-02-10">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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-08-25">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</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
Warning: this histogram was expired from 2023-10-01 to 2024-03-06; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketRetransmitsPerMille" units="permille"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of packets retransmitted per 1000. Only sessions with
packets_sent >= 100 are included. Recorded in session destructor.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketsBeforeEcnTransition" units="packets"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of packets received before the session observes an Explicit
Congestion Notification (ECN) marking different from the first one in the
session. Reported when the session occurs. A value of zero means no
transition occurred.
</summary>
</histogram>
<histogram name="Net.QuicSession.PacketWriteTime" units="units"
expires_after="2024-09-06">
<owner>[email protected]</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.
Warning: this histogram was expired from 2023-11-19 to 2024-03-06; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.PathValidationSuccess" enum="BooleanSuccess"
expires_after="2025-01-12">
<owner>[email protected]</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>[email protected]</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="2024-01-21">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="never">
<!-- expires-never: Core metric used to monitor hardware capabilities -->
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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.Qpack.HeaderListCountWhenBlockedStreamLimited"
units="count" expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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-10-08">
<owner>[email protected]</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-10-08">
<owner>[email protected]</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-09-24">
<owner>[email protected]</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-09-17">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The number of SETTINGS parameters received on an HTTP/3 connection,
incremented by one (the SETTINGS frame can be empty).
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.MaxHeaderListSize2"
units="bytes" expires_after="2023-09-24">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.ReceivedSettings.ReservedCountPlusOne"
units="units" expires_after="2023-09-17">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-06-02">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-12-08">
<owner>[email protected]</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="2025-04-10">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The largest packet which the client received from the server during the
session. Warning: this histogram was expired from 2023-11-19 to 2024-04-11;
data may be missing.
</summary>
</histogram>
<histogram name="Net.QuicSession.SmoothedRTT" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-06-16">
<owner>[email protected]</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.StatelessResetAfterProbingCancelled"
enum="BooleanReceived" expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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-09-10">
<owner>[email protected]</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="2024-02-11">
<owner>[email protected]</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-09-17">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
The time a QuicSessionPool Job takes from host rersolution to connection
confirmation.
</summary>
</histogram>
<histogram name="Net.QuicSession.TooManyOpenStreams" enum="BooleanTooMany"
expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-02-04">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-11-03">
<owner>[email protected]</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{Type}" units="ms"
expires_after="2024-05-26">
<owner>[email protected]</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.
Warning: this histogram was expired from 09/12/2022 to 03/22/2023; data may
be missing.
</summary>
<token key="Type">
<variant name="" summary="Verification time for a server."/>
<variant name=".CachedServerConfig"
summary="Verification time for a server when server config from cache
is used."/>
<variant name=".google"
summary="Verification time for www.google.com server."/>
</token>
</histogram>
<histogram name="Net.QuicSession.WriteError" enum="NetErrorCodes"
expires_after="2025-01-05">
<owner>[email protected]</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="2024-07-16">
<owner>[email protected]</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-09-17">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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>[email protected]</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>[email protected]</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="2024-05-19">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-12-08">
<owner>[email protected]</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-10-01">
<owner>[email protected]</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 QuicSessionPool.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.DisabledReasons"
enum="QuicDisabledReason" expires_after="2025-07-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Log the location in QuicSessionPool where QUIC_PROTOCOL_ERROR is reported.
</summary>
</histogram>
<histogram
name="Net.QuicStreamFactory.MigrationBeforeHandshake.NewConnectionType"
enum="NetworkConnectionType" expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</owner>
<owner>src/net/quic/OWNERS</owner>
<summary>
Captures whether the default network has been changed when the new
connection succeeds on the "alternate" network.
</summary>
</histogram>
<histogram name="Net.QuicStreamFactory.PublicResetsPostHandshake"
units="resets" expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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.Reporting.HeaderType" enum="NetReportingHeaderType"
expires_after="2025-04-23">
<owner>[email protected]</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.
Warning: this histogram was expired from 2023-02-18 to 2024-04-09; data may
be missing.
</summary>
</histogram>
<histogram name="Net.Reporting.UploadHeaderType"
enum="NetReportingUploadHeaderType" expires_after="2025-04-23">
<owner>[email protected]</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>[email protected]</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="2025-01-26">
<owner>[email protected]</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.GetCookiesString.Count30Seconds"
units="IPCs" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of RestrictedCookieManager::GetCookiesString IPCs received
over 30 second periods at the Network Service.
We start recording the metric when the Network Service is created and keep
updating it for the entire lifetime of the Network Service process.
</summary>
</histogram>
<histogram name="Net.RestrictedCookieManager.PartitionedCookiesInScript"
units="cookies" expires_after="2025-01-19">
<owner>[email protected]</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="2024-12-01">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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.SafeSearch.CacheHit" enum="CacheAccessStatus"
expires_after="2025-07-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if a URL classification in safe_search_api::URLChecker was provided
from the cache or not. In the latter case, it distinguishes between true
cache misses and cache hits which were unfit for classification.
Missing data between 2024-04-28 and 2024-07-30.
</summary>
</histogram>
<histogram name="Net.SharedDictionaryManagerOnDisk.DictionarySizeKB" units="KB"
expires_after="2024-12-20">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The size of shared dictionary written on disk. Emitted when
SharedDictionaryManagerOnDisk succeeded to store the dictionary in disk
cache and database.
</summary>
</histogram>
<histogram
name="Net.SharedDictionaryManagerOnDisk.DiskCacheEntryMissingDictionaryCount"
units="count" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The number of dictionaries evicted as there is no matching disk cache entry.
Emitted when MismatchingEntryDeletionTask finishes.
</summary>
</histogram>
<histogram name="Net.SharedDictionaryManagerOnDisk.InvalidDiskCacheEntryCount"
units="count" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The number of disk cache entries evicted as the key is invalid for token.
Emitted when MismatchingEntryDeletionTask finishes.
</summary>
</histogram>
<histogram
name="Net.SharedDictionaryManagerOnDisk.MetadataMissingDictionaryCount"
units="count" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The number of disk cache entries evicted as there is no matching metadata.
Emitted when MismatchingEntryDeletionTask finishes.
</summary>
</histogram>
<histogram
name="Net.SharedDictionaryManagerOnDisk.TotalDictionaryCountWhenAdded"
units="count" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The total count of shared dictionary on disk. Emitted when
SharedDictionaryManagerOnDisk succeeded to store a dictionary in disk cache
and database.
</summary>
</histogram>
<histogram
name="Net.SharedDictionaryManagerOnDisk.TotalDictionarySizeKBWhenAdded"
units="KB" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The total size of shared dictionary on disk. Emitted when
SharedDictionaryManagerOnDisk succeeded to store a dictionary in disk cache
and database.
</summary>
</histogram>
<histogram
name="Net.SharedDictionaryOnDisk.OpenEntryLatency.{SuccessOrFailure}"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The time taken to open a disk cache entry of a shared dictionary. Recorded
when the entry is opened in the SharedDictionaryOnDisk.
</summary>
<token key="SuccessOrFailure" variants="SuccessOrFailure"/>
</histogram>
<histogram name="Net.SharedDictionaryOnDisk.ReadDataLatency.{SuccessOrFailure}"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The time taken to read the data of a shared dictionary's disk cache entry.
Recorded when the whole data is read in the SharedDictionaryOnDisk.
</summary>
<token key="SuccessOrFailure" variants="SuccessOrFailure"/>
</histogram>
<histogram name="Net.SharedDictionaryStorageOnDisk.IsMetadataReadyOnFirstUse"
enum="Boolean" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
Records whether the shared dictionary metadata has been read when
GetDictionary() is called for the first time.
</summary>
</histogram>
<histogram name="Net.SharedDictionaryStorageOnDisk.MetadataReadTime.{Result}"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The time taken to read shared dictionary metadata from the database.
Recorded when SharedDictionaryStorageOnDisk receives the result.
</summary>
<token key="Result">
<variant name="Empty"/>
<variant name="Failure"/>
<variant name="NonEmpty"/>
</token>
</histogram>
<histogram name="Net.SharedDictionaryStore.DictionaryCountPerSiteWhenAdded"
units="count" expires_after="2024-12-20">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The count of shared dictionary per top frame site on metadata. Emitted when
SQLitePersistentSharedDictionaryStore is writing a dictionary in the
database.
</summary>
</histogram>
<histogram name="Net.SharedDictionaryStore.DictionarySizeKBPerSiteWhenAdded"
units="KB" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The size of shared dictionary per top frame site on metadata. Emitted when
SQLitePersistentSharedDictionaryStore is writing a dictionary in the
database.
</summary>
</histogram>
<histogram name="Net.SharedDictionaryStore.{MethodName}.Error"
enum="SharedDictionaryStoreError" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
Records the status (OK or error code) returned by
SQLitePersistentSharedDictionaryStore. Recorded when the database operation
finishes.
</summary>
<token key="MethodName">
<variant name="ClearAllDictionaries"/>
<variant name="ClearDictionaries"/>
<variant name="ClearDictionariesForIsolationKey"/>
<variant name="DeleteDictionariesByDiskCacheKeyTokens"/>
<variant name="DeleteExpiredDictionaries"/>
<variant name="GetAllDictionaries"/>
<variant name="GetAllDiskCacheKeyTokens"/>
<variant name="GetDictionaries"/>
<variant name="GetTotalDictionarySize"/>
<variant name="GetUsageInfo"/>
<variant name="ProcessEviction"/>
<variant name="RegisterDictionary"/>
</token>
</histogram>
<histogram
name="Net.SharedDictionaryTransaction.AbortedWhileReadingDictionary.{SuccessOrFailure}"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The delay to read a shared dictionary from a SharedDictionaryTransaction
which is already aborted. Recorded when the dictionary is read, but the
SharedDictionaryTransaction was aborted before the read operation was
completed.
</summary>
<token key="SuccessOrFailure" variants="SuccessOrFailure"/>
</histogram>
<histogram
name="Net.SharedDictionaryTransaction.DictionaryReadLatency.{SuccessOrFailure}"
units="ms" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The delay of SharedDictionaryTransaction caused by reading a shared
dictionary. Recorded when the dictionary is read in the
SharedDictionaryTransaction.
</summary>
<token key="SuccessOrFailure" variants="SuccessOrFailure"/>
</histogram>
<histogram name="Net.SharedDictionaryTransaction.NetResultWithDict.{CertState}"
enum="NetErrorCodes" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
Positive net error codes returned from the network layer for requests with
Sec-Available-Dictionary header. Recorded when a
SharedDictionaryNetworkTransaction received the result from the network
layer.
</summary>
<token key="CertState">
<variant name="KnownRootCert"/>
<variant name="UnknownRootCertOrNoCert"/>
</token>
</histogram>
<histogram
name="Net.SharedDictionaryUsedByResponseWhenAvailable.MainFrame.{ConnectionType}.{CertState}"
enum="Boolean" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
Records whether the response used a shared dictionary when it was available.
This is recorded only for main frame requests. Recorded when the URLLoader
request is completed.
</summary>
<token key="ConnectionType">
<variant name="Http1"/>
<variant name="Http2"/>
<variant name="Http3"/>
<variant name="Other"/>
</token>
<token key="CertState">
<variant name="KnownRootCert"/>
<variant name="NoCert"/>
<variant name="UnknownRootCert"/>
</token>
</histogram>
<histogram
name="Net.SharedDictionaryUsedResponseErrorCodes.{DestinationType}.{CertState}"
enum="NetErrorCodes" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
Positive net error codes of responses which used shared dictionaries.
Recorded when the URLLoader request is completed.
</summary>
<token key="DestinationType">
<variant name="MainFrame"/>
<variant name="SubFrame"/>
<variant name="Subresource"/>
</token>
<token key="CertState">
<variant name="KnownRootCert"/>
<variant name="NoCert"/>
<variant name="UnknownRootCert"/>
</token>
</histogram>
<histogram name="Net.SharedDictionaryWriterInMemory.DictionarySize"
units="bytes" expires_after="2024-12-20">
<owner>[email protected]</owner>
<owner>src/net/extras/shared_dictionary/OWNERS</owner>
<summary>
The size of shared dictionary written in memory. Emitted when
SharedDictionaryWriterInMemory succeeded to store the dictionary in memory.
</summary>
</histogram>
<histogram name="Net.SocketUnchangeableReceiveBuffer" units="Bytes"
expires_after="2025-07-01">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2025-04-24">
<owner>[email protected]</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="2025-04-24">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
The percent compression achieved when compressing HEADERS frames.
Warning: this histogram was expired from 2024-03-17 to 2024-04-24; data may
be missing.
</summary>
</histogram>
<histogram name="Net.SpdyIPPoolDomainMatch" enum="SpdyIPPoolDomainMatch"
expires_after="2025-04-24">
<owner>[email protected]</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.SpdyResponseCode" enum="HttpResponseCode"
expires_after="2022-09-11">
<owner>[email protected]</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="2024-11-27">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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="2025-01-12">
<owner>[email protected]</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="2025-01-26">
<owner>[email protected]</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="2025-04-24">
<owner>[email protected]</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="2025-04-24">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>Socket connected status in SpdySession::CreateStream.</summary>
</histogram>
<histogram name="Net.SpdySession.GoAwayReceived" enum="Http2WireErrorCodes"
expires_after="2024-11-27">
<owner>[email protected]</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.OnSettings.{StreamState}StreamCount2"
units="count" expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of {StreamState} streams when a SpdySession receives an
HTTP/2 SETTINGS frame for the first time.
</summary>
<token key="StreamState">
<variant name="Active" summary="active"/>
<variant name="Created" summary="created"/>
<variant name="CreatedAndActive" summary="created and active"/>
<variant name="Pending" summary="pending"/>
</token>
</histogram>
<histogram name="Net.SpdySession.RstStreamReceived" enum="Http2WireErrorCodes"
expires_after="2024-10-06">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Records the error code value received in each HTTP/2 RST_STREAM frame.
</summary>
</histogram>
<histogram name="Net.SpdySession.ServerSupportsWebSocket" enum="Boolean"
expires_after="2024-09-22">
<owner>[email protected]</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="2025-02-23">
<owner>[email protected]</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="2025-04-24">
<owner>[email protected]</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="2025-02-10">
<owner>[email protected]</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="2025-07-01">
<owner>[email protected]</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="2024-10-06">
<owner>[email protected]</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="2024-10-06">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>The number of streams issued over a single session.</summary>
</histogram>
<histogram name="Net.SSL.ECHResult" enum="SSLECHResult"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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>[email protected]</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="2024-07-21">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<summary>Time from when the Connect() starts until it completes.</summary>
</histogram>
<histogram name="Net.SSL_Connection_Latency_ECH" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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.SSLClientCertSignatureAlgorithm"
enum="SSLSignatureAlgorithm" expires_after="2025-02-10">
<owner>[email protected]</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.SSLExtendedMainSecretSupported" enum="BooleanSupported"
expires_after="2025-08-20">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
For each TLS handshake, whether the server supports the Extended Main Secret
extension (RFC 7627). If the server negotiated TLS 1.3, which is always
patched against this bug, it is considered to support the extension. Servers
that do not implement this extension may be vulnerable to attacks when using
channel binding or key exporters.
Note this extension was originally defined with a different name in RFC
7276. It is being renamed in draft-ietf-tls-rfc8446bis to Extended Main
Secret. With both names, it is often referred to by the acronym EMS.
</summary>
</histogram>
<histogram name="Net.SSLHandshakeDetails" enum="SSLHandshakeDetails"
expires_after="2025-02-10">
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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="2023-11-12">
<owner>[email protected]</owner>
<owner>[email protected]</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.SSLNegotiatedAlpnProtocol"
enum="SSLNegotiatedAlpnProtocol" expires_after="2025-01-05">
<owner>[email protected]</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="2025-08-20">
<owner>[email protected]</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.SSLSignatureAlgorithm" enum="SSLSignatureAlgorithm"
expires_after="never">
<!-- expires-never: Used to keep track of the TLS ecosystem. -->
<owner>[email protected]</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>[email protected]</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.TCP_Connection_Latency" units="ms" expires_after="never">
<!-- expires-never: Core network stack health metric -->
<owner>[email protected]</owner>
<summary>
Time from when the Connect() starts until it completes. Only times under 10
minutes are logged.
</summary>
</histogram>
<histogram name="Net.TcpConnectAttempt.Latency.Error" units="ms"
expires_after="2025-02-23">
<owner>[email protected]</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="2025-01-05">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Time taken to successfully establish a TCP connection to an individual
endpoint.
</summary>
</histogram>
<histogram base="true" name="Net.TrustTokens.NetErrorForFetchFailure"
enum="NetErrorCodes" expires_after="2023-06-06">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</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="2023-06-06">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>[email protected]</owner>
<owner>[email protected]</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 "TypeError: failed to
fetch" observed in live testing.
</summary>
</histogram>
<histogram base="true" name="Net.TrustTokens.OperationOutcome"
enum="TrustTokenOperationStatus" expires_after="2025-07-01">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For Private State Token (PST) operations, the result of the operation. This
is recorded everytime a PST operation completed in URLLoader. See
network::URLLoader::OnDoneBeginningTrustTokenOperation for details. This can
help debug the use of the API observed in the ecosystem.
</summary>
</histogram>
<histogram name="Net.TrustTokens.Operation{TimeSpan}Time.{Outcome}.{Type}"
units="ms" expires_after="2023-06-06">
<owner>[email protected]</owner>
<owner>[email protected]</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="2023-06-06">
<owner>[email protected]</owner>
<owner>[email protected]</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="2025-01-05">
<!-- Name completed by histogram_suffixes name="TrustTokenOperationType" -->
<owner>[email protected]</owner>
<owner>[email protected]</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.UDPSocketWinClose" units="ms" expires_after="2024-03-24">
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>The time spent in closesocket call in UDPSocketWin::Close.</summary>
</histogram>
<histogram name="Net.URLLoaderThrottle.OnReceiveResponseTime" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent on the callback called when the response head is received. Logged
every time a throttle receives a response.
</summary>
</histogram>
<histogram name="Net.URLLoaderThrottleDeferTime.WillProcessResponse.{Throttle}"
units="ms" expires_after="2023-02-13">
<owner>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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>[email protected]</owner>
<owner>[email protected]</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{Protocol}" enum="NetErrorCodes"
expires_after="never">
<!-- expires-never: needed for long-term tracking of ecosystem -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Positive net error codes that WebSockets end with, including OK and ABORTED.
</summary>
<token key="Protocol">
<variant name="" summary="All protocols"/>
<variant name=".Http2" summary="HTTP/2"/>
</token>
</histogram>
<histogram name="Net.WebSocket.FallbackResult" enum="WebSocketFallbackResult"
expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Fallback result of WebSocket handshakes. Recorded when a WebSocket handshake
completed.
</summary>
</histogram>
<histogram name="Net.WebSocket.HandshakeResult2"
enum="WebSocketHandshakeResult2" expires_after="never">
<!-- expires-never: needed for long-term tracking of ecosystem -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/net/OWNERS</owner>
<summary>
Results of WebSocket handshakes, including information whether the handshake
happened over HTTP/1, HTTP/2 or HTTP/3. Use this histogram as a baseline for
investigating feature usage counters.
</summary>
</histogram>
<histogram name="Net.WebSocket.ProtocolHeaderSize" units="bytes"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of the value of the Sec-WebSocket-Protocol header in the WebSocket
handshake request, in bytes. Recorded once for every WebSocket handshake
request sent, regardless of HTTP version.
</summary>
</histogram>
<histogram name="Net.WebSocket.ResponseCode" enum="HttpResponseCode"
expires_after="never">
<!-- expires-never: needed for long-term tracking of ecosystem -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>All HTTP status codes seen during WebSocket handshakes.</summary>
</histogram>
<histogram name="Net.WebTransport.NegotiatedHttpDatagramVersion"
enum="NegotiatedHttpDatagramVersion" expires_after="2025-06-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Negotiated HTTP Datagram version. Recorded when a WebTransport session
becomes ready.
</summary>
</histogram>
<histogram name="Net.WebTransport.NegotiatedWebTransportVersion"
enum="NegotiatedWebTransportVersion" expires_after="2025-06-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Negotiated WebTransport version. Recorded when a WebTransport session
becomes ready.
</summary>
</histogram>
<histogram name="Net.ZstdFilter.CompressionRatio" units="%"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Compressed/Decompressed size ratio as a percentage when using zstd.
</summary>
</histogram>
<histogram name="Net.ZstdFilter.ErrorCode" enum="ZstdFilterErrorCode"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error code observed after failing to decode a Zstd-compressed response
stream from the network. Recorded once per layer of Zstd compression that
encountered a decoding error. See Net.ZstdFilter.Status to get the overall
error rate.
</summary>
</histogram>
<histogram name="Net.ZstdFilter.MaxMemoryUsage" units="KB"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The maximum memory allocation by the zstd library to decode a
Zstd-compressed response stream from the network. Recorded once per layer of
Zstd compression (usually once per zstd-compressed response), at the end of
decoding.
</summary>
</histogram>
<histogram name="Net.ZstdFilter.Status" enum="ZstdFilterDecodingStatus"
expires_after="2024-12-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The final state of the ZstdFilter. Recorded once per layer of Zstd
compression (usually once per zstd-compressed response), at the end of
decoding.
</summary>
</histogram>
</histograms>
</histogram-configuration>