<!--
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
chromium-metrics-reviews@google.com.
-->

<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="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.BitmapFetcher.Decode" units="ms"
    expires_after="2022-09-18">
  <obsolete>
    3/2022; feature launched.
  </obsolete>
  <owner>manukh@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>The time elapsed decoding an image using BitmapFetcher.</summary>
</histogram>

<histogram name="Browser.BitmapFetcher.Fetch" units="ms"
    expires_after="2022-03-06">
  <obsolete>
    3/2022; feature launched.
  </obsolete>
  <owner>manukh@chromium.org</owner>
  <owner>jdonnelly@chromium.org</owner>
  <owner>chrome-omnibox-team@google.com</owner>
  <summary>
    The time elapsed fetching an image from a URL using BitmapFetcher.
  </summary>
</histogram>

<histogram name="Browser.ChromeOS.HatsSatisfaction{Survey}" units="score"
    expires_after="2023-01-01">
  <obsolete>
    M109; Replaced by &quot;ChromeOS.HaTS.*&quot;.
  </obsolete>
  <owner>aalsum@chromium.org</owner>
  <owner>jackshira@google.org</owner>
  <owner>cros-telemetry@google.com</owner>
  <summary>
    Records the overall satisfaction score for HaTS, to be analyzed against
    other OS metrics like performance or number of crashes. There is one score
    per survey type. Emitted when a user answers the first question on a HaTS
    survey.
  </summary>
  <token key="Survey">
    <variant name=".ArcGames"/>
    <variant name=".Audio"/>
    <variant name=".BorealisGames"/>
    <variant name=".CameraApp"/>
    <variant name=".Ent"/>
    <variant name=".General"/>
    <variant name=".GeneralCamera"/>
    <variant name=".MediaAppPdf"/>
    <variant name=".OnboardingExperience"/>
    <variant name=".Performance"/>
    <variant name=".PersonalizationAvatar"/>
    <variant name=".PersonalizationScreensaver"/>
    <variant name=".PersonalizationWallpaper"/>
    <variant name=".PhotosExperience"/>
    <variant name=".SmartLock"/>
    <variant name=".Stability"/>
    <variant name=".Unlock"/>
  </token>
</histogram>

<histogram name="Browser.ChromeOS.HatsStatus" enum="HatsStatus"
    expires_after="2024-03-17">
  <owner>aalsum@chromium.org</owner>
  <owner>cros-telemetry@google.com</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="2024-03-17">
  <owner>lgrey@chromium.org</owner>
  <owner>robliao@chromium.org</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="2023-11-08">
  <owner>vshenvi@google.com</owner>
  <owner>cros-reporting-team@google.com</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.ConfigFileParsingError"
    enum="EnterpriseCloudReportingStatusCode" expires_after="2024-06-01">
  <owner>albertojuarez@google.com</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.EventEnqueueResult"
    enum="EnterpriseCloudReportingStatusCode" expires_after="2024-03-24">
  <owner>lbaraz@chromium.org</owner>
  <owner>xuhong@chromium.org</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.EventUploadSizeAdjustment.{Param}" units="bytes"
    expires_after="2024-05-23">
  <owner>xuhong@chromium.org</owner>
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</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" units="BooleanFiltered"
    expires_after="2024-05-23">
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</owner>
  <summary>
    Records whether an event is filtered out by FilteredReportQueue.
  </summary>
</histogram>

<histogram name="Browser.ERP.PsrResult" enum="EnterpriseReportingPsrResult"
    expires_after="2024-07-31">
  <owner>xuhong@chromium.org</owner>
  <owner>cros-reporting-team@google.com</owner>
  <summary>
    Records the result of obtaining PSR info from healthd in the metrics
    pipeline.
  </summary>
</histogram>

<histogram name="Browser.ERP.RateLimitedEvents" units="BooleanAccepted"
    expires_after="2024-05-23">
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</owner>
  <summary>
    Records whether an event is accepted by ReportQueue rate limiter.
  </summary>
</histogram>

<histogram name="Browser.ERP.RecordsPerUploadFrom{ManagementStatus}Device"
    units="records" expires_after="2024-01-31">
  <owner>jrhilke@chromium.org</owner>
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</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="2023-11-17">
  <owner>xuhong@chromium.org</owner>
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</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.SingleRequestPayloadSize" units="bytes"
    expires_after="2024-02-10">
  <owner>xuhong@chromium.org</owner>
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</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.StorageQueueGenerationIdReset" enum="Boolean"
    expires_after="2024-01-31">
  <owner>vshenvi@google.com</owner>
  <owner>cros-reporting-team@google.com</owner>
  <summary>
    Would only be true. Recorded whenever the generation id is reset in the
    storage queue. The generation id is set up once during storage queue
    initialization using the metadata file that matches the last sequencing id
    used to track, deduplicate and confirm delivery by the server. The
    generation id is reset when this file is missing or corrupted and the
    sequencing is irreparably broken.
  </summary>
