<!--
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 Browser 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="SidePanelEntry">
<variant name="AboutThisSite"/>
<variant name="Assistant"/>
<variant name="Bookmarks"/>
<variant name="Companion"/>
<variant name="CustomizeChrome"/>
<variant name="Extension"/>
<variant name="Feed"/>
<variant name="HistoryClusters"/>
<variant name="Lens"/>
<variant name="LensOverlayResults"/>
<variant name="ReadAnything"/>
<variant name="ReadingList"/>
<variant name="ShoppingInsights"/>
<variant name="SideSearch"/>
<variant name="UserNotes"/>
<variant name="WebView"/>
</variants>
<variants name="TabSwitchingType">
<variant name="" summary="Aggregation of all tab states."/>
<variant name=".NoSavedFrames_Loaded"
summary="Tab has no saved frame in the cache but is already loaded."/>
<variant name=".NoSavedFrames_NotLoaded"
summary="Tab has no saved frame in the cache and is not loaded."/>
<variant name=".WithSavedFrames"
summary="Tab has a saved frame in the cache."/>
</variants>
<histogram name="Browser.Actions.PinnedActionsCount" units="actions"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of actions that are currently pinned to the toolbar. This
is emitted every time the user pins or unpins an action to the toolbar.
</summary>
</histogram>
<histogram name="Browser.ChromeOS.HatsStatus" enum="HatsStatus"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the stage up to which the user interacted with the HaTS Chrome OS
survey. This is needed in addition to the Hats metrics data since Chrome OS
relies on client side logic to roll the dice for device selection. This is
recorded when the Hats pipeline ends processing, which is usually when the
controller is destroyed.
</summary>
</histogram>
<histogram name="Browser.DarkModeStatus" enum="DarkModeStatus"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the user's system is in dark mode, light mode, or if this choice is
unavailable due to lack of system support. Updated every UMA upload.
</summary>
</histogram>
<histogram name="Browser.ERP.AppInstallTrackerDiskConsumption" units="bytes"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the AppEventsObserver::AppInstallTracker starts tracking new
app installs or uninstalls. This represents the total disk space consumed by
the component in the user pref store before encryption.
</summary>
</histogram>
<histogram name="Browser.ERP.CachedEventsCountExp" units="events"
expires_after="2025-05-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reflects cached events count: presents number of times a single event is
received and placed in cache. Per-event count is incremented every time an
event is added/replaced in the cache, and the metrics sample is recorded
once the event is confirmed by the server (and thus won't be accepted for
upload anymore). Expected to be 1 for the majority of the events, although
small number of re-uploads is allowed. Counter for an event that has not
been confirmed by the server yet will not be presented in UMA even if
received and cached multiple times; since ERP guarantees delivery, this
would only be a temporary state. Counter is inexact, since it may be reset
in the rare cases that the uploader memory usage reaches its limit. To see
how common that is, look at the histogram
Browser.ERP.UploadMemoryUsagePercent.
</summary>
</histogram>
<histogram name="Browser.ERP.ConfigFileParsingError"
enum="EnterpriseCloudReportingStatusCode" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded when RecordHandlerImpl catches an error while trying to parse the
configuration file that was sent from the reporting server.
</summary>
</histogram>
<histogram name="Browser.ERP.ConfigFileSignatureVerificationError"
enum="EnterpriseCloudReportingStatusCode" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded when ConfigurationFileController encounters an error while trying
to verify the signature and the signed message received from the reporting
server.
</summary>
</histogram>
<histogram name="Browser.ERP.DataLossErrorReason"
enum="DataLossErrorReasonBrowser" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded once each time reporting::error::DATA_LOSS is returned in the
browser. There is a 1:1 relationship between the UMA values and error
messages used with reporting::error::DATA_LOSS so that we can understand
exactly which parts of the code are failing.
</summary>
</histogram>
<histogram name="Browser.ERP.EnqueueFailureDestination"
enum="EnterpriseCloudReportingDestination" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when ReportQueue::Enqueue is called to post an event or metric to
ERP. It counts occurences of the reporting destination for the record
enqueue that failed.
</summary>
</histogram>
<histogram name="Browser.ERP.EnqueueSuccessDestination"
enum="EnterpriseCloudReportingDestination" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when ReportQueue::Enqueue is called to post an event or metric to
ERP. It counts occurences of the reporting destination for the record
enqueue that succeeded.
</summary>
</histogram>
<histogram name="Browser.ERP.EventEnqueueResult"
enum="EnterpriseCloudReportingStatusCode" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded when ReportQueue::Enqueue is called to post an event to ERP. It
counts occurrences of the call returning success or each possible error
Status.
</summary>
</histogram>
<histogram name="Browser.ERP.EventEnqueueResult.{Destination}"
enum="EnterpriseCloudReportingStatusCode" expires_after="2025-03-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when ReportQueue::Enqueue is called to post an event to ERP. It
counts occurrences of the call returning success or each possible error
status for the {Destination} destination.
</summary>
<token key="Destination">
<variant name="ADDED_REMOVED_EVENTS"/>
<variant name="ARC_INSTALL"/>
<variant name="CHROME_BROWSER_ENTERPRISE"/>
<variant name="CRASH_EVENTS"/>
<variant name="CRD_EVENTS"/>
<variant name="CROS_SECURITY_AGENT"/>
<variant name="CROS_SECURITY_NETWORK"/>
<variant name="CROS_SECURITY_PROCESS"/>
<variant name="CROS_SECURITY_USER"/>
<variant name="DLP_EVENTS"/>
<variant name="EVENT_METRIC"/>
<variant name="EXTENSION_INSTALL"/>
<variant name="EXTENSIONS_WORKFLOW"/>
<variant name="HEARTBEAT_EVENT"/>
<variant name="INFO_METRIC"/>
<variant name="KIOSK_HEARTBEAT_EVENTS"/>
<variant name="LEGACY_TECH"/>
<variant name="LOCK_UNLOCK_EVENTS"/>
<variant name="LOG_UPLOAD"/>
<variant name="LOGIN_LOGOUT_EVENTS"/>
<variant name="MEET_DEVICE_TELEMETRY"/>
<variant name="OS_EVENTS"/>
<variant name="PERIPHERAL_EVENTS"/>
<variant name="POLICY_VALIDATION"/>
<variant name="PRINT_JOBS"/>
<variant name="REPORTING_RECORD"/>
<variant name="SUSPICIOUS_EVENTS"/>
<variant name="TELEMETRY_METRIC"/>
<variant name="UNDEFINED_DESTINATION"/>
<variant name="UPLOAD_EVENTS"/>
<variant name="WEB_PROTECT"/>
</token>
</histogram>
<histogram name="Browser.ERP.EventsUploadCountExp" units="uploads"
expires_after="2025-05-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reflects events upload count: presents number of times a single event is
sent to the server. Per-event count is incremented every time the event is
sent, and the metrics value is recorded in UMA once the event is confirmed
by the server (and thus won't be sent anymore). Expected to be 1 for the
majority of the events, although minor duplication is allowed. Counter for
an event that has not been confirmed by the server yet will not be presented
in UMA even if uploaded multiple times; since ERP guarantees delivery, this
would only be a temporary state. Counter is inexact, since it may be reset
in the rare cases that the uploader memory usage reaches its limit. To see
how common that is, look at the histogram
Browser.ERP.UploadMemoryUsagePercent.
</summary>
</histogram>
<histogram name="Browser.ERP.EventUploadSizeAdjustment.{Param}" units="bytes"
expires_after="2025-05-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
{Param} informed by the Missive daemon. Updated every time the Missive
daemon requests uploading.
</summary>
<token key="Param">
<variant name="MaxUploadSize"
summary="The maximum upload size computed based on new events rate
and remaining storage capacity"/>
<variant name="NewEventsRate"
summary="The size of events enqueued every second"/>
<variant name="RemainingStorageCapacity"
summary="The remaining storage capacity"/>
</token>
</histogram>
<histogram name="Browser.ERP.FilteredOutEvents" enum="BooleanFiltered"
expires_after="2025-05-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether an event is filtered out by FilteredReportQueue.
</summary>
</histogram>
<histogram name="Browser.ERP.MetricsReporting.EventMetricEnqueued"
enum="EnterpriseCloudReportingMetricEventType" expires_after="2024-12-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the MetricEventObserverManager enqueues an event metric. It
counts occurences of the event type that was extracted from the event
payload.
</summary>
</histogram>
<histogram name="Browser.ERP.MetricsReporting.{MetricCollector}NoMetricData"
enum="EnterpriseCloudReportingDestination" expires_after="2024-11-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when {MetricCollector}::OnMetricDataCollected is triggered from
samplers with no metric data to report. It counts occurences of the
reporting destination configured with the collector's report queue.
</summary>
<token key="MetricCollector">
<variant name="ManualCollector"/>
<variant name="OneShotCollector"/>
<variant name="PeriodicCollector"/>
</token>
</histogram>
<histogram name="Browser.ERP.MissiveClientDbusError"
enum="EnterpriseReportingMissiveClientDbusError" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded when the Missive client receives a response from sending a record
to the Missive daemon over dBus. There are four types of responses. OK
indicates no error. SERVICE_UNAVAILABLE indicates Missive client is not
connected to dBus and did not attempt to send the record. NO_RESPONSE
indicates Missive client thinks it's connected to dBus and attempted to send
the record over dBus but received no response from the Missive daemon.
UNKNOWN indicates an unknown error occurred.
</summary>
</histogram>
<histogram name="Browser.ERP.PsrResult" enum="EnterpriseReportingPsrResult"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of obtaining PSR info from healthd in the metrics
pipeline.
</summary>
</histogram>
<histogram name="Browser.ERP.RateLimitedEvents" enum="BooleanAccepted"
expires_after="2025-05-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether an event is accepted by ReportQueue rate limiter.
</summary>
</histogram>
<histogram name="Browser.ERP.RecordProcessedByServer" enum="Boolean"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded when we send an encrypted record and receive a valid response from
the server (i.e. no network errors). True if the server processed the
record. False if the server found some error with the record. Note that this
may return False even if Browser.ERP.(Un)ManagedUploadEncryptedReport
doesn't report a server error, because the server errors it refers to are
for DM server requests which are not reporting specific.
</summary>
</histogram>
<histogram name="Browser.ERP.RecordsPerUploadFromNonChromeosDevice"
units="records" expires_after="2024-11-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when uploading records to the reporting server from a non-ChromeOS
device (i.e. using the realtime reporting pipeline). Counts the number of
records batched into a single upload request from a {ManagementStatus}
device. Uploads containing zero records will not be included as those are
just encryption key requests.
</summary>
</histogram>
<histogram name="Browser.ERP.RecordsPerUploadFrom{ManagementStatus}Device"
units="records" expires_after="2025-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when uploading records to the reporting server. Counts the number
of records batched into a single upload request from a {ManagementStatus}
device. Uploads containing zero records will not be included as those are
just encryption key requests.
</summary>
<token key="ManagementStatus">
<variant name="Managed" summary="managed"/>
<variant name="Unmanaged" summary="unmanaged"/>
</token>
</histogram>
<histogram name="Browser.ERP.ResponsePayloadSize" units="bytes"
expires_after="2025-05-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of ERP's response payload as a JSON string when upload is
successful. Updated every time when an upload succeeds AND at least one hour
has passed since the last update AND 9 more uploads have succeeded since the
last update.
</summary>
</histogram>
<histogram name="Browser.ERP.RetryEnqueueRecordStatus"
enum="EnterpriseCloudReportingStatusCode" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Success or failure status of enqueuing a record to Missive after failing to
enqueue at least once due to Missive unavailablity. Recorded once the
enqueue succeeds or times out.
</summary>
</histogram>
<histogram name="Browser.ERP.SingleRequestPayloadSize" units="bytes"
expires_after="2025-05-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of ERP's request payload as a JSON string when upload is
successful. Updated every time when an upload succeeds.
</summary>
</histogram>
<histogram name="Browser.ERP.TimeSpentRetryingEnqueueRecord" units="ms"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Amount of time spent re-trying to enqueue a record to Missive after failing
to enqueue at least once due to Missive unavailablity. Recorded once the
enqueue succeeds or times out.
</summary>
</histogram>
<histogram name="Browser.ERP.UnavailableErrorReason"
enum="UnavailableErrorReasonBrowser" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Recorded once each time reporting::error::UNAVAILABLE is returned in the
browser. There is a 1:1 relationship between the UMA values and error
messages used with reporting::error::UNAVAILABLE so that we can understand
exactly which parts of the code are failing.
</summary>
</histogram>
<histogram name="Browser.ERP.UnuploadedCrashShouldNotReportReason"
enum="EnterpriseReportingUnuploadedCrashShouldNotReportReason"
expires_after="2024-10-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason that an unuploaded crash is determined that it should or should
not be reported in crash reporting. It is recorded every time an unuploaded
crash is received from healthd. The primary purpose is to monitor how
frequently old unuploaded crashes are not reported because a maximum number
of saved local IDs has been reached.
</summary>
</histogram>
<histogram name="Browser.ERP.UnusualEnqueueTimestamp" enum="Boolean"
expires_after="2024-12-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Would only be true. Recorded whenever an unusual timestamp is encountered
when enqueuing a record, which will be rejected.
</summary>
</histogram>
<histogram name="Browser.ERP.UploadMemoryUsagePercent" units="%"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records memory usage by event uploader as a percent of total memory
allocated for the client-side events upload handling. Metric is recorded
every time a new upload request is received and stored in memory.
</summary>
</histogram>
<histogram name="Browser.ERP.{ManagementStatus}UploadEncryptedReport"
enum="EnterpriseDMServerRequestSuccess" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>src/components/reporting/OWNERS</owner>
<summary>
Status of a completed ERP upload request from a {ManagementStatus} device.
Either successful, with a failure or with a server error. Recorded when a
response from the server is received.
</summary>
<token key="ManagementStatus">
<variant name="Managed" summary="managed"/>
<variant name="Unmanaged" summary="unmanaged"/>
</token>
</histogram>
<histogram name="Browser.ERP.{Param}PayloadSizePerHour" units="KiB"
expires_after="2025-05-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The accumulated size per hour of ERP's {Param} payload as JSON strings when
upload is successful. Updated every hour.
</summary>
<token key="Param">
<variant name="Request" summary="request"/>
<variant name="Response" summary="response"/>
</token>
</histogram>
<histogram name="Browser.MainThreadsCongestion.1MinAfterResume" units="janks"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is a specialized subset of the `Browser.MainThreadsCongestion`
metric, designed to capture the metrics specifically during the first minute
after a device resumes from suspend. After the main message loop starts, the
calculation for Browser.MainThreadsCongestion is done on a periodic 30
second interval. Any calculations that occur within a minute of resuming
will also emit this metric. Each 30 second duration is divided into 100ms
intervals. This metric counts the number of these intervals that were
"congested". An interval is congested if during it the UI or IO
thread executes an "important" task that was queued more than 100
ms ago, or a non-important task or a native event handler that started
executing more than 100 ms ago. See
https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit
for more details.
This is supported by ChromeOS only.
</summary>
</histogram>
<histogram
name="Browser.MainThreadsCongestion.ExtensionContentScripts.{NumExtensions}"
units="janks" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is emitted every 30 seconds after main message loop start, when
there is user activity. Each 30 second duration is divided into 100ms
intervals. This metric counts the number of these intervals that were
"congested". An interval is congested if during it the UI or IO
thread executes an "important" task that was queued more than 100
ms ago, or a non-important task or a native event handler that started
executing more than 100 ms ago. See
https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit
for more details.
This metric is split by the estimated number of extensions that ran content
scripts in the pages that were visible during the interval. It is only
recorded if there were visible pages. This version is used for
{NumExtensions}.
</summary>
<token key="NumExtensions">
<variant name="0" summary="0 extensions"/>
<variant name="1" summary="1 extension"/>
<variant name="2" summary="2 or 3 extensions"/>
<variant name="4" summary="4 to 7 extensions"/>
<variant name="8" summary="8 to 15 extensions"/>
<variant name="16" summary="16 or more extensions"/>
</token>
</histogram>
<histogram name="Browser.MainThreadsCongestion.LowMemory" units="janks"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is emitted every 30 seconds after main message loop start, when
there is user activity. Each 30 second duration is divided into 100ms
intervals. This metric counts the number of these intervals that were
"congested". An interval is congested if during it the UI or IO
thread executes an "important" task that was queued more than 100
ms ago, or a non-important task or a native event handler that started
executing more than 100 ms ago. See
https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit
for more details.
This metric is only recorded if the available physical memory is below a
threshold based on Memory.Experimental.AvailableMemoryPercent 10 percentile.
</summary>
</histogram>
<histogram name="Browser.MainThreadsCongestion.Used" units="janks"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is emitted every 30 seconds after main message loop start, when
there is user activity. Each 30 second duration is divided into 100ms
intervals. This metric counts the number of these intervals that were
"congested". An interval is congested if during it the UI or IO
thread executes an "important" task that was queued more than 100
ms ago, or a non-important task or a native event handler that started
executing more than 100 ms ago. See
https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit
for more details.
This metric is only recorded if Chrome is either visible, playing audio, or
capturing video.
</summary>
</histogram>
<histogram name="Browser.MainThreadsCongestion{Phase}" units="janks"
expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is emitted every 30 seconds after main message loop start, when
there is user activity. Each 30 second duration is divided into 100ms
intervals. This metric counts the number of these intervals that were
"congested". An interval is congested if during it the UI or IO
thread executes an "important" task that was queued more than 100
ms ago, or a non-important task or a native event handler that started
executing more than 100 ms ago. See
https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit
for more details.
This metrics graduated from
Browser.Responsiveness.JankyIntervalsPerThirtySeconds(1,2,3) and their
history might be useful to understand how we got here.
Suffixed phases can be useful as diagnosis metrics. This phase represents:
{Phase}
This histogram is of special interest to the chrome-analysis-team@. Do not
change its semantics or retire it without talking to them first.
</summary>
<token key="Phase">
<variant name=""
summary="Default view, includes all congested intervals after
OnFirstIdle()."/>
<variant name=".Initial" summary="The first interval after OnFirstIdle()."/>
<variant name=".Periodic" summary="All intervals but .Initial"/>
<variant name=".RunningOnly"
summary="Diagnostic metric which ignores queuing congestion."/>
<variant name=".RunningOnly.Initial"
summary="The first interval, before first idle and ignoring queuing
congestion."/>
<variant name=".RunningOnly.Periodic"
summary="All RunningOnly intervals but the first one."/>
</token>
</histogram>
<histogram name="Browser.MainThreadsCongestion{UsageScenario}" units="janks"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is emitted every 30 seconds after main message loop start, when
there is user activity. Each 30 second duration is divided into 100ms
intervals. This metric counts the number of these intervals that were
"congested". An interval is congested if during it the UI or IO
thread executes an "important" task that was queued more than 100
ms ago, or a non-important task or a native event handler that started
executing more than 100 ms ago. See
https://docs.google.com/document/d/1vDSGFvJblh7yJ3U3RVB_7qZLubyfTbQdQjuN1GoUNkc/edit
for more details.
This metric is split by usage scenarios (go/chrome_power_use_per_scenario).
This version is recorded for {UsageScenario}.
</summary>
<token key="UsageScenario">
<!--
Variants describing the usage scenario for a time interval. Consider updating
both "UsageScenario" and "UsageScenario10Sec" in
tools/metrics/histograms/metadata/power/histograms.xml when updating this.
-->
<variant name=".AllTabsHidden_Audio"
summary="intervals during which there was no visible tab and no video
capture, but there was audio"/>
<variant name=".AllTabsHidden_NoVideoCaptureOrAudio"
summary="intervals during which there was no visible tab, no video
capture and no audio"/>
<variant name=".AllTabsHidden_VideoCapture"
summary="intervals during which there was no visible tab, but there
was video capture"/>
<variant name=".Audio"
summary="intervals during which there was audio and at least 1
visible tab, but there was no video playback or video
capture"/>
<variant name=".EmbeddedVideo_NoNavigation"
summary="intervals during which a video played in a visible tab and
there was no navigation and no video capture"/>
<variant name=".EmbeddedVideo_WithNavigation"
summary="intervals during which a video played in a visible tab and
there was a navigation, but no video capture"/>
<variant name=".FullscreenVideo"
summary="intervals during which a video played in fullscreen and
there was no video capture"/>
<variant name=".Interaction"
summary="intervals during which there was at least 1 visible tab and
a user interaction, but no navigation, audio, video playback
or video capture"/>
<variant name=".Navigation"
summary="intervals during which there was at least 1 visible tab and
a navigation, but no audio, video playback or video capture"/>
<variant name=".Passive"
summary="intervals during which there was at least 1 visible tab, but
no user interaction, navigation, audio, video playback or
video capture"/>
<variant name=".VideoCapture"
summary="intervals during which there was at least 1 visible tab and
video capture"/>
<variant name=".ZeroWindow"
summary="intervals during which there was no window"/>
</token>
</histogram>
<histogram name="Browser.PaintPreview.Capture.CompressedOnDiskSize" units="KB"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the size of a compressed on-disk capture for the paint preview after
a proto is written to disk if compressed.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.Capture.NumberOfFramesCaptured"
units="units" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of frames captured by a paint preview if it succeeded.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.Capture.Success" enum="BooleanSuccess"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records a boolean indicating whether a capture attempt was successful.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.Capture.TotalCaptureDuration" units="ms"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the total time spent capturing a paint preview of a page. This
includes capture and serialization of all frames and IPC time.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.Player.CompositorProcessStartedCorrectly"
enum="BooleanSuccess" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if the paint preview compositor process started correctly.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.Player.CompositorProcessStartupTime"
units="ms" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time it took to start the paint preview compositor process.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.Player.LinkClicked" enum="BooleanSuccess"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records when a link is clicked in the paint preview player.</summary>
</histogram>
<histogram name="Browser.PaintPreview.Player.TimeToFirstBitmap" units="ms"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time taken to from the request to start the compositor process
to the first bitmap being loaded.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.TabbedPlayer.CompositorFailureReason"
enum="TabbedPaintPreviewCompositorFailureReason" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the the reason for exiting the compositor process for the
TabbedPaintPreviewPlayer. Recorded when the compositor returns an error or
disconnects.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.TabbedPlayer.ExitCause"
enum="TabbedPaintPreviewExitCause" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the the reason for exiting TabbedPaintPreviewPlayer. Recorded when
paint preview is removed.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.TabbedPlayer.FirstPaintBeforeTabLoad"
enum="Boolean" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether paint preview was drawn before the tab finished loading.
Recorded when tab has finished loading.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.TabbedPlayer.HadCapture" enum="Boolean"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a paint preview exists. Recorded when attempting to show a
preview on startup. This in conjuction with CompositorFailureReason gives
the total number of failures to show a paint preview.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.TabbedPlayer.SnackbarCount" units="units"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of times that the upgrade snackbar was shown in a session
of TabbedPaintPreviewPlayer. Recorded when paint preview is removed.
</summary>
</histogram>
<histogram name="Browser.PaintPreview.TabbedPlayer.TimeToFirstBitmap"
units="ms" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time taken to from actvity creation to the first bitmap being
shown. Recorded on first paint preview paint event.
</summary>
</histogram>
<histogram
name="Browser.PaintPreview.TabbedPlayer.UpTime{TabbedPaintPreviewPlayerUptime}"
units="ms" expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the length of the time that a session of TabbedPaintPreviewPlayer
lasts. Recorded when paint preview is removed.
{TabbedPaintPreviewPlayerUptime}
</summary>
<token key="TabbedPaintPreviewPlayerUptime">
<variant name=".RemovedByCompositorFailure"
summary="Removed by compositor failure"/>
<variant name=".RemovedByLinkClick" summary="Removed by link click"/>
<variant name=".RemovedByNavigation" summary="Removed by navigation"/>
<variant name=".RemovedByPullToRefresh"
summary="Removed by pull to refresh"/>
<variant name=".RemovedBySnackBar" summary="Removed by SnackBar"/>
<variant name=".RemovedOnAccessibilityNotSupported"
summary="Removed on accessibility not supported"/>
<variant name=".RemovedOnLoad" summary="Removed on load"/>
<variant name=".RemovedOnOfflineAvailable"
summary="Removed on offline page available"/>
<variant name=".RemovedOnTabDestroy" summary="Removed on tab destroy"/>
<variant name=".RemovedOnTabHidden" summary="Removed on tab hidden"/>
</token>
</histogram>
<histogram name="Browser.PaintPreview.TabService.DiskUsageAtStartup" units="KB"
expires_after="2025-05-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the total disk usage by the Paint Preview Tab Service at startup of
the profile keyed service.
</summary>
</histogram>
<histogram name="Browser.Responsiveness.IOJanksTotalPerMinute" units="janks"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Similar to Browser.Responsiveness.IOJankyIntervalsPerMinute but sums janky
events across all foreground threads over the monitored minute rather than
considering each interval a boolean. This aims to cover a blind spot of
IOJankyIntervalsPerMinute as it cannot see an improvement where we unblock
19/20 threads performing I/O. Not reported across system sleep. More details
@ https://bit.ly/chrome-io-jank-metric
</summary>
</histogram>
<histogram name="Browser.Responsiveness.IOJankyIntervalsPerMinute"
units="janks" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is emitted every minute. It reports a number between 0 and 60
which corresponds to the number of 1 second intervals during the monitored
minute to which a stalled foreground thread
ScopedBlockingCall(BlockingType::MAY_BLOCK) was attributed. A stalled call
is first attributed to the interval in which it began, and is attributed to
a number of intervals equal to the length of the call, rounded to the
nearest second. (Before http://crrev.com/c/2314873, the length was truncated
rather than rounded.) This aims to capture moments where the main thread is
responsive but the application is not (because things aren't loading). Not
reported across system sleep. More details @
https://bit.ly/chrome-io-jank-metric
</summary>
</histogram>
<histogram name="Browser.SupportTool.SupportToolWebUIAction"
enum="SupportToolWebUIActionType" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports the actions that the user takes when they use chrome://support-tool
WebUI. These actions include the page navigation and data collection
details. This metric is used to measure the usage rate of Support Tool
features.
</summary>
</histogram>
<histogram name="Browser.TabDragging.DragAmongTabsPresentationTime" units="ms"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Compositor presentation time when dragging tabs left or right to a different
index. This metric is used to measure tab dragging performance. Record on
the next compositor frame when the data is collected.
</summary>
</histogram>
<histogram name="Browser.TabDragging.DragToNewBrowserPresentationTime"
units="ms" expires_after="2023-12-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Compositor presentation time when dragging tabs out to a new browser. This
metric is used to measure tab dragging performance. Record on the next
compositor frame when the data is collected.
</summary>
</histogram>
<histogram name="Browser.TabDragging.PresentationTime" units="ms"
expires_after="2023-12-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Compositor presentation time when dragging tabs. This metric is used to
measure tab dragging performance. Record on the next compositor frame when
the data is collected.
</summary>
</histogram>
<histogram name="Browser.TabDragging.PresentationTimeMax" units="ms"
expires_after="2024-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Maxinum compositor presentation time when dragging tabs. This metric is used
to measure tab dragging performance. Record after a drag and drop session is
ended.
</summary>
</histogram>
<histogram name="Browser.Tabs.TabSwitchResult3{TabSwitchingType}"
enum="TabSwitchResult2" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a frame was presented after a tab switch event. Recorded based on
the destination tab state when the tab switch starts: {TabSwitchingType}
</summary>
<token key="TabSwitchingType" variants="TabSwitchingType"/>
</histogram>
<histogram name="Browser.Tabs.TotalIncompleteSwitchDuration3{TabSwitchingType}"
units="ms" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time between a tab switch input event timestamp and when the tab is
hidden, if no frame is presented in the meantime. Recorded based on the
destination tab state when the tab switch starts: {TabSwitchingType}
</summary>
<token key="TabSwitchingType" variants="TabSwitchingType"/>
</histogram>
<histogram name="Browser.Tabs.TotalSwitchDuration3{TabSwitchingType}"
units="ms" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<improvement direction="LOWER_IS_BETTER"/>
<summary>
The time between the input event timestamp and the frame presentation time
on a tab switch. Recorded based on the destination tab state when the tab
switch starts: {TabSwitchingType}
</summary>
<token key="TabSwitchingType" variants="TabSwitchingType"/>
</histogram>
<histogram name="Browser.WindowCount.Guest" units="units"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of open guest windows at the same time. Recorded when a new guest
window is created. Please note that this metric double counts the lower
numbers, meaning that if user opens three windows (without closing any in
between), then buckets 1, 2, and 3 will all be incremented in turn.
</summary>
</histogram>
<histogram name="Browser.WindowCount.Incognito" units="units"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of open incognito windows at the same time. Recorded when a new
incognito window is created. Please note that this metric double counts the
lower numbers, meaning that if user opens three windows (without closing any
in between), then buckets 1, 2, and 3 will all be incremented in turn.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.BlockedByFilterURL"
enum="RenderProcessHostBlockedURLReason" expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when RenderProcessHostImpl::FilterURL detects a disallowed URL sent
by the renderer process and rewrites it to about:blank#blocked. See also
Navigation.Renderer.BlockedForFilterURL for cases caught earlier in the
renderer process, and https://crbug.com/40066983.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ChildCodeIntegrityFailures"
enum="RendererType" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of renderer process terminations due to a code integrity failure,
grouped by type. This is only reported on Windows.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ChildCrashes" enum="RendererType"
expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Count of renderer process crashes grouped by type.</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ChildKills" enum="RendererType"
expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Count of renderer process kills grouped by type.</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ChildKills.OOM" enum="RendererType"
expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Out of BrowserRenderProcessHost.ChildKills, numer of kills due to SIGKILL,
which is a strong signal of out of memory on Chrome OS, grouped by renderer
type.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ChildLaunchFailureCodes"
enum="LaunchErrorCodes" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The launch error codes for failed renderer process launches.
In M129 we are more accurately tracking renderer process launch failures,
and expect to find a significant spike in volume.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ChildLaunchFailures"
enum="RendererType" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of renderer process launch failures grouped by type.
In M129 we are more accurately tracking renderer process launch failures,
and expect to find a significant spike in volume.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.Cleanup.DelayReason"
enum="RenderProcessHostDelayShutdownReason" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded whenever a RenderProcessHost is cleaned up, with the reason the
cleanup fails or is delayed, or kNoDelay if it succeeded quickly.
The total count of this histogram should be equal to
BrowserRenderProcessHost.Cleanup.Total.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.Cleanup.Total" enum="Boolean"
expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records true when an attempt is made to clean up a RenderProcessHost.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.DisconnectedAlive"
enum="RendererType" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of renderer process crashes that we miscounted because we took the
exit code too early. Grouped by type.
</summary>
</histogram>
<histogram
name="BrowserRenderProcessHost.ExistingRendererIsInitializedAndNotDead"
enum="Boolean" expires_after="2025-04-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the existing renderer used is alive. Recorded when
RenderProcessHostImpl::GetProcessHostForSiteInstance uses an existing
renderer.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.FastShutdownIfPossible.DelayReason"
enum="RenderProcessHostDelayShutdownReason" expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded whenever a RenderProcessHost is fast shutting down, with the reason
the shutdown fails or is delayed, or kNoDelay if it succeeded quickly.
The total count of this histogram should be equal to
BrowserRenderProcessHost.FastShutdownIfPossible.Total.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.FastShutdownIfPossible.Total"
enum="Boolean" expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records true when an attempt is made to fast shutdown a RenderProcessHost.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.LabeledInTaskManager"
enum="BooleanLabeledRendererTask" expires_after="2024-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports false each time the Task Manager displays an unlabeled renderer
process using the fallback task provider, indicating that a type of renderer
process is missing a task provider, which is a bug. For comparison, this
reports true when renderer processes are properly labeled by a primary task
provider. These values are only reported when the Task Manager is open. This
can be removed when no unlabeled cases remain, per https://crbug.com/739782.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.MaxOutermostMainFrames"
units="frames" expires_after="M132">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the maximum number of outermost main frames that were hosted in the
process. This is logged when the RenderProcessHost is destroyed.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.ProcessPerSiteMainFrameLimit"
units="frames" expires_after="M132">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of outermost main frames that were hosted in the process
when it was determined no more should be placed in the process for the
ProcessPerSite algorithm. This is recorded only when this limit is first
crossed for each RenderProcessHost.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.SpareProcessDelayTime" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time elapsed from the initiation of the spare process warm-up to
the actual creation of the process.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.SpareProcessEvictedOtherSpare"
enum="Boolean" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records true if WarmupSpareRenderProcessHost evicted an existing spare
process that had a different BrowserContext, or false if there wasn't an
existing spare process.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.SpareProcessMaybeTakeAction"
enum="SpareProcessMaybeTakeAction" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records what happens when an attempt is made to use a spare
RenderProcessHost - logs that either the attempt succeeded or why it failed.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.SpareProcessRefusedByEmbedderReason"
enum="SpareProcessRefusedByEmbedderReason" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the detailed reason if the spare process cannot be taken because of
RefusedByEmbedder.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.SpareProcessStartupTime" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the time elapsed from the creation of the spare process to the point
when the process becomes ready. This does not include the scheduled delay
time (see SpareProcessDelayTime).
</summary>
</histogram>
<histogram
name="BrowserRenderProcessHost.SuspendedChild.KernelExecutionRecorded"
enum="BooleanRecorded" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not kernel-mode execution was recorded for a suspended renderer
process. This is recorded after process creation but before process
resumption. This is recorded for every sandboxed Renderer process launched
on Windows only.
</summary>
</histogram>
<histogram name="BrowserRenderProcessHost.SuspendedChild.UserExecutionRecorded"
enum="BooleanRecorded" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not user-mode execution was recorded for a suspended renderer
process. This is recorded after process creation but before process
resumption. This is recorded for every sandboxed Renderer process launched
on Windows only.
</summary>
</histogram>
<histogram name="BrowserServices.TwaOpenTime.V2" units="ms"
expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Triggered when a TrustedWebActivity is paused, recording the time since it
had been resumed.
</summary>
</histogram>
<histogram name="BrowserServices.VerificationResult"
enum="BrowserServicesVerificationResult" expires_after="M114">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of Digital Asset Link verification performed when starting a
Trusted Web Activity.
</summary>
</histogram>
<histogram name="BrowserServices.VerificationTime.Offline" units="ms"
expires_after="2024-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Triggered when Trusted Web Activity verification completes. Records how long
it takes the device to realise it is offline and fall back to the cached
result.
</summary>
</histogram>
<histogram name="BrowserServices.VerificationTime.Online" units="ms"
expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Triggered when Trusted Web Activity verification completes. Records how long
verification took when online.
</summary>
</histogram>
<histogram name="BrowserSwitcher.AlternativeBrowser" enum="BrowserType"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records which browser the Legacy Browser Support feature is configured to
open (which defaults to IE). Recorded on browser startup, and when the value
changes. Only measured when Legacy Browser Support is enabled via the
BrowserSwitcher* policies. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.CacheFile.MkDirSuccess" enum="BooleanSuccess"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the "AppData/Local/Google/BrowserSwitcher"
directory was successfully created. Windows only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.CacheFile.MkTempSuccess" enum="BooleanSuccess"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a temp file in
"AppData/Local/Google/BrowserSwitcher" the directory was
successfully created. Windows only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.CacheFile.MoveSuccess" enum="BooleanSuccess"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the temp file in
"AppData/Local/Google/BrowserSwitcher" directory was successfully
moved to its final destination ("cache.dat") after writing its
contents. Windows only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.ChromeLaunch.IsFromBrowserSwitcher"
enum="Boolean" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not Chrome was launched by the Legacy Browser Support for Edge
extension's native host. This indicates an automatic Edge=>Chrome or
IE=>Chrome transition. Recorded whenever Chrome is launched by any means.
Only recorded on Windows.
</summary>
</histogram>
<histogram name="BrowserSwitcher.Decision" enum="BooleanBrowserSwitch"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
On navigation and redirect, whether to switch browsers or not. Only measured
when Legacy Browser Support is enabled via the BrowserSwitcher* policies.
When this is true, Chrome attempts to launch an alternative browser
(typically IE) with the navigation URL. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.DecisionTime" units="ms"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
On navigation and redirect, records how long it took to compute a decision
(stay in Chrome/open in IE). Only measured when Legacy Browser Support is
enabled via the BrowserSwitcher* policies. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.ExternalGreylistSize" units="rules"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of rules that come from an external greylist XML file. Measured when
the sitelist is loaded during browser startup. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.ExternalSitelistSize" units="rules"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of rules that come from an external sitelist XML file. Measured when
the sitelist is loaded during browser startup. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.GreylistSize" units="rules"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of rules in the BrowserSwitcherUrlGreylist policy. Measured when the
policy is loaded. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.GreylistWildcard" enum="BooleanPresent"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether there is a wildcard ("*") rule in the
BrowserSwitcherUrlGreylist policy. Measured when the
BrowserSwitcherUrlGreylist policy gets updated. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.IeemSitelistSize" units="rules"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of rules that come from Internet Explorer Enterprise Mode's sitelist.
Measured when the sitelist is loaded during browser startup. Windows only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.LaunchSuccess" enum="BooleanSuccess"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether an attempt to launch an alternate browser failed or
succeeded. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.LaunchTime" units="ms"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how long it took to launch an alternate browser (regardless of
whether it failed or succeeded). Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.UrlListSize" units="rules"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of rules in the BrowserSwitcherUrlList policy. Measured when the
policy gets updated. Desktop Chrome only.
</summary>
</histogram>
<histogram name="BrowserSwitcher.UrlListWildcard" enum="BooleanPresent"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether there is a wildcard ("*") rule in the
BrowserSwitcherUrlList policy. Measured when the BrowserSwitcherUrlList
policy gets updated. Desktop Chrome only.
</summary>
</histogram>
<histogram name="DigitalAssetLinks.NumFingerprints" units="NumFingerprints"
expires_after="M116">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of fingerprints in assetlinks.json for every performed
Digital Asset Link validation with a valid `sha256_cert_fingerprints`-entry.
</summary>
</histogram>
<histogram name="InfoBar.Shown" enum="InfoBarIdentifier" expires_after="never">
<!-- expires-never: Required as long as infobars exist. -->
<owner>[email protected]</owner>
<owner>src/components/infobars/OWNERS</owner>
<summary>
Records how many times a particular infobar was shown to the user. On
Android, the infobar may be partially hidden due to stacking. On desktop, a
tab with a visible infobar will increment this histogram every time the user
switches away from the tab and back to it with the infobar still visible.
</summary>
</histogram>
<histogram name="InfoBar.Shown.Hidden" enum="InfoBarIdentifier"
expires_after="never">
<!-- expires-never: Required as long as infobars exist. -->
<owner>[email protected]</owner>
<summary>
Records how many times a particular infobar was displayed in a hidden state
due to at least one other infobar existing. If there are no existing
infobars, but the user scrolls at the exact moment a new infobar is added,
the infobar may be hidden, but not recorded in this metric. Reliably
triggering and detecting this combination is tricky so it isn't done. Only
recorded on Android.
</summary>
</histogram>
<histogram name="InfoBar.Shown.Hiding" enum="InfoBarIdentifier"
expires_after="never">
<!-- expires-never: Required as long as infobars exist. -->
<owner>[email protected]</owner>
<summary>
Records how many times a particular infobar was visible and hiding a new
infobar behind it. Only recorded on Android.
</summary>
</histogram>
<histogram name="InfoBar.Shown.Visible" enum="InfoBarIdentifier"
expires_after="never">
<!-- expires-never: Required as long as infobars exist. -->
<owner>[email protected]</owner>
<summary>
Records how many times a particular infobar was displayed in a visible state
due to no other infobars existing. If there are no existing infobars, but
the user scrolls at the exact moment a new infobar is added, the infobar may
be hidden, but recorded here as visible. Reliably triggering and detecting
this combination is tricky so it isn't done. Only recorded on Android.
</summary>
</histogram>
<histogram name="SidePanel.ComboboxMenuShown" enum="Boolean"
expires_after="2024-09-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records true when the side panel combobox is opened.</summary>
</histogram>
<histogram name="SidePanel.OpenDuration" units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how long the side panel was open for (capped at 1 hour) starting
when the side panel is triggered to be opened. Note this might be different
than when the side panel becomes visible due to delays for loading content.
Recorded when the side panel is closed.
</summary>
</histogram>
<histogram name="SidePanel.OpenOrChangeEntryTrigger"
enum="SidePanelOpenTrigger" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the UI location from which the side panel is triggered to be opened or
to change the entry shown. Recorded when the side panel is shown or the
entry changed and a trigger is provided.
</summary>
</histogram>
<histogram name="SidePanel.OpenTrigger" enum="SidePanelOpenTrigger"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the UI location from which the side panel is triggered to be opened.
Recorded when the side panel is shown and a trigger is provided.
</summary>
</histogram>
<histogram name="SidePanel.ResizedWidth" units="px" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the width of the side panel contents after the side panel was
resized.
</summary>
</histogram>
<histogram name="SidePanel.ResizedWidthPercentage" units="% of window width"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the width of the side panel contents as a percentage of the browser
window width after the side panel was resized.
</summary>
</histogram>
<histogram name="SidePanel.TimeOfLongestAnimationStep" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records elapsed time between animation steps for the longest step in a side
panel open or close animation.
</summary>
</histogram>
<histogram name="SidePanel.{SidePanelEntry}.ResizedWidth" units="px"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the width of the side panel contents after the side panel was
resized, while the {SidePanelEntry} side panel entry was displayed.
</summary>
<token key="SidePanelEntry" variants="SidePanelEntry"/>
</histogram>
<histogram name="SidePanel.{SidePanelEntry}.ResizedWidthPercentage"
units="% of window width" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the width of the side panel contents as a percentage of the browser
window width after the side panel was resized, while the {SidePanelEntry}
side panel entry was displayed.
</summary>
<token key="SidePanelEntry" variants="SidePanelEntry"/>
</histogram>
<histogram name="SidePanel.{SidePanelEntry}.ShownDuration" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how long the {SidePanelEntry} side panel entry was open for (capped
at 1 hour). This is recorded in SidePanelEntry::OnEntryHidden when the entry
is hidden (ie. switching entries or the side panel closing).
</summary>
<token key="SidePanelEntry" variants="SidePanelEntry"/>
</histogram>
<histogram name="SidePanel.{SidePanelEntry}.ShowTriggered"
enum="SidePanelOpenTrigger" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how a side panel entry is triggered to be shown. (i.e. by toolbar
button, by commbobox selection). This is recorded when a new side panel
entry is triggered to be shown regardless any side panel entry is currently
open.
</summary>
<token key="SidePanelEntry" variants="SidePanelEntry"/>
</histogram>
<histogram name="SidePanel.{SidePanelEntry}.TimeFromEntryTriggerToShown"
units="ms" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records elapsed time between when the {SidePanelEntry} side panel entry
triggered to be shown and when it was shown.
</summary>
<token key="SidePanelEntry" variants="SidePanelEntry"/>
</histogram>
</histograms>
</histogram-configuration>