<!--
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 Storage 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="DatabaseTag">
<variant name="Activity" summary="Activity"/>
<variant name="Affiliation" summary="Affiliation"/>
<variant name="AggregationService" summary="AggregationService"/>
<variant name="BackgroundRequestQueue" summary="BackgroundRequestQueue"/>
<variant name="BrowsingTopics" summary="BrowsingTopics"/>
<variant name="Conversions" summary="Conversions"/>
<variant name="Cookie" summary="Cookie"/>
<variant name="DatabaseTracker" summary="DatabaseTracker"/>
<variant name="DIPS" summary="DIPS"/>
<variant name="FirstPartySets" summary="FirstPartySets"/>
<variant name="History" summary="History"/>
<variant name="InterestGroups" summary="InterestGroups"/>
<variant name="LocalTraces" summary="LocalTraces"/>
<variant name="MediaDeviceSalts" summary="MediaDeviceSalts"/>
<variant name="OptOutBlacklist" summary="OptOutBlacklist"/>
<variant name="Passwords" summary="Passwords"/>
<variant name="PowerBookmarks" summary="PowerBookmarks"/>
<variant name="Predictor" summary="Predictor"/>
<variant name="PrivateAggregation" summary="PrivateAggregation"/>
<variant name="Quota" summary="Quota"/>
<variant name="ReportingAndNEL" summary="ReportingAndNEL"/>
<variant name="SharedDictionary" summary="SharedDictionary"/>
<variant name="SharedStorage" summary="SharedStorage"/>
<variant name="Shortcuts" summary="Shortcuts"/>
<variant name="Thumbnail" summary="Thumbnail"/>
<variant name="TopSites" summary="TopSites"/>
<variant name="TrustTokens" summary="TrustTokens"/>
<variant name="UKMMetrics" summary="UKMMetrics"/>
<variant name="UserAnnotations" summary="UserAnnotations"/>
<variant name="UserNotes" summary="UserNotes"/>
<variant name="Web" summary="Web"/>
</variants>
<variants name="InterestGroupStorageProtoType">
<variant name="AdProtos" summary="AdProtos"/>
<variant name="BiddingAndAuctionServerKeyProtos"
summary="BiddingAndAuctionServerKeyProtos"/>
<variant name="KAnonKeyProtos" summary="KAnonKeyProtos"/>
</variants>
<histogram name="API.StorageAccess.AllowedRequests3" enum="StorageAccessResult"
expires_after="2024-07-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if various requests to access storage are allowed or not and if the
Storage Access API unblocked the request or not. Recorded whenever a
decision to access storage like getting/setting cookies or opening an
indexeddb connection is made in CookieSettings.
Warning: this histogram was expired from 2022-03-27 to 08-12-2022; data may
be missing.
</summary>
</histogram>
<histogram name="API.StorageAccess.AutograntViaFedCmOutcome"
enum="AutograntViaFedCmOutcome" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcomes when deciding whether to allow a Storage Access API
autogrant via FedCM permission.
Recorded in the browser process exactly once for each storage-access
permissions request that has autogrants via FedCM permission enabled.
</summary>
</histogram>
<histogram name="API.StorageAccess.DocumentInheritedStorageAccess"
enum="BooleanInherited" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether or not a document inherited the `has_storage_access` bit
from the previous document.
Recorded once at document commit, for every document.
</summary>
</histogram>
<histogram name="API.StorageAccess.DocumentLoadedWithStorageAccess"
enum="Boolean" expires_after="2025-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether or not a document was loaded with the `has_storage_access`
bit set to true.
Recorded once at document commit, for every document.
</summary>
</histogram>
<histogram name="API.StorageAccess.GrantIsImplicit" enum="BooleanAvailable"
expires_after="2023-03-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if a generated grant was implicit or explicit at the time it was
created.
Warning: this histogram was expired from 2020-11-27 to 08-12-2022; data may
be missing.
</summary>
</histogram>
<histogram name="API.StorageAccess.PermissionRenewedDeltaToExpiration"
units="hours" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the delta between the time at which a storage-access permission
grant was renewed, and permission grant's old expiration time.
Recorded once each time any storage-access permission grant is renewed.
</summary>
</histogram>
<histogram name="API.StorageAccess.RequestOutcome"
enum="StorageAccessAPIRequestOutcome" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcome of a particular Storage Access API permission request.
Recorded at the time of the request, for every request.
</summary>
</histogram>
<histogram name="API.StorageAccess.RequestStorageAccess2"
enum="RequestStorageResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records requests to use document.requestStorageAccess and reasons the
request may be approved or rejected.
Recorded by the renderer exactly once for each invocation of
document.requestStorageAccess.
</summary>
</histogram>
<histogram name="API.TopLevelStorageAccess.RequestOutcome"
enum="TopLevelStorageAccessRequestOutcome" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcome of a particular Top-Level Storage Access API permission
request.
Recorded at the time of the request, for every request.
</summary>
</histogram>
<histogram name="API.TopLevelStorageAccess.RequestStorageAccessFor2"
enum="RequestStorageResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records invocations of document.requestStorageAccessFor and reasons the
request was approved or rejected. Recorded for every call to the function,
regardless of outcome. Note that API.StorageAccess.RequestStorageAccess is
similar, but for the other variant of this API.
</summary>
</histogram>
<histogram name="Clipboard.Read" enum="ClipboardFormatRead"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/ui/base/clipboard/OWNERS</owner>
<summary>
Counts how often each Clipboard format is read by the platform clipboard.
These reads generally imply that an application requested this format after
checking that the format is available, but there are some cases where Chrome
reads a format to check for existence (outside the
ui::Clipboard::ReadAvailableTypes() function). Please prefer interpreting
these numbers as relative use changes, as opposed to absolute user usage.
</summary>
</histogram>
<histogram name="Clipboard.TimeIntervalBetweenCommitAndRead" units="ms"
expires_after="2024-06-01">
<owner>[email protected]</owner>
<owner>src/ui/base/clipboard/OWNERS</owner>
<summary>
Records the time interval between when clipboard data was committed to the
clipboard and the same clipboard data was read from the clipboard. The same
clipboard data may be read multiple times. Emitted at the moment the
clipboard data was read. Currently only implemented for Chrome OS' in-memory
clipboard (`ui::ClipboardNonBacked`).
</summary>
</histogram>
<histogram name="Clipboard.Write" enum="ClipboardFormatWrite"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>src/ui/base/clipboard/OWNERS</owner>
<summary>
Counts how often each Clipboard format is written by the platform clipboard.
These writes all imply that an application had this format available, and
therefore wrote this format.
</summary>
</histogram>
<histogram name="DOMStorage.CommitMeasuredDelay" units="ms"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of time that a single `Put()` was deferred. This is different
from LevelDBWrapper.CommitDelay because that histogram only measures the
delay for the first commit of a batch. Recorded when the batch is pushed to
LevelDB.
</summary>
</histogram>
<histogram name="DOMStorage.CommitSizeBytes" units="bytes"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total in-memory size of a single batched commit to a DOMStorage
database. Recorded when the batch is pushed to LevelDB. In this case, a
"batched commit" is all the recent writes to a single storage area
(i.e. a single site's DOM storage).
</summary>
</histogram>
<histogram name="DOMStorage.CommitSizeBytesAggregated" units="bytes"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total in-memory size of a LevelDB writebatch for the DOMStorage
database. Recorded when the batch is pushed to LevelDB. Unlike
CommitSizeBytes, this may contain data from multiple storage areas (sites)
if commit coalescing is enabled.
</summary>
</histogram>
<histogram name="IndexedDB.BackingStoreCloseDuration" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the time it takes to close the IDB backing store. This is different
WebCore.IndexedDB.LevelDB.CloseTime because it includes the time taken for
in-flight tasks such as scope commit/rollback, and not just the time taken
for the leveldb::DB destructor.
</summary>
</histogram>
<histogram name="IndexedDB.ContextShutdownDuration" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the time it takes to completely shut down `IndexedDBContextImpl`,
starting from when it's requested on the UI thread to when destruction is
completed on the IDB task runner.
</summary>
</histogram>
<histogram name="IndexedDB.QuotaCheckTime2.{QuotaCheckResult}" units="ms"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the result of quota checks made by the IndexedDB component on commit of
readwrite txns.
</summary>
<token key="QuotaCheckResult">
<variant name="DroppedRequest"/>
<variant name="QuotaError"/>
<variant name="Success"/>
</token>
</histogram>
<histogram name="LevelDBEnv.DeleteTableBackupFile" enum="BooleanSuccess"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the success rate of deleting an unused leveldb table backup file.
</summary>
</histogram>
<histogram name="LevelDBEnv.IOError" enum="LevelDBIOErrorMethods"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Methods where leveldb's Chromium environment has IO errors.</summary>
</histogram>
<histogram name="LevelDBEnv.LockFileInUseByThisProcess" enum="Boolean"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When there is a failure to acquire a lock on a LevelDB LOCK file due to
FILE_IN_USE, this histogram logs true if the lock was already held by the
same Chromium process, false otherwise. This is only logged for IndexedDB
LevelDB instances.
</summary>
</histogram>
<histogram name="LevelDBEnv.LockFileSuccessAttempts" units="count"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a LevelDB LOCK file is successfully locked, this is the count of
attempts that were required. This is intended to inform how long LevelDB
should keep retrying. This is only logged for IndexedDB LevelDB instances.
</summary>
</histogram>
<histogram name="LevelDBEnv.MissingFiles" units="files"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of backup files found without corresponding ldb files. As measured by
GetChildren when used in LevelDB clients other than IndexedDB.
</summary>
</histogram>
<histogram name="LevelDBEnv.SyncResult" enum="PlatformFileError"
expires_after="2024-08-06">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the success/failure of LevelDB's calls to Sync() (which translates to
system calls of fsync(), FlushFileBuffers(), etc). Sync() is only called if
the client requests it (e.g. for a strict durability IndexedDB transaction)
and after an otherwise successful write.
</summary>
</histogram>
<histogram name="LevelDBWrapper.CommitDelay" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Delay between the browser process receiving changes and those changes being
written to the DB.
</summary>
</histogram>
<histogram name="MojoLevelDBEnv.IOError" enum="LevelDBIOErrorMethods"
expires_after="2025-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Methods where leveldb's Mojo environment has IO errors. This histogram has
expired between M87-106.
</summary>
</histogram>
<histogram name="Sql.Recovery.Result" enum="SqlRecoveryResult"
expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Outcome of attempting to recover a database with sql::Recovery.
</summary>
</histogram>
<histogram name="Sql.Recovery.Result.{DatabaseTag}" enum="SqlRecoveryResult"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Outcome of attempting to recover the {DatabaseTag} database with
sql::Recovery.
</summary>
<token key="DatabaseTag" variants="DatabaseTag"/>
</histogram>
<histogram name="Sql.Recovery.ResultCode" enum="SqliteLoggedResultCode"
expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
SQLite result code from attempting to recover a database with sql::Recovery.
Note that kNoError does not necessarily indicate that recovery succeeded
(see Sql.Recovery.Result for that information), since not all recoveries
fail due to SQLite errors (e.g. if a version number could not be read from
the meta table).
</summary>
</histogram>
<histogram name="Sql.Recovery.ResultCode.{DatabaseTag}"
enum="SqliteLoggedResultCode" expires_after="2025-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
SQLite result code from attempting to recover the {DatabaseTag} database
with sql::Recovery. Note that kNoError does not necessarily indicate that
recovery succeeded (see Sql.Recovery.Result for that information), since not
all recoveries fail due to SQLite errors (e.g. if a version number could not
be read from the meta table).
</summary>
<token key="DatabaseTag" variants="DatabaseTag"/>
</histogram>
<histogram name="Sql.Statement.{DatabaseTag}.VMSteps" units="count"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of virtual machine operations executed for {DatabaseTag}
database. It is reported once per statement. It can be used as a proxy of
total work done by queries executed over the database.
</summary>
<token key="DatabaseTag" variants="DatabaseTag"/>
</histogram>
<histogram name="Sql.vfs.SyncTime" units="ms" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes to sync SQLite data to disk. The metric is recorded once
per flush. A SQLite operation may require multiple sync operation to ensure
database consistency.
</summary>
</histogram>
<histogram name="Storage.Blob.FileReaderLoader.DataPipeNotReadableMojoError"
enum="FileReaderLoaderMojoResult" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when FileReaderLoader.FailureType2 records a data pipe not readable
error. This is the specific type of Mojo error.
</summary>
</histogram>
<histogram name="Storage.Blob.FileReaderLoader.FailureType2"
enum="FileReaderLoaderFailureType" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when an error occurs in the FileReaderLoader, which is used to load
blobs in the Renderer. FileReaderUser is mostly used for Javascript's
'FileReader', but can also be used to read blobs for the IndexedDB
renderer-side implementation. For the read error category, see
Storage.Blob.FileReaderLoader.ReadError for a breakdown of the specific read
error reasons.
</summary>
</histogram>
<histogram name="Storage.Blob.FileReaderLoader.ReadError2" enum="NetErrorCodes"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error code reported by the blob system while trying to read a blob in
the FileReaderLoader.
</summary>
</histogram>
<histogram name="Storage.Buckets.BucketCount" units="buckets"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of storage buckets in existence for a StorageKey when a
new one is created (including the new one). This is intended to give an idea
of the number of buckets individual apps use. Note: the count in histogram
bucket 1 correlates to the total number of sites that use the buckets API
(per Chrome client). The count in histogram bucket N, divided by the size of
the bucket, correlates to the number of sites for that Chrome client which
use at least that many buckets.
</summary>
</histogram>
<histogram name="Storage.Buckets.Parameters.Durability"
enum="StorageBucketDurabilityParameter" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The requested durability for a bucket when it is open()ed.</summary>
</histogram>
<histogram name="Storage.Buckets.Parameters.Expiration" units="minutes"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The expiration time for a bucket, in minutes, if provided when it is
open()ed. If not provided, the underflow bucket is used.
</summary>
</histogram>
<histogram name="Storage.Buckets.Parameters.Persisted"
enum="StorageBucketPersistedParameter" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The requested persistence for a bucket when it is open()ed.</summary>
</histogram>
<histogram name="Storage.Buckets.Parameters.QuotaKb" units="KB"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The requested quota for a bucket, in kB, if provided. If not provided, the
underflow bucket is used. Logged when the bucket is open()ed.
</summary>
</histogram>
<histogram name="Storage.ClearSiteDataHeader.Parameters"
enum="ClearSiteDataParameters" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A Clear-Site-Data response header was seen with the given values.
</summary>
</histogram>
<histogram name="Storage.FileSystemAccess.FilePathWatcherCallbackError"
enum="FileSystemAccessWatchWithChangeInfoResult" expires_after="2025-06-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if content::FilePathWatcher sends an error to its callback and how
it failed. Recorded on every error sent to the callback.
</summary>
</histogram>
<histogram name="Storage.FileSystemAccess.InotifyWatchCount" units="count"
expires_after="2025-07-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the high water mark of inotify watches used in a FilePathWatcher on
Linux. Recorded when the FilePathWatcher is destroyed.
</summary>
</histogram>
<histogram name="Storage.FileSystemAccess.ObservationCallbackRate"
units="count" expires_after="2025-07-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of times an observer's callback is triggered per
observation in a one second window. Recorded one second after a callback has
been triggered when there is no ongoing window.
</summary>
</histogram>
<histogram name="Storage.FileSystemAccess.RestorePermissionPromptOutcome"
enum="FileSystemAccessRestorePermissionPromptOutcome"
expires_after="2025-09-01">
<owner>[email protected]</owner>
<owner>src/content/browser/file_system_access/OWNERS</owner>
<summary>
The result of a user interaction with the File System Access Persistent
Permissions restore prompt UI.
</summary>
</histogram>
<histogram name="Storage.FileSystemAccess.ToggleExtendedPermissionOutcome"
enum="Boolean" expires_after="2025-09-01">
<owner>[email protected]</owner>
<owner>src/content/browser/file_system_access/OWNERS</owner>
<summary>
The result of a user interaction with the File System Access Persistent
Permissions Page Info UI checkbox toggle option to enable or disable
Extended Permissions for a given origin.
</summary>
</histogram>
<histogram name="Storage.FileSystemAccess.WatchWithChangeInfoResult"
enum="FileSystemAccessWatchWithChangeInfoResult" expires_after="2025-06-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if content::FilePathWatcher::WatchWitchChangeInfo succeeds and if it
doesn't, how it fails. Recorded for every call.
</summary>
</histogram>
<histogram
name="Storage.FileSystemAccess.{OpType}PermissionRequestOutcome.{EntryType}"
enum="FileSystemAccessPermissionRequestOutcome" expires_after="2025-09-01">
<owner>[email protected]</owner>
<owner>src/content/browser/file_system_access/OWNERS</owner>
<summary>
The result of an attempt to request permission to a file or directory via
the File System Access API.
</summary>
<token key="OpType">
<variant name="Read" summary="Read permission requested"/>
<variant name="Write" summary="Write permission requested"/>
</token>
<token key="EntryType">
<variant name="Directory" summary="Requested permission to a directory"/>
<variant name="File" summary="Requested permission to a file"/>
</token>
</histogram>
<histogram name="Storage.ImportantSites.CBDChosenReason"
enum="ImportantSitesReason" expires_after="2024-10-06">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a user chooses to blocklist one or more sites when they clear browsing
data, this is recorded for every reason each chosen site was marked as
important. It indicates which signals were used to show the given site to
the user that the user then chose to exclude from clearing. This histogram
has expired between M95-M106.
</summary>
</histogram>
<histogram name="Storage.ImportantSites.CBDChosenReasonCount" units="count"
expires_after="2024-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This records the number of reasons each important site had that the user
chose to blocklist when clearing browsing data. This histogram has expired
between M95-M106.
</summary>
</histogram>
<histogram name="Storage.ImportantSites.CBDIgnoredReason"
enum="ImportantSitesReason" expires_after="2024-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When a user chooses to blocklist one or more sites when they clear browsing
data, this is recorded for every reason each unchosen site was marked as
important. It indicates which signals were used to show the given site to
the user, which the user then ignored and did not select to blocklist from
clearing data. This histogram has expired between M95-M106.
</summary>
</histogram>
<histogram name="Storage.ImportantSites.CBDIgnoredReasonCount" units="count"
expires_after="2024-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This records the number of reasons each important site had that the user
chose to NOT blocklist when clearing browsing data. This histogram has
expired between M95-M106.
</summary>
</histogram>
<histogram name="Storage.ImportantSites.GeneratedReason"
enum="ImportantSitesReason" expires_after="2024-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when we generate a list of important sites. This can happen when
the user opens the Clear Browsing Data dialog on Android, views the Storage
tab in Site Settings on Android, or launches 'Manage Storage' from Android
System Settings for Chrome. We record every reason each site was chosen in
this metric. This means that we can report this metric multiple times for a
single site. This histogram has expired between M95-M106.
</summary>
</histogram>
<histogram name="Storage.ImportantSites.GeneratedReasonCount" units="count"
expires_after="2024-08-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This records the number of reasons qualifying a site for being 'important'.
We record this for every site when we generate a list of important sites,
described in "Storage.ImportantSites.GeneratedReason". This
histogram has expired between M95-M106.
</summary>
</histogram>
<histogram name="Storage.ImportantSites.GenerationTime" units="ms"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time it takes to generate the list of 'important' sites. This list is
generated when the user enters the 'Clear Browsing Dialog' or the 'Manage
Space' screens for Chrome, both of which are on Android. This histogram has
expired between M95-M106.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdComponentRenderURLSize" units="bytes"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the size of each ad component renderURL in bytes. Recorded for each
ad component, each time an interest group is successfully joined.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdProtoCompressionRatio" units="%"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage ratio of compressed size divided by uncompressed size
of the AdsProto, times 100. Recorded each time the AdProto is compressed,
including both during interest group insertion, and database migration from
older uncompressed versions, unless uncompressed size is 0. Includes both
ads and ad components.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdProtoCompressionTime" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time taken to compress the ad proto. Recorded each time the
AdProto is compressed, including both during interest group insertion, and
database migration from older uncompressed versions. Includes both ads and
ad components.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdProtoDecompressionOutcome"
enum="AdProtoDecompressionOutcome" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcome of interest group AdProto decompression, recorded on
each decompression attempt. Includes both ads and ad components.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdProtoDecompressionTime" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the outcome of interest group AdProto decompression, recorded on
each successful decompression attempt. Includes both ads and ad components.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdProtoSizeCompressed" units="bytes"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the size of the compressed AdProto, recorded each time the AdProto
is compressed, including both during interest group insertion, and database
migration from older uncompressed versions, even if the uncompressed size is
0. Includes both ads and ad components.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdProtoSizeUncompressed" units="bytes"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the size of the uncompressed AdProto, recorded each time the AdProto
is compressed, including both during interest group insertion, and database
migration from older uncompressed versions, even if the uncompressed size is
0. Includes both ads and ad components.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.AdRenderURLSize" units="bytes"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the size of each ad renderURL in bytes. Recorded for each ad, each
time an interest group is successfully joined.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.DBErrors" units="count"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of database errors that occur when accessing interest
group storage.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.DBMaintenanceTime" units="microseconds"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time spent performing database maintenance on the interest group
storage. Recorded when maintenance is run (approximately once an hour).
Note that clients without high-resolution clocks will report 0 for very
short times.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.DBSize" units="KB"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the size of the InterestGroup database. Collected prior to database
maintenance.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.InitializationResult"
enum="InterestGroupStorageInitializationResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of database initialization, every time initialization is
attempted.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.JSONDeserializationResult"
enum="InterestGroupStorageJSONDeserializationResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of JSON deserialization, every time it is attempted.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.JSONSerializationResult"
enum="InterestGroupStorageJSONSerializationResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of JSON serialization, every time it is attempted.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.PerInterestGroup.NumAdComponents"
units="ad components" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of ads components per interest group. Recorded each time
an interest group is successfully joined when a (potentially-empty) ad
components array was passed to joinAdInterestGroup().
</summary>
</histogram>
<histogram name="Storage.InterestGroup.PerInterestGroup.NumAds" units="ads"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of ads per interest group. Recorded each time an interest
group is successfully joined when a (potentially-empty) ads array was passed
to joinAdInterestGroup().
</summary>
</histogram>
<histogram name="Storage.InterestGroup.PerSiteCount" units="groups"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of interest groups loaded for a single group owner when
running an ad auction. Recorded for each owner involved in a running ad
auction.
</summary>
</histogram>
<histogram name="Storage.InterestGroup.ProtoDeserializationResult.{Type}"
enum="InterestGroupStorageProtoDeserializationResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of {Type} Proto deserialization, every time it is
attempted.
</summary>
<token key="Type" variants="InterestGroupStorageProtoType"/>
</histogram>
<histogram name="Storage.InterestGroup.ProtoSerializationResult.{Type}"
enum="InterestGroupStorageProtoSerializationResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of {Type} Proto serialization, every time it is
attempted.
</summary>
<token key="Type" variants="InterestGroupStorageProtoType"/>
</histogram>
<histogram name="Storage.InterestGroup.Upgrade{Outcome}{Version}Version"
units="version" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the {Version} version number of database upgrades that {Outcome},
recorded each time the database upgrade has a "{Outcome}" outcome.
</summary>
<token key="Outcome">
<variant name="Failed" summary="fail"/>
<variant name="Succeeded" summary="succeed"/>
</token>
<token key="Version">
<variant name="End" summary="ending"/>
<variant name="Start" summary="starting"/>
</token>
</histogram>
<histogram name="Storage.InterestGroup.VacuumResult"
enum="InterestGroupStorageVacuumResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of the vacuum operation, every time it is attempted.
</summary>
</histogram>
<histogram name="Storage.SessionStorage.RendererAreaCacheHit"
enum="LocalStorageRendererAreaCacheHitEnum" expires_after="2025-08-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The renderer side cache hit rate metrics for new HTML5 SessionStorage DB
opened. This histogram has expired between M97-106.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.AsyncIterator.EntriesQueuedCount"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of database entries queued to be sent to the async iterator. Recorded
in `SharedStorage::IterationSource::DidReadEntries()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.AsyncIterator.IteratedEntriesBenchmarks"
units="BenchmarksMet" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For each of a set of benchmark percentages, we record that benchmark when
the async iterator first iterates through at least that percentage of queued
entries. Recorded in `SharedStorage::IterationSource::TryResolvePromise()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.AsyncIterator.ReceivedEntriesBenchmarks"
units="BenchmarksMet" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For each of a set of benchmark percentages, we record that benchmark when
the async iterator first receives from the database at least that percentage
of queued entries. Recorded in
`SharedStorage::IterationSource::DidReadEntries()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.Destruction"
enum="BooleanDestroyed" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether destruction was successful after a catastrophic error that occurred
in Shared Storage. Recorded by
SharedStorageDatabase::DatabaseErrorCallback() just after the SQLite
database called RazeAndClose() and then, if it was file-backed,
SharedStorageDatabase attempted to delete the file.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.Error" enum="SqliteErrorCode"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors that occur in Shared Storage. Recorded by
SharedStorageDatabase::DatabaseErrorCallback() just before the SQLite
database determines whether the error is catastrophic and handles it
accordingly.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.BytesUsed.PerOrigin.Max"
units="B" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Maximum number of bytes stored as key-value pairs in `values_mapping` for
any single origin, according to the `per_origin_mapping` of
`SharedStorageDatabase`. Measured only for file-backed databases whose
`per_origin_mapping` table contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.BytesUsed.PerOrigin.Median"
units="B" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Median number of bytes stored as key-value pairs in `values_mapping` for any
single origin, according to the `per_origin_mapping` of
`SharedStorageDatabase`. Measured only for file-backed databases whose
`per_origin_mapping` table contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.BytesUsed.PerOrigin.Min"
units="B" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Minimum number of bytes stored as key-value pairs in `values_mapping` for
any single origin, according to the `per_origin_mapping` of
`SharedStorageDatabase`. Measured only for file-backed databases whose
`per_origin_mapping` table contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.BytesUsed.PerOrigin.Q1"
units="B" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Lower quartile of the per-origin bytes used values, as listed in the
`per_origin_mapping` of `SharedStorageDatabase` (calculated through Method 1
from https://en.wikipedia.org/wiki/Quartile). Measured only for file-backed
databases whose `per_origin_mapping` table contains at least one origin row.
Recorded in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()`
when initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.BytesUsed.PerOrigin.Q3"
units="B" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Upper quartile of the per-origin bytes used values, as listed in the
`per_origin_mapping` of `SharedStorageDatabase` (calculated through Method 1
from https://en.wikipedia.org/wiki/Quartile). Measured only for file-backed
databases whose `per_origin_mapping` table contains at least one origin row.
Recorded in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()`
when initialization is successful.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.FileBacked.BytesUsed.Total.KB"
units="KB" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Sum across all origins of the per-origin bytes used values, as listed in the
`per_origin_mapping` of `SharedStorageDatabase`. Measured only for
file-backed databases whose `per_origin_mapping` table contains at least one
origin row. Recorded in `SharedStorageDatabase::InitImpl()` via
`LogInitHistograms()` when initialization is successful. Contrast with
"Storage.SharedStorage.Database.FileBacked.FileSize.*";
"Storage.SharedStorage.Database.FileBacked.FileSize.*" records the
total storage space used for the entire file, as formatted correctly for
Chrome's embedding of SQLite, whereas
"Storage.SharedStorage.Database.FileBacked.BytesUsed.Total" only
records the total bytes in the raw `key` and `value` columns of
`values_mapping` (under the assumption that `per_origin_mapping` has
remained in sync).
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.FileBacked.FileSize.GB"
units="GB" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size in gigabytes of the SQL database file backing
`SharedStorageDatabase`. Measured only for file-backed databases of size at
least one gigabyte. Recorded in `SharedStorageDatabase::InitImpl()` via
`LogInitHistograms()` when initialization is successful.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.FileBacked.FileSize.KB"
units="KB" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size in kilobytes of the SQL database file backing
`SharedStorageDatabase`. Measured for file-backed databases only. Recorded
in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.NumEntries.PerOrigin.Max"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Maximum origin length, according to the `per_origin_mapping` of
`SharedStorageDatabase`. Measured only for file-backed databases whose
`per_origin_mapping` table contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.NumEntries.PerOrigin.Median"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Median origin length, according to the `per_origin_mapping` of
`SharedStorageDatabase`. Measured only for file-backed databases whose
`per_origin_mapping` table contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.NumEntries.PerOrigin.Min"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Minimum origin length, according to the `per_origin_mapping` of
`SharedStorageDatabase`. Measured only for file-backed databases whose
`per_origin_mapping` table contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.NumEntries.PerOrigin.Q1"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Lower quartile of the origin lengths, as listed in the `per_origin_mapping`
of `SharedStorageDatabase` (calculated through Method 1 from
https://en.wikipedia.org/wiki/Quartile). Measured only for file-backed
databases whose `per_origin_mapping` table contains at least one origin row.
Recorded in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()`
when initialization is successful.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Database.FileBacked.NumEntries.PerOrigin.Q3"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Upper quartile of the origin lengths, as listed in the `per_origin_mapping`
of `SharedStorageDatabase` (calculated through Method 1 from
https://en.wikipedia.org/wiki/Quartile). Measured only for file-backed
databases whose `per_origin_mapping` table contains at least one origin row.
Recorded in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()`
when initialization is successful.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.FileBacked.NumEntries.Total"
units="Entries" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total count of entries in the `values_mapping` of
`SharedStorageDatabase`. Measured for file-backed databases only. Recorded
in `SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.FileBacked.NumOrigins"
units="Origins" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of origins in the `per_origin_mapping` of `SharedStorageDatabase`.
Measured only for file-backed databases whose `per_origin_mapping` table
contains at least one origin row. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.IsFileBacked"
enum="BooleanIsFileBacked" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not the database is file-backed. Recorded in
`SharedStorageDatabase::InitImpl()` via `LogInitHistograms()` when
initialization is successful.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Database.Timing.OpenImpl" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start to end of the call to
`components::SharedStorageDatabase::OpenImpl()`. Recorded in
`components::SharedStorageDatabase::OpenImpl()``.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.AddModule" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`blink::SharedStorageWorklet::AddModule()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in the lambda function callback for
`blink::SharedStorageWorklet::AddModule()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Append" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to `blink::SharedStorage::Append()`
to when the callback has successfully completed. Does not measure the timing
of calls that end in an error. Recorded in
`blink::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Clear" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to `blink::SharedStorage::Clear()`
to when the callback has successfully completed. Does not measure the timing
of calls that end in an error. Recorded in
`blink::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Delete" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to `blink::SharedStorage::Delete()`
to when the callback has successfully completed. Does not measure the timing
of calls that end in an error. Recorded in
`blink::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Get" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to `blink::SharedStorage::get()` to
when the callback has successfully completed. Does not measure the timing of
calls that end in an error. Recorded in the OnceCallback executed after the
get operation completes.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Run" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to `blink::SharedStorage::Run()` to
when the callback has successfully completed. Does not measure the timing of
calls that end in an error. Recorded in
`blink::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Run.ExecutedInWorklet"
units="ms" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from when the end of the call to
`SharedStorageWorkletHost::RunOperationOnWorklet()` to the end of
`SharedStorageWorkletHost::OnRunOperationOnWorkletFinished()`. Recorded in
`SharedStorageWorkletHost::OnRunOperationOnWorkletFinished()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.SelectURL" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`blink::SharedStorage::SelectURL()` to when the callback has successfully
completed. Does not measure the timing of calls that end in an error.
Recorded in the lambda function callback for
`blink::SharedStorage::SelectURL()`.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Document.Timing.SelectURL.ExecutedInWorklet"
units="ms" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from when the mojo callback runs in
`SharedStorageWorkletHost::RunURLSelectionOperationOnWorklet()` to the end
of
`SharedStorageWorkletHost::OnRunURLSelectionOperationOnWorkletFinished()`.
Only measured for calls where the mojo callback has run with a parameter
`success` equal to true. Recorded in
`SharedStorageWorkletHost::OnRunURLSelectionOperationOnWorkletFinished()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Document.Timing.Set" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to `blink::SharedStorage::Set()` to
when the callback has successfully completed. Does not measure the timing of
calls that end in an error. Recorded in
`blink::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.DocumentServiceBind.IsSecureFrame"
enum="BooleanSecure" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the frame is secure when the shared storage document mojom
service is initialized.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.HeaderObserver.CreatedOpaqueOriginForPrefsCheck"
enum="Boolean" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks whether or not it was necessary to create a new opaque origin to use
as the top-frame origin for the call to
`ContentBrowserClient::IsSharedStorageAllowed()` from
`SharedStorageHeaderObserver::IsSharedStorageAllowedBySiteSettings()`.
Recorded in
`SharedStorageHeaderObserver::IsSharedStorageAllowedBySiteSettings()`.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.HeaderObserver.PermissionsPolicyDoubleCheckStatus"
enum="SharedStorageHeaderObserverPermissionsPolicyDoubleCheckStatus"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not a double-check of `PermissionsPolicy` was able to run in the
`SharedStorageHeaderObserver`, and if so, what the result was (enabled or
disabled), as well as if not, why not. (Note that the initial
`PermissionsPolicy` check occurs before the request is sent to the network
service, whereas this double-check occurs after the response is received.)
Recorded in `SharedStorageHeaderObserver::HeaderReceived()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.OnShutdown.NumSqlErrors" units="Errors"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of SQL errors that have occurred in Shared Storage. Recorded by
SharedStorageManager::RecordShutdownMetrics() when the StoragePartitionImpl
is destroyed.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.OnShutdown.RecoveryFromInitFailureAttempted"
enum="BooleanAttempted" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not the SharedStorageManager tried to recover from
SharedStorageDatabase::InitStatus::kInitFailure. Recorded by
SharedStorageManager::RecordShutdownMetrics() when the StoragePartitionImpl
is destroyed.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.OnShutdown.RecoveryOnDiskAttempted"
enum="BooleanAttempted" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not the SharedStorageManager tried to recover from
SharedStorageDatabase::InitStatus::kInitFailure on disk. Recorded by
SharedStorageManager::RecordShutdownMetrics() when the StoragePartitionImpl
is destroyed.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Timing.UrlMappingDuringNavigation"
units="ms" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time for a URN to resolve during a navigation. Recorded for
every navigation to a URN that originates from sharedStorage.selectURL().
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Context.IsDefined"
enum="Boolean" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records true if a given call to `sharedStorage.context()` returns a defined
string, false if the call to `sharedStorage.context()` returns undefined.
Recorded in the worklet service in the call to `SharedStorage::Context()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.DestroyedStatus"
enum="SharedStorageWorkletDestroyedStatus" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not the worklet entered keep-alive phase before destruction, and
if it did enter keep-alive, whether the keep-alive was terminated by
operations finishing or due to timeout. Recorded in the destructor of
`SharedStorageWokletHost`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Error.Type"
enum="SharedStorageWorkletErrorType" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Type of error encountered by the SharedStorageWorklet in either
`addModule()`, `run()`, or `selectURL()`. Recorded after an exception is
thrown, after a callback is run with `/*success=*/false`, after a call to
`ReportBadMessage()`, and/or just before the rejected promise is returned,
via the utility method `LogWorkletError()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.NumPerPage"
units="WorkletsCreated" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the number of `SharedStorageWorkletHost`'s created by a given page.
Recorded in
`SharedStoragePageLoadMetricsObserver::RecordSessionEndHistogram()` when
metrics are flushed due to the pageload completing or the app entering the
background.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.SelectURL.BudgetStatus"
enum="SharedStorageSelectUrlBudgetStatus" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not the `selectURL()` call had sufficient budget, and if it had
insufficient budget, which budget check failed. Recorded in
`SharedStorageWorkletHost::OnRunURLSelectionOperationOnWorkletFinished()`
via `LogSharedStorageSelectURLBudgetStatus()`. Recorded for `selectURL()`
calls that succeed and for calls that fail due to insufficient budget.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.SelectURL.CallsPerPage"
units="SelectURLCallsPerPage" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of calls made to `selectURL()` by frames on a given page. Recorded in
`SharedStoragePageLoadMetricsObserver::RecordSessionEndHistograms()`. When
`SharedStoragePageLoadMetricsObserver` exists, this histogram is recorded
for all `selectURL()` calls that are forwarded to the browser process from
the renderer, i.e. those that invoke
`SharedStorageWorkletHost::SelectURL()`, except for those where
`SharedStorageWorkletHost`'s pointer to its associated `PageImpl` is
nullptr.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Append" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::Append()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in
`shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Clear" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::Clear()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in
`shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Delete" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::Delete()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in
`shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Entries.Next" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from the start of the call to
`SharedStorage::IterationSource::GetNextIterationResult()` to just before
the promise is returned, for a key-value pair iterator. Includes only calls
where promises are successfully resolved. Recorded in
`SharedStorage::IterationSource::TryResolvePromise()` via
`LogElapsedTime()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Get" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::Get()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in
`shared_storage_worklet::SharedStorage::OnStringRetrievalOperationFinished()`.
</summary>
</histogram>
<histogram
name="Storage.SharedStorage.Worklet.Timing.KeepAliveEndedDueToOperationsFinished.KeepAliveDuration"
units="ms" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from entering keep alive until the start of the call to
`FinishKeepAlive()` for keep-alives that are terminated when operations end
(i.e. excludes worklets whose keep-alives are terminated via timeout).
Recorded in `SharedStorageWokletHost::FinishKeepAlive()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Keys.Next" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from the start of the call to
`SharedStorage::IterationSource::GetNextIterationResult()` to just before
the promise is returned, for a key iterator. Includes only calls where
promises are successfully resolved. Recorded in
`SharedStorage::IterationSource::TryResolvePromise()` via
`LogElapsedTime()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Length" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::Length()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in
`shared_storage_worklet::SharedStorage::OnLengthOperationFinished()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.RemainingBudget"
units="ms" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::RemainingBudget()` to when the
callback has successfully completed. Does not measure the timing of calls
that end in an error. Recorded in
`shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Set" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from start of the call to
`shared_storage_worklet::SharedStorage::Set()` to when the callback has
successfully completed. Does not measure the timing of calls that end in an
error. Recorded in
`shared_storage_worklet::SharedStorage::OnVoidOperationFinished()` via
`LogTimingHistogramForVoidOperation()`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.UsefulResourceDuration"
units="%" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the percentage of the time duration between a
`SharedStorageWorkletHost`'s creation and destruction that occurs before the
time of its last finished operation. For worklets that are destroyed before
completing their outstanding operations, we record 100. Recorded in the
destructor of `SharedStorageWorkletHost`.
</summary>
</histogram>
<histogram name="Storage.SharedStorage.Worklet.Timing.Values.Next" units="ms"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time from the start of the call to
`SharedStorage::IterationSource::GetNextIterationResult()` to just before
the promise is returned, for a value iterator. Includes only calls where
promises are successfully resolved. Recorded in
`SharedStorage::IterationSource::TryResolvePromise()` via
`LogElapsedTime()`.
</summary>
</histogram>
<histogram name="Storage.StoragePressure.Bubble"
enum="StoragePressureBubbleUserAction" expires_after="2025-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
How did the user interact with the StoragePressure Bubble? Ignored means the
user did not click on the positive button before the bubble is closed
(either manually closed or when the browser closes).
</summary>
</histogram>
<histogram name="Storage.SyncFileSystem.FileSyncAction"
enum="SyncFileSystemSyncAction" expires_after="2025-05-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when a SyncFileSystem change event is fired due to the file being
updated remotely by the background sync service. Recorded right before
sending the event to the app.
</summary>
</histogram>
<histogram name="Storage.SyncFileSystem.NotificationSource"
enum="SyncFileSystemNotificationSource" expires_after="2025-05-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when observers are notified to sync files either due to incoming
notification from the invalidations from the Invalidation Service, or
polling triggered by a timer.
</summary>
</histogram>
<histogram name="websql.OpenDatabase" enum="BooleanSecure"
expires_after="never">
<!-- expires-never: core storage metric; consumed in separate dashboard (go/chrome-storage-dashboard) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of WebSQL databases opened for secure vs insecure origins.
</summary>
</histogram>
</histograms>
</histogram-configuration>