</histogram>

<histogram name="Browser.ERP.UnusualEnqueueTimestamp" enum="Boolean"
    expires_after="2024-01-30">
  <owner>xuhong@chromium.org</owner>
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</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.{ManagementStatus}UploadEncryptedReport"
    enum="EnterpriseDMServerRequestSuccess" expires_after="2024-03-01">
  <owner>jrhilke@google.com</owner>
  <owner>src/components/reporting/OWNERS</owner>
  <summary>
    Status of a completed ERP upload request from a {ManagementStatus}. 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="2023-11-17">
  <owner>xuhong@chromium.org</owner>
  <owner>lbaraz@chromium.org</owner>
  <owner>cros-reporting-team@google.com</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.Used" units="janks"
    expires_after="2024-03-31">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</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
    &quot;congested&quot;. An interval is congested if during it the UI or IO
    thread executes an &quot;important&quot; 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>etienneb@chromium.org</owner>
  <owner>gab@chromium.org</owner>
  <owner>chrome-analysis-team@google.com</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
    &quot;congested&quot;. An interval is congested if during it the UI or IO
    thread executes an &quot;important&quot; 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="2024-03-31">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</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
    &quot;congested&quot;. An interval is congested if during it the UI or IO
    thread executes an &quot;important&quot; 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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</owner>
  <summary>
    Records a boolean indicating whether a capture attempt was successful.
  </summary>
</histogram>

<histogram name="Browser.PaintPreview.Capture.TotalCaptureDuration" units="ms"
    expires_after="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</owner>
  <summary>
    Records if the paint preview compositor process started correctly.
  </summary>
</histogram>

<histogram name="Browser.PaintPreview.Player.CompositorProcessStartupTime"
    units="ms" expires_after="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2024-02-04">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2024-02-04">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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="2024-02-20">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</owner>
  <owner>chrome-fdt@google.com</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"/>
  </token>
</histogram>

<histogram name="Browser.PaintPreview.TabService.DiskUsageAtStartup" units="KB"
    expires_after="2023-11-27">
  <owner>ckitagawa@chromium.org</owner>
  <owner>fredmello@chromium.org</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="2024-03-17">
  <owner>gab@chromium.org</owner>
  <owner>olivierli@chromium.org</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="2024-03-17">
  <owner>gab@chromium.org</owner>
  <owner>olivierli@chromium.org</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.TabDragging.DragAmongTabsPresentationTime" units="ms"
    expires_after="2024-02-05">
  <owner>robliao@chromium.org</owner>
  <owner>yuhengh@chromium.org</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>robliao@chromium.org</owner>
  <owner>yuhengh@chromium.org</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>robliao@chromium.org</owner>
  <owner>yuhengh@chromium.org</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-02-05">
  <owner>robliao@chromium.org</owner>
  <owner>yuhengh@chromium.org</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.SelectionToVisibilityRequestTime"
    units="microseconds" expires_after="2024-03-03">
  <owner>jonross@chromium.org</owner>
  <owner>sky@chromium.org</owner>
  <summary>
    The time it takes for the browser to request a tab to be visible. Note that
    this only measures the time from the browser deciding to make the tab
    visible (after a click, or keyboard-shortcut to switch tabs), until the tab
    is requested to become visible. The time it takes to actually make the tab
    visible and show on screen is measured in a separate metric, in
    Browser.Tabs.TotalSwitchDuration3.

    This metric uses UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES so only users with
    high resolution clocks will report this metric.
  </summary>
</histogram>

<histogram name="Browser.Tabs.TabSwitchResult3{TabSwitchingType}"
    enum="TabSwitchResult2" expires_after="2024-01-26">
  <owner>fdoray@chromium.org</owner>
  <owner>joenotcharles@google.com</owner>
  <owner>catan-team@chromium.org</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="2024-01-26">
  <owner>fdoray@chromium.org</owner>
  <owner>jonross@chromium.org</owner>
  <owner>joenotcharles@google.com</owner>
  <owner>catan-team@chromium.org</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="2024-01-26">
  <owner>jonross@chromium.org</owner>
  <owner>joenotcharles@google.com</owner>
  <owner>catan-team@chromium.org</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="2024-03-17">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-privacy-core@google.com</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="2024-03-17">
  <owner>rhalavati@chromium.org</owner>
  <owner>chrome-privacy-core@google.com</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="2024-07-06">
  <owner>creis@chromium.org</owner>
  <owner>site-isolation-dev@chromium.org</owner>
  <summary>
    Recorded when RenderProcessHostImpl::FilterURL detects a disallowed URL sent
    by the renderer process and rewrites it to about:blank#blocked.
  </summary>
</histogram>

<histogram name="BrowserRenderProcessHost.ChildCodeIntegrityFailures"
    enum="RendererType" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->

  <owner>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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>oshima@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</owner>
  <summary>
    The launch error codes for failed renderer process launches.
  </summary>
</histogram>

<histogram name="BrowserRenderProcessHost.ChildLaunchFailures"
    enum="RendererType" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->

  <owner>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</owner>
  <summary>Count of renderer process launch failures grouped by type.</summary>
</histogram>

<histogram name="BrowserRenderProcessHost.Cleanup.DelayReason"
    enum="RenderProcessHostDelayShutdownReason" expires_after="2024-02-20">
  <owner>mych@chromium.org</owner>
  <owner>bfcache-dev@chromium.org</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-02-20">
  <owner>mych@chromium.org</owner>
  <owner>bfcache-dev@chromium.org</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>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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.FastShutdownIfPossible.DelayReason"
    enum="RenderProcessHostDelayShutdownReason" expires_after="2024-02-20">
  <owner>mych@chromium.org</owner>
  <owner>bfcache-dev@chromium.org</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-02-20">
  <owner>mych@chromium.org</owner>
  <owner>bfcache-dev@chromium.org</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-02-04">
  <owner>creis@chromium.org</owner>
  <owner>avi@chromium.org</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.RoutingIDSpaceUsed"
    units="% of routing ID space used for browser-allocated routing IDs"
    expires_after="2023-04-16">
  <obsolete>
    4/2023; the data has been collected, verifying that less than 1% of routing
    ID space is used in practice.
  </obsolete>
  <owner>alexmos@chromium.org</owner>
  <owner>dcheng@chromium.org</owner>
  <summary>
    Record the percentage of routing IDs ever used by a RenderProcessHost when
    the C++ object is destroyed. The denominator is the range of all potentially
    usable routing IDs—usually std::numeric_limits&lt;int32_t&gt;::max()—but may
    be smaller (e.g. half that range).

    This histogram does not record data if the routing ID overflows; that event
    is captured as a browser crash instead.
  </summary>
</histogram>

<histogram name="BrowserRenderProcessHost.SpareProcessMaybeTakeAction"
    enum="SpareProcessMaybeTakeAction" expires_after="2024-02-20">
  <owner>alexmos@chromium.org</owner>
  <owner>lukasza@chromium.org</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.SuspendedChild.KernelExecutionRecorded"
    enum="BooleanRecorded" expires_after="never">
<!-- expires-never: For monitoring stability regressions. -->

  <owner>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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>wfh@chromium.org</owner>
  <owner>chrome-stability-core@google.com</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-02-04">
  <owner>peconn@chromium.org</owner>
  <owner>peter@chromium.org</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>peconn@chromium.org</owner>
  <owner>peter@chromium.org</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-01-01">
  <owner>peconn@chromium.org</owner>
  <owner>peter@chromium.org</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="2024-03-03">
  <owner>peconn@chromium.org</owner>
  <owner>peter@chromium.org</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="2024-02-25">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2024-02-20">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Records whether the &quot;AppData/Local/Google/BrowserSwitcher&quot;
    directory was successfully created. Windows only.
  </summary>
</histogram>

<histogram name="BrowserSwitcher.CacheFile.MkTempSuccess" enum="BooleanSuccess"
    expires_after="2024-02-20">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Records whether a temp file in
    &quot;AppData/Local/Google/BrowserSwitcher&quot; the directory was
    successfully created. Windows only.
  </summary>
</histogram>

<histogram name="BrowserSwitcher.CacheFile.MoveSuccess" enum="BooleanSuccess"
    expires_after="2024-02-20">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Records whether the temp file in
    &quot;AppData/Local/Google/BrowserSwitcher&quot; directory was successfully
    moved to its final destination (&quot;cache.dat&quot;) after writing its
    contents. Windows only.
  </summary>
</histogram>

<histogram name="BrowserSwitcher.Decision" enum="BooleanBrowserSwitch"
    expires_after="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-08-20">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Whether there is a wildcard (&quot;*&quot;) 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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2024-02-11">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</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="2023-10-16">
  <owner>nicolaso@chromium.org</owner>
  <owner>pastarmovj@chromium.org</owner>
  <summary>
    Whether there is a wildcard (&quot;*&quot;) 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>swestphal@chromium.org</owner>
  <owner>rayankans@chromium.org</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>rkaplow@chromium.org</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>mdjones@chromium.org</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>mdjones@chromium.org</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>mdjones@chromium.org</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-03-17">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</owner>
  <summary>Records true when the side panel combobox is opened.</summary>
</histogram>

<histogram name="SidePanel.OpenDuration" units="ms" expires_after="2024-02-11">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-11">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-11">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-01">
  <owner>emshack@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-01">
  <owner>emshack@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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.{SidePanelEntry}.ResizedWidth" units="px"
    expires_after="2024-02-01">
  <owner>emshack@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-01">
  <owner>emshack@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-01">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-02-01">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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="2024-06-01">
  <owner>corising@chromium.org</owner>
  <owner>chrome-desktop-ui-sea@google.com</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>
