<!--
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 Ash 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="AcceleratorActionName">
  <variant name="BrightnessDown"/>
  <variant name="BrightnessUp"/>
  <variant name="CycleBackwardMru"/>
  <variant name="CycleForwardMru"/>
  <variant name="CycleSameAppWindowsBackward"/>
  <variant name="CycleSameAppWindowsForward"/>
  <variant name="DebugKeyboardBacklightToggle"/>
  <variant name="DebugMicrophoneMuteToggle"/>
  <variant name="DebugPrintLayerHierarchy"/>
  <variant name="DebugPrintViewHierarchy"/>
  <variant name="DebugPrintWindowHierarchy"/>
  <variant name="DebugShowToast"/>
  <variant name="DebugSystemUiStyleViewer"/>
  <variant name="DebugToggleDarkMode"/>
  <variant name="DebugToggleDynamicColor"/>
  <variant name="DebugToggleGlanceables"/>
  <variant name="DebugToggleHudDisplay"/>
  <variant name="DebugTogglePowerButtonMenu"/>
  <variant name="DebugToggleShowDebugBorders"/>
  <variant name="DebugToggleShowFpsCounter"/>
  <variant name="DebugToggleShowPaintRects"/>
  <variant name="DebugToggleTabletMode"/>
  <variant name="DebugToggleTouchPad"/>
  <variant name="DebugToggleTouchScreen"/>
  <variant name="DebugToggleVideoConferenceCameraTrayIcon"/>
  <variant name="DebugToggleWallpaperMode"/>
  <variant name="DebugTriggerCrash"/>
  <variant name="DesksActivate0"/>
  <variant name="DesksActivate1"/>
  <variant name="DesksActivate2"/>
  <variant name="DesksActivate3"/>
  <variant name="DesksActivate4"/>
  <variant name="DesksActivate5"/>
  <variant name="DesksActivate6"/>
  <variant name="DesksActivate7"/>
  <variant name="DesksActivateDeskLeft"/>
  <variant name="DesksActivateDeskRight"/>
  <variant name="DesksMoveActiveItemLeft"/>
  <variant name="DesksMoveActiveItemRight"/>
  <variant name="DesksNewDesk"/>
  <variant name="DesksRemoveCurrentDesk"/>
  <variant name="DesksToggleAssignToAllDesks"/>
  <variant name="DevAddRemoveDisplay"/>
  <variant name="DevToggleAppList"/>
  <variant name="DevToggleUnifiedDesktop"/>
  <variant name="DisableCapsLock"/>
  <variant name="Exit"/>
  <variant name="FocusCameraPreview"/>
  <variant name="FocusNextPane"/>
  <variant name="FocusPip"/>
  <variant name="FocusPreviousPane"/>
  <variant name="FocusShelf"/>
  <variant name="KeyboardBacklightToggle"/>
  <variant name="KeyboardBrightnessDown"/>
  <variant name="KeyboardBrightnessUp"/>
  <variant name="LaunchApp0"/>
  <variant name="LaunchApp1"/>
  <variant name="LaunchApp2"/>
  <variant name="LaunchApp3"/>
  <variant name="LaunchApp4"/>
  <variant name="LaunchApp5"/>
  <variant name="LaunchApp6"/>
  <variant name="LaunchApp7"/>
  <variant name="LaunchLastApp"/>
  <variant name="LockPressed"/>
  <variant name="LockReleased"/>
  <variant name="LockScreen"/>
  <variant name="MagnifierZoomIn"/>
  <variant name="MagnifierZoomOut"/>
  <variant name="MediaFastForward"/>
  <variant name="MediaNextTrack"/>
  <variant name="MediaPause"/>
  <variant name="MediaPlay"/>
  <variant name="MediaPlayPause"/>
  <variant name="MediaPrevTrack"/>
  <variant name="MediaRewind"/>
  <variant name="MediaStop"/>
  <variant name="MicrophoneMuteToggle"/>
  <variant name="MinimizeTopWindowOnBack"/>
  <variant name="MoveActiveWindowBetweenDisplays"/>
  <variant name="NewIncognitoWindow"/>
  <variant name="NewTab"/>
  <variant name="NewWindow"/>
  <variant name="OpenCalculator"/>
  <variant name="OpenCrosh"/>
  <variant name="OpenDiagnostics"/>
  <variant name="OpenFeedbackPage"/>
  <variant name="OpenFileManager"/>
  <variant name="OpenGetHelp"/>
  <variant name="PasteClipboardHistoryPlainText"/>
  <variant name="PowerPressed"/>
  <variant name="PowerReleased"/>
  <variant name="PrintUiHierarchies"/>
  <variant name="PrivacyScreenToggle"/>
  <variant name="RestoreTab"/>
  <variant name="RotateScreen"/>
  <variant name="RotateWindow"/>
  <variant name="ScaleUiDown"/>
  <variant name="ScaleUiReset"/>
  <variant name="ScaleUiUp"/>
  <variant name="ShowEmojiPicker"/>
  <variant name="ShowShortcutViewer"/>
  <variant name="ShowStylusTools"/>
  <variant name="ShowTaskManager"/>
  <variant name="StartAssistant"/>
  <variant name="StopScreenRecording"/>
  <variant name="Suspend"/>
  <variant name="SwapPrimaryDisplay"/>
  <variant name="SwitchIme"/>
  <variant name="SwitchToLastUsedIme"/>
  <variant name="SwitchToNextIme"/>
  <variant name="SwitchToNextUser"/>
  <variant name="SwitchToPreviousUser"/>
  <variant name="TakePartialScreenshot"/>
  <variant name="TakeScreenshot"/>
  <variant name="TakeWindowScreenshot"/>
  <variant name="ToggleAppList"/>
  <variant name="ToggleCalendar"/>
  <variant name="ToggleCapsLock"/>
  <variant name="ToggleClipboardHistory"/>
  <variant name="ToggleDictation"/>
  <variant name="ToggleDockedMagnifier"/>
  <variant name="ToggleFloating"/>
  <variant name="ToggleFullscreen"/>
  <variant name="ToggleFullscreenMagnifier"/>
  <variant name="ToggleGameDashboard"/>
  <variant name="ToggleHighContrast"/>
  <variant name="ToggleImeMenuBubble"/>
  <variant name="ToggleMaximized"/>
  <variant name="ToggleMessageCenterBubble"/>
  <variant name="ToggleMirrorMode"/>
  <variant name="ToggleMultitaskMenu"/>
  <variant name="ToggleOverview"/>
  <variant name="ToggleProjectorMarker"/>
  <variant name="ToggleResizeLockMenu"/>
  <variant name="ToggleSnapGroupWindowsGroupAndUngroup"/>
  <variant name="ToggleSnapGroupWindowsMinimizeAndRestore"/>
  <variant name="ToggleSpokenFeedback"/>
  <variant name="ToggleSystemTrayBubble"/>
  <variant name="ToggleWifi"/>
  <variant name="TouchFingerprintSensor1"/>
  <variant name="TouchFingerprintSensor2"/>
  <variant name="TouchFingerprintSensor3"/>
  <variant name="TouchHudClear"/>
  <variant name="TouchHudModeChange"/>
  <variant name="Unpin"/>
  <variant name="VolumeDown"/>
  <variant name="VolumeMute"/>
  <variant name="VolumeMuteToggle"/>
  <variant name="VolumeUp"/>
  <variant name="WindowCycleSnapLeft"/>
  <variant name="WindowCycleSnapRight"/>
  <variant name="WindowMinimize"/>
</variants>

<variants name="AmbientUiSettings">
  <variant name="FeelTheBreeze" summary="Feel the breeze"/>
  <variant name="FloatOnBy" summary="Float on by"/>
  <variant name="SlideShow" summary="Slide show"/>
  <variant name="Video.Clouds" summary="Clouds video"/>
  <variant name="Video.NewMexico" summary="New Mexico video"/>
</variants>

<variants name="DeviceActiveClientState">
  <variant name="CheckingIn"
      summary="The device active reporting client is in Checking In State"/>
  <variant name="CheckingMembershipOprf"
      summary="The device active reporting client is in Oprf State"/>
  <variant name="CheckingMembershipQuery"
      summary="The device active reporting client is in Query State"/>
  <variant name="HealthCheck"
      summary="The device active reporting client is in Health Check State"/>
  <variant name="Idle"
      summary="The device active reporting client is in Idle State"/>
  <variant name="Unknown"
      summary="The device active reporting client is in Unknown State"/>
</variants>

<variants name="DisplayModes">
<!-- Should be kept in sync with variants AppDisplayModes in
  tools/metrics/histograms/metadata/apps/histograms.xml.
-->

  <variant name="ClamshellMode" summary="Clamshell mode"/>
  <variant name="TabletMode" summary="Tablet mode"/>
</variants>

<variants name="GooglePhotosApi">
  <variant name="GetAlbum" summary="returns a single album"/>
  <variant name="GetAlbums" summary="returns all albums"/>
  <variant name="GetEnabled" summary="returns enablement state"/>
  <variant name="GetPhoto" summary="returns a single photo"/>
  <variant name="GetPhotos" summary="returns all photos"/>
  <variant name="GetSharedAlbums" summary="returns all shared albums"/>
</variants>

<variants name="HotseatTransitionType">
  <variant name=".TransitionToExtendedHotseat"
      summary="Transition to the extended hotseat"/>
  <variant name=".TransitionToHiddenHotseat"
      summary="Transition to the hidden hotseat"/>
  <variant name=".TransitionToShownHotseat"
      summary="Transition to the shown hotseat"/>
</variants>

<variants name="OverviewAnimationMode">
  <variant name=".ClamshellMode"
      summary="Normal clamshell mode with multiple windows animates"/>
  <variant name=".MinimizedTabletMode"
      summary="Animates in Tablet mode w/o split view and all windows are
               minimized"/>
  <variant name=".SingleClamshellMode"
      summary="In Clamshell mode with only top maximized/fullscren window
               animates"/>
  <variant name=".SplitView" summary="Animates in SplitView enabled"/>
  <variant name=".TabletMode" summary="Animates in Tablet mode w/o split view"/>
</variants>

<variants name="PsmRequest">
  <variant name="Import" summary="Import data request to Fresnel"/>
  <variant name="Oprf" summary="First phase of check membership requests"/>
  <variant name="Query" summary="Second phase of check membership requests"/>
</variants>

<variants name="PsmUseCase">
  <variant name="1DA" summary="1 day active"/>
  <variant name="28DA" summary="28 day active"/>
  <variant name="Cohort" summary="Churn cohort"/>
  <variant name="Observation" summary="Churn observation"/>
</variants>

<variants name="RecognizerLocation">
  <variant name="OnDevice" summary="Speech recognition happened on device"/>
  <variant name="ServerBased"
      summary="Speech recognition happened on remote servers"/>
</variants>

<variants name="ScreenCaptureClient">
  <variant name="GameDashboard"
      summary="Game dashboard initiated capture mode"/>
  <variant name="Projector" summary="Projector initiated capture mode"/>
</variants>

<variants name="SplitViewResizeModes">
  <variant name=".ClamshellMode.SingleWindow" summary=""/>
  <variant name=".ClamshellMode.WithOverview" summary=""/>
  <variant name=".TabletMode.MultiWindow" summary=""/>
  <variant name=".TabletMode.SingleWindow" summary=""/>
  <variant name=".TabletMode.WithOverview" summary=""/>
</variants>

<histogram name="Ash.Accelerators.Actions.{ActionName}" units="Shortcuts"
    expires_after="2024-04-28">
  <owner>dpad@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    Record which shortcuts are being used for an action. Fires when the use
    perform an action using a keyboard shortcut. A shortcut is encoded as an int
    where the high 16 bits represent all the modifiers used, and the 0-15 bits
    represent which key is used.
  </summary>
  <token key="ActionName" variants="AcceleratorActionName"/>
</histogram>

<histogram name="Ash.Accelerators.ActivateDeskByIndex"
    enum="ActivateDeskByIndex" expires_after="2024-02-20">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    Record which desk the user switches to. Fires when the user switches desk to
    a specific index using a keyboard shortcut.
  </summary>
</histogram>

<histogram name="Ash.Accelerators.Deprecated.ShowTaskManager"
    enum="DeprecatedAcceleratorUsage" expires_after="2022-01-23">
  <owner>zentaro@chromium.org</owner>
  <owner>cros-peripherals@chromium.org</owner>
  <summary>
    Opening the task manager has two accelerators: - Shift+Esc which is
    deprecated. - Search+Esc which is new. This histogram shows the number of
    times each accelerator (deprecated and new) is used.
  </summary>
</histogram>

<histogram name="Ash.Accelerators.Deprecated.ToggleHighContrast"
    enum="DeprecatedAcceleratorUsage" expires_after="M77">
  <owner>afakhry@chromium.org</owner>
  <summary>
    Toggling the high contrast display mode has two accelerators: -
    Search+Shift+H which is deprecated. - Ctrl+Search+H which is new. This
    histogram shows the number of times each accelerator (deprecated and new) is
    used.
  </summary>
</histogram>

<histogram name="Ash.Accelerators.Rotation.Usage"
    enum="ScreenRotationAcceleratorAction" expires_after="2023-10-08">
  <owner>zentaro@chromium.org</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    Captures the result of a user using the rotation accelerator -
    Ctrl+Shift+Refresh. This histogram shows how frequently users accidentally
    hit the key combination.
  </summary>
</histogram>

<histogram name="Ash.Accelerators.WindowSnap"
    enum="WindowSnapAcceleratorAction" expires_after="2024-03-24">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>Captures usage of Alt+[ and Alt+].</summary>
</histogram>

<histogram name="Ash.AmbientMode.Activation.{TabletOrClamshell}"
    enum="AmbientUiMode" expires_after="2024-02-20">
  <owner>cowmoo@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Recorded whenever Ambient mode is entered from {TabletOrClamshell}.
    AmbientUiMode indicates whether the user entered Ambient mode from the lock
    screen or from screen idle.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.AmbientMode.AnimationSmoothness.PhotoTransition" units="%"
    expires_after="2023-12-01">
  <owner>wutao@chromium.org</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Emitted when the ambient mode photo transition animation completes to report
    the smoothness of this animation. 100% represents ideally smooth 60 frames
    per second.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.Enabled" enum="BooleanEnabled"
    expires_after="2024-02-04">
  <owner>cowmoo@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users, whether the user has Ambient mode enabled. Recorded
    once for every UMA upload. The set of eligible users includes all users with
    profiles that can allow Ambient mode to be enabled. This is limited by
    profile type, whether the user is primary, if the user has a supported
    email, etc.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.EngagementTime.{Settings}" units="ms"
    expires_after="2024-02-20">
  <owner>cowmoo@google.com</owner>
  <owner>esum@google.com</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the length of each
    session for {Settings}. The metric is emitted when ambient mode is ended.
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.EngagementTime.{Settings}.{Orientation}"
    units="ms" expires_after="2023-12-01">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the accumulated
    duration spent in {Orientation} mode during a single ambient mode session
    rendering the {Settings} UI. For example, say ambient mode starts in
    landscape for A ms, switches to portrait for B ms, then back to landscape
    for C ms before ambient mode ends. A + C will be emitted for landscape mode,
    and B will be emitted for portrait mode. Emitted once per observed
    orientation each time the user exits ambient mode.
  </summary>
  <token key="Orientation">
    <variant name="Landscape" summary="landscape"/>
    <variant name="Portrait" summary="portrait"/>
  </token>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.EngagementTime.{TabletOrClamshell}" units="ms"
    expires_after="2024-02-20">
  <owner>cowmoo@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the length of each
    session. The metric is emitted when ambient mode is ended. 2 new animated
    ambient mode themes have been added started in M104.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.AmbientMode.Init.{Settings}" enum="Boolean"
    expires_after="2024-02-20">
  <owner>esum@google.com</owner>
  <owner>wutao@google.com</owner>
  <summary>
    Background initialization tasks must be completed successfully before the
    ambient UI can be launched. For example, slide show mode must download an
    initial set of photos from the server before the UI can be rendered. This
    records the initialization success/failure count per ambient setting; each
    ambient setting (slide show, video, etc) has a different initialization
    process. This is emitted each time ash tries to launch the ambient UI.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.LottieAnimationSmoothness.{Settings}"
    units="%" expires_after="2023-12-01">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Emitted periodically while {Settings} is rendering in ambient mode. 100%
    represents ideal smoothness.
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.MultiScreenOffset.{Settings}" units="ms"
    expires_after="2023-12-01">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Only applies to multi-screen use cases in ambient mode. Records the offset
    observed between {Settings} animations' timestamps when rendering on
    multiple screens. Ideally, this would be 0, but small imperceptible offsets
    are acceptable (under .1 seconds). The offset recorded here is the absolute
    difference in milliseconds between the animation with the smallest and
    largest timestamp. The metric is emitted after every single animation frame
    in ambient mode (there is a high volume). For single-screen use cases, this
    metric is inactive.
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.PhotoOrientationMatch.{Settings}" units="%"
    expires_after="2023-12-01">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Applies to ambient mode animations with image assets embedded in them (spots
    in the animation where the user's photos should be plugged in). Captures the
    percentage of time that the orientation (landscape vs portrait) of the image
    asset matches that of the actual photo being assigned to it. Ideally this is
    100%. Does not apply to the slideshow ambient theme. Emitted each time the
    photos in the animation are refreshed (after each animation cycle is
    complete).
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.PhotoSource" enum="AmbientModePhotoSource"
    expires_after="2024-02-04">
  <owner>cowmoo@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the source of
    ambient mode photos. Recorded once for every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.ScreenCount.{Settings}" units="int"
    expires_after="2024-02-20">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the number of
    screens present during a {Settings} ambient mode session. Emitted each time
    ambient mode exits.
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.SelectedNumberOfAlbums" units="int"
    expires_after="2024-02-04">
  <owner>cowmoo@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the selected number
    of personal photo albums. Recorded once only when users make a selection on
    the personal photo albums on Settings page.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.StartupTime.{Settings}" units="ms"
    expires_after="2024-02-20">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@google.com</owner>
  <summary>
    Records the amount of time it takes for {Settings} in ambient mode to start.
    This includes tasks such as downloading an initial set of photos from IMAX
    server, decoding them, loading the animation from resource pak, etc. Note
    this measurement does not include the lock screen inactivity timeout
    (currently 7 seconds). So ideally, this should be 0. Also note that ambient
    mode should start after a 10 second timeout if at least 1 photo has been
    downloaded from IMAX. Hitting the 10 second timeout is considered non-ideal,
    but acceptable behavior. However, anything over that is very bad. Thus, this
    histogram has a 15 second maximum (added a 5 second buffer to the timeout
    just to be safe). Anything over the 15 second maximum goes in the overflow
    bucket and is considered a total failure to start ambient mode. This should
    be extremely rare. Emitted each time the {Settings} UI starts rendering, or
    when ambient mode exits in the event that the UI never started rendering.
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.TotalNumberOfAlbums" units="int"
    expires_after="2023-12-01">
  <owner>cowmoo@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the total number of
    personal photo albums. Recorded once only when users make a selection on the
    personal photo albums on Settings page.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.VideoPlaybackStatus.{Settings}"
    enum="AmbientVideoSessionStatus" expires_after="2023-12-01">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Emitted at the end of each ambient mode session that renders {Settings}.
    Only applies to ambient video themes. Tracks whether video playback started
    successfully in each ambient video session. Ideally, there are nothing but
    success and loading statuses being recorded (the latter should be rare
    because it means the user killed the session right as the video was being
    loaded).
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.VideoSmoothness.{Settings}" units="%"
    expires_after="2024-02-20">
  <owner>esum@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Emitted at the end of each ambient mode session that renders {Settings}.
    Only applies to ambient video themes. Tracks the total number of frames
    created divided by the total number of frames expected during the entire
    ambient session. 100% represents ideal smoothness, and any deviation from
    that is due to dropped video frames. This metric requires a minimum of ~5
    seconds of playback (~100 expected videos frames) to be recorded; ambient
    video sessions shorter than that are not statistically significant enough to
    record and will not be tracked. As such, this metric is just a general gauge
    of the video's performance in the field. Separate fine-grained metrics
    tracking rebuffering frequency and duration may be added in the future.
  </summary>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.ArcAppInitialAppsInstallDuration" units="ms"
    expires_after="2024-02-04">
  <owner>alemate@chromium.org</owner>
  <owner>khmel@chromium.org</owner>
  <owner>arc-performance@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    For each user after they opted-in into ARC++, records the duration of
    initial apps installation. Duration is measured as an interval between the
    opt-in and the moment when all default apps become either &quot;ready&quot;
    or &quot;update error&quot;. This is only reported within the same opt-in
    session, and is not reported if default apps were not installed within the
    session.
  </summary>
</histogram>

<histogram
    name="Ash.Assistant.AnimationSmoothness{AshAssistantAnimationSmoothness}"
    units="%" expires_after="2021-11-21">
  <owner>cowmoo@chromium.org</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Relative smoothness of assistant related animations. 100% represents ideally
    smooth 60 frames per second. {AshAssistantAnimationSmoothness}
  </summary>
  <token key="AshAssistantAnimationSmoothness">
    <variant name=".CardElement"
        summary="Animation for showing and hiding card responses"/>
    <variant name=".ResizeAssistantPageView"
        summary="Expand assistant from launcher"/>
    <variant name=".SuggestionChip"
        summary="Animation for showing and hiding suggestion chips"/>
    <variant name=".TextElement"
        summary="Animation for showing and hiding text response"/>
  </token>
</histogram>

<histogram name="Ash.BackGesture.EndScenarioType"
    enum="BackGestureEndScenarioType" expires_after="2023-10-22">
  <owner>minch@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    End scenario type while swiping back from the left side of the window in
    tablet mode.
  </summary>
</histogram>

<histogram name="Ash.BackGesture.StartScenarioType"
    enum="BackGestureStartScenarioType" expires_after="2023-10-22">
  <owner>minch@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Start scenario type while swiping back from the left side of the window in
    tablet mode.
  </summary>
</histogram>

<histogram name="Ash.BackGesture.UnderneathWindowType"
    enum="BackGestureUnderneathWindowType" expires_after="2023-12-24">
  <owner>minch@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Underneath window type while swiping back from the left side of the window
    in tablet mode.
  </summary>
</histogram>

<histogram name="Ash.BatterySaver.BatteryPercent{BatteryPercentWhen}" units="%"
    expires_after="M123">
  <owner>cwd@google.com</owner>
  <owner>ckwyee@google.com</owner>
  <summary>The battery charge percent when {BatteryPercentWhen}</summary>
  <token key="BatteryPercentWhen">
    <variant name=".Disabled" summary="disabled."/>
    <variant name=".DisabledSettings"
        summary="disabled via the device settings page."/>
    <variant name=".Enabled" summary="enabled."/>
    <variant name=".EnabledSettings"
        summary="enabled via the device settings page."/>
  </token>
</histogram>

<histogram name="Ash.BatterySaver.Duration{DurationWhen}" units="ms"
    expires_after="M123">
  <owner>cwd@google.com</owner>
  <owner>ckwyee@google.com</owner>
  <summary>
    How long battery saver was enabled. Logged when {DurationWhen}
  </summary>
  <token key="DurationWhen">
    <variant name="" summary="disabled."/>
    <variant name=".DisabledCharging"
        summary="disabled by attaching a charger."/>
    <variant name=".DisabledNotification" summary="disabled via notification."/>
    <variant name=".DisabledSettings"
        summary="disabled via the device settings page."/>
    <variant name=".EnabledNotification"
        summary="disabled after being enabled via notification."/>
    <variant name=".EnabledSettings"
        summary="disabled after being enabled via the device settings page."/>
  </token>
</histogram>

<histogram name="Ash.BatterySaver.TimeToEmpty{TimeToEmptyWhen}" units="ms"
    expires_after="M123">
  <owner>cwd@google.com</owner>
  <owner>ckwyee@google.com</owner>
  <summary>
    The battery time to empty when battery saver is {TimeToEmptyWhen}. Only
    logged when an estimate is available.
  </summary>
  <token key="TimeToEmptyWhen">
    <variant name=".Disabled" summary="disabled"/>
    <variant name=".DisabledSettings"
        summary="disabled via the device settings page"/>
    <variant name=".Enabled" summary="enabled"/>
    <variant name=".EnabledSettings"
        summary="enabled via the device settings page"/>
  </token>
</histogram>

<histogram name="Ash.BrowserContext.UnexpectedGetPrimaryUserProfile"
    enum="Boolean" expires_after="M122">
  <owner>hidehiko@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Making sure nobody in the production calls the
    ProfileManager::GetPrimaryUserProfile() in unexpected timing. This entry
    will not have &quot;false&quot; status.
  </summary>
</histogram>

<histogram name="Ash.BrowserContext.UnexpectedGetUserByProfile" enum="Boolean"
    expires_after="M122">
  <owner>hidehiko@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Making sure nobody in the production calls ProfileHelper::GetUserByProfile()
    for the Profile instance, which does not have corresponding User. This entry
    will not have &quot;false&quot; status.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.ElapsedTimeBetweenDataMigrations"
    units="ms" expires_after="2024-03-24">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time elapsed from the completion of a successful forward migration to
    the start of a backward migration, with a maximum of 24 days. Recorded every
    time backward migration is started, if forward migration was performed prior
    to it.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.ElapsedTimeDeleteAshItems"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while DeleteAshItems() was run. Recorded once
    when browser data backward migration happens if the step succeeds.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.ElapsedTimeDeleteLacrosDir"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while DeleteLacrosDir() was run. Recorded once
    when browser data backward migration happens if the step succeeds.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.ElapsedTimeDeleteTmpDir"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while DeleteTmpDir() was run. Recorded once when
    browser data backward migration happens if the step succeeds.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.ElapsedTimeMergeSplitItems"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while MergeSplitItems() was run. Recorded once
    when browser data backward migration happens if the step succeeds.
  </summary>
</histogram>

<histogram
    name="Ash.BrowserDataBackMigrator.ElapsedTimeMoveLacrosItemsToAshDir"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while MoveLacrosItemsToAshDir() was run.
    Recorded once when browser data backward migration happens if the step
    succeeds.
  </summary>
</histogram>

<histogram
    name="Ash.BrowserDataBackMigrator.ElapsedTimeMoveMergedItemsBackToAsh"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while MoveMergedItemsBackToAsh() was run.
    Recorded once when browser data backward migration happens if the step
    succeeds.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.ElapsedTimePreMigrationCleanUp"
    units="ms" expires_after="2024-03-24">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The time in ms that elapsed while PreMigrationCleanUp() was run. Recorded
    once when browser data backward migration happens if the step succeeds.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.FinalStatus"
    enum="BrowserDataBackMigratorFinalStatus" expires_after="2024-03-24">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The final status of browser data backward migration. Recorded once at the
    end of the migration process. It is collected to monitor whether backward
    migration is working, and if it is not to determine which step is failing.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.NumberOfLacrosSecondaryProfiles"
    units="profiles" expires_after="2024-03-24">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    The number of Lacros secondary profiles at the time of starting the backward
    migration process. Recorded every time migration is started.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.PosixErrno.{TaskStatus}"
    enum="PopularOSErrno" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    Recorded when browser data backward migration fails. Records the errno set
    by the operation that caused the migration to fail. `TaskStatus` is used to
    determine the step in which the error occurred.
  </summary>
  <token key="TaskStatus">
    <variant name="DeleteAshItemsDeleteExtensionsFailed"/>
    <variant name="DeleteAshItemsDeleteLacrosItemFailed"/>
    <variant name="DeleteLacrosDirDeleteFailed"/>
    <variant name="DeleteTmpDirDeleteFailed"/>
    <variant name="MergeSplitItemsCopyExtensionsFailed"/>
    <variant name="MergeSplitItemsCopyExtensionStorageFailed"/>
    <variant name="MergeSplitItemsCreateDirFailed"/>
    <variant name="MergeSplitItemsCreateTmpDirFailed"/>
    <variant name="MergeSplitItemsMergeIndexedDBFailed"/>
    <variant name="MergeSplitItemsMergeLocalStorageLevelDBFailed"/>
    <variant name="MergeSplitItemsMergePrefsFailed"/>
    <variant name="MergeSplitItemsMergeStateStoreLevelDBFailed"/>
    <variant name="MergeSplitItemsMergeSyncDataFailed"/>
    <variant name="MoveLacrosItemsToAshDirFailed"/>
    <variant name="MoveMergedItemsBackToAshCopyDirectoryFailed"/>
    <variant name="MoveMergedItemsBackToAshMoveFileFailed"/>
    <variant name="PreMigrationCleanUpDeleteTmpDirFailed"/>
  </token>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.SuccessfulMigrationTime"
    units="ms" expires_after="2023-12-01">
  <owner>janagrill@google.com</owner>
  <owner>artyomchen@google.com</owner>
  <summary>
    How long the backward migration took to complete in ms. Only recorded if
    migration succeeds.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunAshDataSizeMB" units="MB"
    expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of profile data that is identified to belong to ash-chrome i.e. the
    total size of files that are under profile data directory of ash-chrome that
    should remain in the same directory.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunCommonDataSizeMB" units="MB"
    expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of profile data that is duplicated in both ash and lacros data
    directory.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunExtraDiskSpaceOccupiedByMove"
    units="MB" expires_after="2024-02-20">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of data that will be created due to profile migration. Note that
    this value is only an estimate.
  </summary>
</histogram>

<histogram
    name="Ash.BrowserDataMigrator.DryRunExtraDiskSpaceOccupiedByMove.LowDiskUser2"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of data that will be created due to profile migration.

    Only collected for users that cannot secure 100MB extra space buffer for
    profile migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunFreeDiskSpace.LowDiskUser2"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Free disk space available under profile directory.

    Only collected for users that cannot secure 100MB extra space buffer for
    profile migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunFreeDiskSpaceAfterDelete"
    units="MB" expires_after="2024-02-20">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Free disk space available under profile directory after deleting deletable
    items.
  </summary>
</histogram>

<histogram
    name="Ash.BrowserDataMigrator.DryRunFreeDiskSpaceAfterDelete.LowDiskUser2"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Free disk space available under profile directory after deleting deletable
    items.

    Only collected for users that cannot secure 100MB extra space buffer for
    profile migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunFreeDiskSpaceAfterMigration"
    units="MB" expires_after="2024-02-20">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of disk space after profile migration. If the value is negative
    that means the user currently are short of disk space by that amount.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunLacrosDataSizeMB" units="MB"
    expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of profile data that is identified to belong to lacros-chrome i.e.
    the total size of files that are under profile data directory of ash-chrome
    that should move to lacros data directory.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunMyFilesDirSize.LowDiskUser2"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The total size of data inside the 'MyFiles' directory.

    Only collected for users that cannot secure 100MB extra space buffer for
    profile migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunNoCopyDataSizeMB" units="MB"
    expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of profile data that is identified to be deletable such as cache.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.DryRunProfileDirSize.LowDiskUser2"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The total size of data inside the profile directory.

    Only collected for users that cannot secure 100MB extra space buffer for
    profile migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.CancelledMigrationTime"
    units="ms" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The time taken for profile migration before it is cancelled by the user
    during move migration. Profile move migration happens once after Lacros and
    move migration is enabled. This only gets recorded if the user clicks
    &quot;Skip&quot; from the migration UI displayed during the migration.
    Profile move migration is a feature to migrate profile data from Ash to
    Lacros once after Lacros is enabled.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.ExtraDiskSpaceOccupied"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of disk space occupied by files/dirs created during the migration.
  </summary>
</histogram>

<histogram
    name="Ash.BrowserDataMigrator.MoveMigrator.ExtraDiskSpaceOccupied.DiffWithEstimate"
    units="MB" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The difference between the estimate and the actual size of disk space
    occupied by files/dirs created during the migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.ExtraSpaceRequiredMB"
    units="MB" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    This is recorded if move profile migration is aborted due to the lack of
    extra space required on disk. The amount of space required to be freed is
    recorded.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.MaxResumeReached"
    enum="MoveMigratorResumeStep" expires_after="2024-01-28">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Recorded for users who've reached the maximum number of resumes
    `kMoveMigrationResumeCountLimit`. This entry will not have &quot;false&quot;
    status.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.MoveLacrosItemsTime"
    units="ms" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The time taken for move migration to run MoveLacrosItemsToNewDir(). Recorded
    once during the migration. Profile move migration is a feature to migrate
    profile data from Ash to Lacros once after Lacros is enabled.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.PosixErrno.{TaskStatus}"
    units="errno" expires_after="M121">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Recorded when profile move migration fails. Profile move migration happens
    once after Lacros and move migration is enabled. Records the errno set by
    the operation that caused the migration to fail. `TaskStatus` is used to
    determine which step the error occurred. Profile move migration is a feature
    to migrate profile data from Ash to Lacros once after Lacros is enabled.
  </summary>
  <token key="TaskStatus">
    <variant name="Cancelled"/>
    <variant name="MoveLacrosItemsCreateDirFailed"/>
    <variant name="MoveLacrosItemsToNewDirMoveFailed"/>
    <variant name="MoveLacrosItemsToNewDirNoWritePerm"/>
    <variant name="MoveSplitItemsToOriginalDirCreateDirFailed"/>
    <variant name="MoveSplitItemsToOriginalDirMoveExtensionsFailed"/>
    <variant name="MoveSplitItemsToOriginalDirMoveIndexedDBFailed"/>
    <variant name="MoveSplitItemsToOriginalDirMoveSplitItemsFailed"/>
    <variant name="MoveSplitItemsToOriginalDirMoveStorageFailed"/>
    <variant name="MoveTmpDirToLacrosDirMoveFailed"/>
    <variant name="PreMigrationCleanUpDeleteLacrosDirFailed"/>
    <variant name="PreMigrationCleanUpDeleteTmpDirFailed"/>
    <variant name="PreMigrationCleanUpDeleteTmpSplitDirFailed"/>
    <variant name="PreMigrationCleanUpNotEnoughSpace"/>
    <variant name="SetupAshDirCopyExtensionsFailed"/>
    <variant name="SetupAshDirCopyIndexedDBFailed"/>
    <variant name="SetupAshDirCopyStorageFailed"/>
    <variant name="SetupAshDirCreateDirFailed"/>
    <variant name="SetupAshDirCreateSplitDirFailed"/>
    <variant name="SetupAshDirMigrateLevelDBForLocalStateFailed"/>
    <variant name="SetupAshDirMigrateLevelDBForStateFailed"/>
    <variant name="SetupAshDirMigrateLevelDBForSyncDataFailed"/>
    <variant name="SetupAshDirMigratePreferencesFailed"/>
    <variant name="SetupLacrosDirCopyTargetItemsFailed"/>
    <variant name="SetupLacrosDirCreateTmpDirFailed"/>
    <variant name="SetupLacrosDirCreateTmpProfileDirFailed"/>
    <variant name="SetupLacrosDirWriteFirstRunSentinelFileFailed"/>
    <variant name="Succeeded"/>
  </token>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.PreMigrationCleanUpTime"
    units="ms" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The time taken for move migration to run PreMigrationCleanUp() and recorded
    once when profile move migration happens. Profile move migration migrates
    profile data from Ash to Lacros after Lacros is enabled.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.ResumeCount"
    units="units" expires_after="2024-01-28">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The number of times move migration was resumed. Resume means that the
    previous migrations were interrupted mid way and had to be resumed from
    where it was left off.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.ResumeStep"
    enum="MoveMigratorResumeStep" expires_after="2024-01-28">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The step from which move migration is resumed from. Recorded once at the
    beginning of profile move migration. Profile move migration gets resumed
    from where it left off if the previous attempt were did not finish
    completely. Profile move migration migrates profile data from Ash to Lacros
    after Lacros is enabled.
  </summary>
</histogram>

<histogram
    name="Ash.BrowserDataMigrator.MoveMigrator.SetupLacrosDirCopyTargetItemsTime"
    units="ms" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The time taken for move migration to copy target items inside
    SetupLacrosDir(). Recorded once during profile move migration. Profile move
    migration is a feature to migrate profile data from Ash to Lacros once after
    Lacros is enabled.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.SuccessfulMigrationTime"
    units="ms" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The time taken for profile move migration to complete in ms. Recorded once
    at the end of the migration if it is successful. Profile move migration is a
    feature to migrate profile data from Ash to Lacros once after Lacros is
    enabled.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.TaskStatus"
    enum="MoveMigratorTaskStatus" expires_after="2024-01-28">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The final status of profile move migration. Recorded once at the end of the
    migration process. Profile move migration is a feature to migrate profile
    data from Ash to Lacros once after Lacros is enabled.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.TmpProfileDirSize"
    units="MB" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of temporary profile directory created during the migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.TmpSplitDirSize"
    units="MB" expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    The size of temporary split directory created during the migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserSupport.UnexpectedBrowserSupportInitialize"
    enum="Boolean" expires_after="M122">
  <owner>andreaorru@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Making sure nobody in the production calls
    ash::standalone_browser::BrowserSupport::Initialize() in unexpected timing.
    This entry will not have &quot;false&quot; status.
  </summary>
</histogram>

<histogram name="Ash.Calendar.CalendarKeyboardNavigationSource"
    enum="CalendarKeyboardNavigationSource" expires_after="2024-09-04">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records which keys are used when the user navigates the Monthly Calendar
    View accessible from Quick Settings and system tray with the keyboard.
    Triggered when user shifts focus from a Calendar element to another by
    pressing tab, or when navigating Calendar Date Cells with the arrow keys.
  </summary>
</histogram>

<histogram name="Ash.Calendar.EventListView.EventDisplayedCount" units="int"
    expires_after="2024-09-04">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the number of currently visible events shown to the user when the
    Calendar Event List view displays in one day. i.e. the user opens the sys
    tray calendar, clicks on a date cell and sees 2 events, this metric will
    track a count of 2.
  </summary>
</histogram>

<histogram name="Ash.Calendar.EventListView.JoinMeetingButton.Pressed"
    enum="CalendarEventSource" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the &quot;Join&quot; meeting button is pressed from the
    Calendar &quot;EventListView&quot; i.e. the user opens the sys tray
    calendar, taps todays date cell, then scrolls to the event and taps the
    &quot;Join&quot; meeting button.
  </summary>
</histogram>

<histogram name="Ash.Calendar.EventsDisplayedToUser" enum="Boolean"
    expires_after="2024-09-04">
  <owner>samcackett@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded whenever a user sees any calendar event in the CalendarView.
    Recorded once per lifetime of the calendar view.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.FetchDuration" units="ms"
    expires_after="2024-09-04">
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when a calendar fetch returns. The duration of the fetch request.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.MaxDistanceBrowsed" units="months"
    expires_after="2023-04-10">
  <obsolete>
    This metric was originally recording something slightly different from what
    the name suggests. Replaced with Ash.Calendar.MaxDistanceBrowsed.
  </obsolete>
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar is closed. The furthest 'distance' (in months)
    from today's date to which a users fetch request succeeded.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.NoCalendarClient" units="instances"
    expires_after="2022-11-10">
  <obsolete>
    Deprecated Mar 2022, now that it's no longer needed.
  </obsolete>
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded whenever calendar events are requested, and we can't do the fetch
    because a a resource we need doesn't exist or is not available.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.PreFetched" units="fetches"
    expires_after="2024-09-04">
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded whenever calendar events are requested, and no fetch is required
    because the fetch has already returned.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.Result"
    enum="CalendarEventFetchApiError" expires_after="2024-09-04">
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded whenever calendar events are fetched. The recorded enum value
    indicates the return code of the fetch request.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.SingleMonthSize" units="bytes"
    expires_after="2024-09-04">
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when a calendar fetch returns. The total size of the month's
    events.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.Timeout" enum="Boolean"
    expires_after="2024-09-04">
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded whenever calendar events are requested, and the request went too
    long without a response.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.TotalCacheSizeMonths" units="months"
    expires_after="2024-09-04">
  <owner>rtinkoff@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar is closed. The total number of months cached for
    calendar events while it was open.
  </summary>
</histogram>

<histogram name="Ash.Calendar.MaxDistanceBrowsed" units="months"
    expires_after="2024-09-04">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the maximum absolute distance from today that a user has browsed in
    the calendar. Recorded when the calendar is closed.
  </summary>
</histogram>

<histogram name="Ash.Calendar.MonthDwellTime" units="ms"
    expires_after="2024-09-04">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the time a user spends in a calendar month. Records the time when
    the user either scrolls to another month or closes the CalendarView.
  </summary>
</histogram>

<histogram name="Ash.Calendar.ScrollSource" enum="CalendarViewScrollSource"
    expires_after="2024-09-04">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The source of scrolling in calendar view. Recorded when the calendar is
    scrolled and changed to another month (note that scrolls resulting in no
    month change are not recorded).
  </summary>
</histogram>

<histogram name="Ash.Calendar.ShowSource.{ViewShowSource}"
    enum="CalendarEventSource" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar view is shown from the {ViewShowSource}.
  </summary>
  <token key="ViewShowSource">
    <variant name="Accelerator" summary="accelerator"/>
    <variant name="DateView" summary="date view in quick settings"/>
    <variant name="TimeView" summary="time view in the status area"/>
  </token>
</histogram>

<histogram name="Ash.Calendar.TimeToSeeTodaysEventDots" units="ms"
    expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Measures the time from open of CalendarView, to CalendarDateCellView
    representing today receives events. Recorded once per lifetime of
    CalendarViewController (once per show), when todays CalendarDateCellView
    receives event data.
  </summary>
</histogram>

<histogram name="Ash.Calendar.UpNextView.EventDisplayedCount" units="int"
    expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the number of currently visible upcoming events shown to the user
    when the Calendar &quot;Up next&quot; view displays. i.e. the user opens the
    sys tray calendar, &quot;Up next&quot; displays 2 upcoming events, this
    metric will track a count of 2.
  </summary>
</histogram>

<histogram name="Ash.Calendar.UpNextView.EventListItem.Pressed"
    enum="CalendarEventSource" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when an upcoming event is pressed from the Calendar &quot;Up
    next&quot; view and launched in Google Calendar. i.e. the user opens the sys
    tray calendar, &quot;Up next&quot; displays an event in the next 10 mins and
    the user taps the event.
  </summary>
</histogram>

<histogram name="Ash.Calendar.UpNextView.JoinMeetingButton.Pressed"
    enum="CalendarEventSource" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the &quot;Join&quot; meeting button is pressed from the
    Calendar &quot;Up next&quot; view i.e. the user opens the sys tray calendar,
    &quot;Up next&quot; displays an event in the next 10 mins and the user taps
    &quot;Join&quot; meeting button on the event.
  </summary>
</histogram>

<histogram name="Ash.Calendar.UserJourneyTime.{EventLaunchState}" units="ms"
    expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar view is destroyed, records the lifetime of the
    CalendarView object, which corresponds with the user journey time of the
    calendar.
  </summary>
  <token key="EventLaunchState">
    <variant name="EventLaunched" summary="event launched"/>
    <variant name="EventNotLaunched" summary="event not launched"/>
  </token>
</histogram>

<histogram name="Ash.Calendar.{CalendarChildView}.Activated"
    enum="CalendarEventSource" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>Recorded when the {CalendarChildView} is activated.</summary>
  <token key="CalendarChildView">
    <variant name="DateCell" summary="date cell"/>
    <variant name="EventListItem" summary="event list item"/>
    <variant name="MonthDownArrowButton" summary="month down arrow"/>
    <variant name="MonthUpArrowButton" summary="month up arrow"/>
  </token>
</histogram>

<histogram
    name="Ash.CalendarView.CloseEventList.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>Recorded when the close event list animation is finished.</summary>
  <token key="CalendarChildView">
    <variant name="CalendarSlidingSurface"
        summary="calendar sliding surface container for event list and up
                 next"/>
    <variant name="EventListItem" summary="event list item"/>
    <variant name="UpNextView"
        summary="if up next view is showing, track animating from the event
                 list view closing to the up next view showing"/>
  </token>
</histogram>

<histogram name="Ash.CalendarView.ConstructionTime" units="ms"
    expires_after="2024-09-04">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The time to build the CalendarView, recorded when CalendarView is
    constructed, which happens every time the calendar is shown from the status
    area.
  </summary>
</histogram>

<histogram name="Ash.CalendarView.OnMonthChanged.AnimationSmoothness" units="%"
    expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>Recorded when the on month changed animation is finished.</summary>
</histogram>

<histogram
    name="Ash.CalendarView.OpenEventList.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the open event list animation is finished on the
    {CalendarChildView}. The metric is expired from 2023-02-18 to 2023-03-15, so
    it's possible some data is dropped during that time.
  </summary>
  <token key="CalendarChildView">
    <variant name="CalendarSlidingSurface"
        summary="calendar sliding surface container for event list and up
                 next"/>
    <variant name="EventListView" summary="event list view"/>
    <variant name="LabelView" summary="label view"/>
    <variant name="MonthView" summary="month view"/>
    <variant name="UpNextView"
        summary="if up next view is showing, track animating from it to the
                 event list view opening"/>
  </token>
</histogram>

<histogram
    name="Ash.CalendarView.ScrollOneMonth.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the scroll one month animation is finished on the
    {CalendarChildView}.
  </summary>
  <token key="CalendarChildView">
    <variant name="HeaderView" summary="header view"/>
    <variant name="LabelView" summary="label view"/>
    <variant name="MonthView" summary="month view"/>
  </token>
</histogram>

<histogram name="Ash.CalendarView.ShowUpNextView.AnimationSmoothness" units="%"
    expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>samcackett@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness recorded when the up next view is shown. 60 fps is 100%
    smoothness and so ideally we should see smoothness &gt; 80%.
  </summary>
</histogram>

<histogram
    name="Ash.CalendarView.SmoothScrollToTodaysDateCell.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>samcackett@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness recorded on the {CalendarChildView} when the Calendar
    scroll view is auto-scrolled (note this is actually done via layer
    transforms to give the appearance of smooth scrolling) to reveal todays date
    cell, when covered by the up next view.
  </summary>
  <token key="CalendarChildView">
    <variant name="LabelView" summary="label view"/>
    <variant name="MonthView" summary="month view"/>
  </token>
</histogram>

<histogram
    name="Ash.CalendarView.{Animation}.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-09-04">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the {Animation} animation is finished on the
    {CalendarChildView}.
  </summary>
  <token key="Animation">
    <variant name="FadeInCurrentMonth" summary="event list item"/>
    <variant name="ResetToToday" summary="reset to today"/>
  </token>
  <token key="CalendarChildView">
    <variant name="ContentView" summary="content view"/>
    <variant name="HeaderView" summary="header view"/>
  </token>
</histogram>

<histogram
    name="Ash.CaptureModeController.AudioRecordingMode.{TabletOrClamshell}"
    enum="AudioRecordingMode" expires_after="2024-06-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded at the end of a capture mode session in {TabletOrClamshell} to
    report the user's audio recording mode setting, only if video recording was
    selected, and the recording type supports audio recording.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.BarButtons.{TabletOrClamshell}"
    enum="CaptureModeBarButtonType" expires_after="2024-08-15">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever a button from the bar widget displayed in Capture mode is
    pressed in {TabletOrClamshell}. The recorded enum value indicates the type
    of the button pressed.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.CameraDisconnectionsDuringRecordings.{TabletOrClamshell}"
    units="camera disconnections" expires_after="2024-08-15">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the number of camera disconnections in {TabletOrClamshell} during
    recording.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.CameraReconnectDuration.{TabletOrClamshell}"
    units="seconds" expires_after="2024-08-15">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records how many seconds it takes a camera that got disconnected to get
    reconnected again within the grace period in {TabletOrClamshell}.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.CaptureAudioOnMetric.{TabletOrClamshell}"
    enum="BooleanEnabled" expires_after="2024-08-01">
  <obsolete>
    This metric was used when we were limited to recording the microphone only.
    It has been replaced by Ash.CaptureModeController.AudioRecordingMode in
    M-116.
  </obsolete>
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever a user is in a capture mode screen recording entered from
    {TabletOrClamshell}. Emits true when audio is enabled, false otherwise.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.CaptureConfiguration.{TabletOrClamshell}"
    enum="CaptureModeConfiguration" expires_after="2024-08-15">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever a user performs a screen capture in {TabletOrClamshell}.
    The recorded enum indicates the configuration used for the capture. I.e. the
    capture source and the capture type.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.CaptureRegionAdjusted.{TabletOrClamshell}"
    units="adjustments" expires_after="2024-08-15">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever a user is in a region capture session in
    {TabletOrClamshell} and performs a capture or they switch the capture
    source. The recorded count indicates the number of times the user adjusts
    the region. This counts each time they move the region or resize it. It is
    reset whenever a user creates a new region or the count is recorded.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.ConsecutiveScreenshots"
    units="consecutive screenshots" expires_after="2024-02-11">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the number of consecutive screenshots the user takes within 5s of
    each other, regardless of capture options.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.DemoToolsEnabledOnRecordingStart.{TabletOrClamshell}"
    enum="BooleanEnabled" expires_after="2024-03-17">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records whether a capture mode video recording starts with demo tools
    feature enabled or not in {TabletOrClamshell}.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.EndRecordingReason.{TabletOrClamshell}"
    enum="EndRecordingReason" expires_after="2024-08-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever capture mode screen recording is ended in
    {TabletOrClamshell}. The recorded enum value indicates the reason that lead
    to ending the screen recording.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.EntryPoint.{TabletOrClamshell}"
    enum="CaptureModeEntryType" expires_after="2024-08-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever Capture mode is entered from {TabletOrClamshell}. The
    recorded enum value indicates the method used to enter Capture mode.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.GameDashboard.SaveLocation.{TabletOrClamshell}"
    enum="CaptureModeSaveToLocation" expires_after="2024-05-27">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever the screen capture is saved in {TabletOrClamshell} when
    captured by the Game Dashboard intiated capture session. The recorded enum
    value indicates the location that the screen capture is saved.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.GameDashboard.ScreenRecordingFileSize.{TabletOrClamshell}"
    units="KB" expires_after="2024-05-27">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the size of the successfully recorded WebM file by the Game Dahboard
    initiated capture mode in {TabletOrClamshell}. This metric will not be
    recorded if a file was not successfully saved.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.GIFRecordingFileSize.{TabletOrClamshell}"
    units="KB" expires_after="2024-03-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the size of the successfully recorded GIF file by capture mode in
    {TabletOrClamshell}. This metric will not be recorded if a file was not
    successfully saved.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.GIFRecordingLength.{TabletOrClamshell}"
    units="seconds" expires_after="2024-03-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the time of a successful GIF recording in capture mode in
    {TabletOrClamshell}. This metric will not be recorded if a file was not
    successfully saved. The upper limit of this histogram is 3 hours.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.GIFRecordingRegionToScreenRatio.{TabletOrClamshell}"
    units="% of fullscreen area" expires_after="2024-03-20">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the percent ratio between the area of the user selected region for
    GIF recording to the area of the full screen in {TabletOrClamshell}. Emitted
    only when GIF recording is about to start.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.NumberOfConnectedCameras"
    units="connected cameras" expires_after="2024-02-04">
  <owner>conniekxu@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the number of connected cameras to the device whenever it changes.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.Projector.CaptureRegionAdjusted.{TabletOrClamshell}"
    units="adjustments" expires_after="2024-04-17">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever a user is in a region capture session in
    {TabletOrClamshell} entered from the projector app and performs a capture or
    they switch the capture source. The recorded count indicates the number of
    times the user adjusts the region. This counts each time they move the
    region or resize it. It is reset whenever a user creates a new region or the
    count is recorded.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.QuickAction"
    enum="CaptureQuickAction" expires_after="2024-03-17">
  <owner>shidi@chromium.org</owner>
  <summary>
    Track all quick actions on screenshot notification. Including: Edit in
    backlight, Go to Files, Delete File.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.RecordingCameraPositionOnStart.{TabletOrClamshell}"
    enum="CameraPreviewSnapPosition" expires_after="2024-08-01">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the camera preview position when the recording is started in
    {TabletOrClamshell}.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.RecordingCameraSizeOnStart.{TabletOrClamshell}"
    enum="CaptureModeCameraSize" expires_after="2024-08-01">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the camera size when the recording is started in
    {TabletOrClamshell}.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.RecordingStartsWithCamera.{TabletOrClamshell}"
    enum="BooleanEnabled" expires_after="2024-08-01">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records whether a capture mode video recording starts with camera or not in
    {TabletOrClamshell}.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.SaveLocation.{TabletOrClamshell}"
    enum="CaptureModeSaveToLocation" expires_after="2024-08-01">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever screen capture is saved in {TabletOrClamshell}. The
    recorded enum value indicates the location that the screen capture is saved.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.ScreenRecordingFileSize.{TabletOrClamshell}"
    units="KB" expires_after="2024-03-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the size of the successfully recorded WebM file by capture mode in
    {TabletOrClamshell}. This metric will not be recorded if a file was not
    successfully saved, or if it was recorded for Projector.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.ScreenRecordingLength"
    units="seconds" expires_after="2022-09-09">
  <obsolete>
    Replaced with
    Ash.CaptureModeController.ScreenRecordingLength.{TabletOrClamshell} in M99.
  </obsolete>
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the time of a successful video recording in capture mode. This
    metric will not be recorded if a file was not successfully saved. The upper
    limit of this histogram is 3 hours.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.ScreenRecordingLength.{TabletOrClamshell}"
    units="seconds" expires_after="2024-08-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the time of a successful video recording in capture mode in
    {TabletOrClamshell}. This metric will not be recorded if a file was not
    successfully saved. The upper limit of this histogram is 3 hours.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.CaptureModeController.ScreenshotsPerDay" units="int"
    expires_after="2024-02-11">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the number of screenshots that have been taken via the
    CaptureModeController every 24 hours. Note that counts are not persisted
    across crashes, restarts, or sessions so this is only intended to give a
    rough approximation.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.ScreenshotsPerWeek" units="int"
    expires_after="2024-03-10">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the number of screenshots that have been taken via the
    CaptureModeController every 7 days. Note that counts are not persisted
    across crashes, restarts, or sessions so this is only intended to give a
    rough approximation. This means that this metric will only be recorded in
    sessions spanning at least 7 days.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.SwitchesFromInitialCaptureMode"
    enum="Boolean" expires_after="2024-02-12">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Emits true if a user has switched capture modes (fullscreen, region, window)
    while in a capture mode session, false otherwise.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SwitchToDefaultReason.{TabletOrClamshell}"
    enum="CaptureModeSwitchToDefaultReason" expires_after="2024-08-01">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever the capture folder is switched to default downloads folder
    in {TabletOrClamshell}. The recorded enum value indicates the reason that
    leads to the switching.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.AudioRecordingMode.{TabletOrClamshell}"
    enum="AudioRecordingMode" expires_after="2024-06-01">
  <owner>afakhry@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded at the end of a {Client}-initiated capture mode session in
    {TabletOrClamshell} to report the user's audio recording mode setting, only
    if video recording was selected, and the recording type supports audio
    recording.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
  <token key="Client" variants="ScreenCaptureClient"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.CaptureConfiguration.{TabletOrClamshell}"
    enum="CaptureModeConfiguration" expires_after="2024-05-27">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Recorded whenever a {Client}-initiated a screen capture is performed in
    {TabletOrClamshell}. The recorded enum indicates the configuration used for
    the Game Dashboard initiated capture, i.e. the capture source and the
    capture type.
  </summary>
  <token key="Client" variants="ScreenCaptureClient"/>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.DemoToolsEnabledOnRecordingStart.{TabletOrClamshell}"
    enum="BooleanEnabled" expires_after="2024-05-27">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records whether a {Client}-initiated recording starts with demo tools
    feature enabled or not in {TabletOrClamshell}.
  </summary>
  <token key="Client" variants="ScreenCaptureClient"/>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.RecordingStartsWithCamera.{TabletOrClamshell}"
    enum="BooleanEnabled" expires_after="2024-05-27">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records whether a {Client}-initiated recording starts with camera on or not
    in {TabletOrClamshell}.
  </summary>
  <token key="Client" variants="ScreenCaptureClient"/>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.ScreenRecordingLength.{TabletOrClamshell}"
    units="seconds" expires_after="2024-05-27">
  <owner>michelefan@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Records the time of a successful video recording in capture mode entered
    from the client session in {TabletOrClamshell}. This metric will not be
    recorded if a file was not successfully saved. The upper limit of this
    histogram is 3 hours.
  </summary>
  <token key="Client" variants="ScreenCaptureClient"/>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.DarkTheme.Settings.IsDarkModeEnabled" enum="Boolean"
    expires_after="2023-03-01">
  <obsolete>
    Deprecated May 2022, now that it's no longer needed.
  </obsolete>
  <owner>minch@chromium.org</owner>
  <owner>changmar@chromium.org</owner>
  <summary>
    Emitted true when the user switched to dark mode through (Dark theme) page
    inside settings. Emitted false if the user switched to light mode in this
    case. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DarkTheme.Settings.IsThemed" enum="Boolean"
    expires_after="2023-03-01">
  <obsolete>
    Deprecated May 2022, now that it's no longer needed.
  </obsolete>
  <owner>minch@chromium.org</owner>
  <owner>changmar@chromium.org</owner>
  <summary>
    Emitted true if the user checked (Based on your wallpaper) radio button
    inside (Dark theme) page of the settings. Emitted false if the user checked
    (Neutral) radio button inside the page. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DarkTheme.SystemTray.IsDarkModeEnabled" enum="Boolean"
    expires_after="2024-03-17">
  <owner>minch@chromium.org</owner>
  <owner>changmar@chromium.org</owner>
  <summary>
    Emitted true when the user switched to dark mode through toggling the (Dark
    theme) feature pod button inside system tray menu. Emitted false if the user
    switched to light mode through toggling this button. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeskApi.{Method}.Result" units="BooleanSuccess"
    expires_after="2024-04-07">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Recorded when a desk API {Method} method succeeded or failed.
  </summary>
  <token key="Method">
    <variant name="AllDesk" summary="set to all desks"/>
    <variant name="LaunchDesk" summary="launch desk"/>
    <variant name="RemoveDesk" summary="remove desk"/>
    <variant name="SwitchDesk" summary="switch desk"/>
  </token>
</histogram>

<histogram name="Ash.Desks.AnimationLatency.DeskActivation" units="ms"
    expires_after="2024-03-17">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Emitted when the virtual desks activation animation begins, to report the
    latency of starting this animation. In a continuous desk animation, this
    metric is recorded only for the first desk switch.
  </summary>
</histogram>

<histogram name="Ash.Desks.AnimationLatency.DeskRemoval" units="ms"
    expires_after="2024-03-10">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Emitted when the virtual desks removal animation begins, to report the
    latency of starting this animation. In a continuous desk animation, this
    metric is recorded only for the first desk switch.
  </summary>
</histogram>

<histogram name="Ash.Desks.AnimationSmoothness.DeskActivation" units="%"
    expires_after="2024-03-03">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when the virtual desks activation animation completes to report the
    smoothness of this animation when running on the display on which the active
    window resides (if any) or the display of the primary root window. 100%
    represents ideally smooth 60 frames per second.
  </summary>
</histogram>

<histogram name="Ash.Desks.AnimationSmoothness.DeskEndGesture" units="%"
    expires_after="2024-07-30">
  <owner>afakhry@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    When a four finger touchpad swipe has ended, an animation to the nearest
    desk will occur. This histogram is emitted when that animation finishes.
    100% represents ideally smooth 60 frames per second.
  </summary>
</histogram>

<histogram name="Ash.Desks.AnimationSmoothness.DeskRemoval" units="%"
    expires_after="2024-03-10">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when the virtual desks removal animation completes to report the
    smoothness of this animation when running on the display on which the active
    window resides (if any) or the display of the primary root window. 100%
    represents ideally smooth 60 frames per second.
  </summary>
</histogram>

<histogram name="Ash.Desks.AssignToAllDesksSource"
    enum="DesksAssignToAllDesksSource" expires_after="2024-08-21">
  <owner>zxdan@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a window is assigned to all desks. E.g. `Move to Desks menu`
    which can be accessed from a window's context menu or keyboard shortcuts.
    This is not emitted when a window is unassigned from all desks. As of M99,
    this should be used as the source of truth for the usage of the assign to
    all desks feature.
  </summary>
</histogram>

<histogram name="Ash.Desks.BentoBarEnabled" enum="Boolean"
    expires_after="2023-10-01">
  <obsolete>
    Deprecated April 2023, the Bento Bar feature has been deleted.
  </obsolete>
  <owner>minch@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emits true if a user clicked `Show deskbar` inside the context menu of bento
    bar or desks bar in overview mode, false if `Hide deskbar` inside the same
    context menu being clicked.
  </summary>
</histogram>

<histogram name="Ash.Desks.BentoBarIsVisible" enum="Boolean"
    expires_after="2023-09-24">
  <obsolete>
    Deprecated April 2023, the Bento Bar feature has been deleted.
  </obsolete>
  <owner>minch@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emits true when the bento bar is created for the user. Will not emit false
    if the bento bar has never been created for the user. This will be used to
    count the number of users who saw the bento bar.
  </summary>
</histogram>

<histogram name="Ash.Desks.CloseAllTotal" enum="BooleanHit"
    expires_after="2024-03-17">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted after a virtual desk being removed with close all option and undo
    toast being shown. This metric describes the total number of times the user
    chooses to close a desk with its windows, regardless of whether that action
    is undone.
  </summary>
</histogram>

<histogram name="Ash.Desks.CloseAllUndo" enum="BooleanHit"
    expires_after="2024-03-17">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted after a virtual desk being removed with close all option and undo
    toast being clicked.
  </summary>
</histogram>

<histogram name="Ash.Desks.CloseAllUndoAndExpired" enum="BooleanHit"
    expires_after="2023-05-09">
  <obsolete>
    Made obsolete 2022-07-13 because the name and summary did not effectively
    describe what it was recording. Replaced by Ash.Desks.CloseAllTotal.
  </obsolete>
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted after a virtual desk being removed with close all option and undo
    toast being showed. This metrics is a sum of user undo remove and ignore
    undo.
  </summary>
</histogram>

<histogram name="Ash.Desks.CloseAllZombieWindowsFound" units="windows"
    expires_after="2024-02-21">
  <owner>benbecker@google.com</owner>
  <owner>chromeos-wms@google.com</owner>
  <summary>
    Emitted one minute after the DesksController synchronously closes all
    windows with widgets remaining in a desk. Reports the number of windows with
    null widgets that are still open after that time.
  </summary>
</histogram>

<histogram name="Ash.Desks.ConsecutiveDailyVisits" units="days"
    expires_after="2024-09-03">
  <owner>afakhry@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a desk is destroyed or a user activates a desk they haven't
    visited the prior day. In the former case, reports the number of consecutive
    days a user visited the newly-closed desk. In the latter case, reports the
    number of consecutive days a user visited the desk during the previous
    visit. This metric is persisted across multiple sessions and restarts. I.e.
    if a user logs out and logs back in their desk's consecutive daily visits
    will be restored. This metric uses the user's local timezone so if they move
    back in time via timezone change, this metric will be reset.
  </summary>
</histogram>

<histogram name="Ash.Desks.CustomNameCount" units="desks"
    expires_after="2023-11-01">
  <owner>benbecker@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a user with more than one desk changes the name of a desk to
    specify how many of the user's desks have custom names.
  </summary>
</histogram>

<histogram name="Ash.Desks.CustomNameCreated" enum="BooleanHit"
    expires_after="2023-11-08">
  <owner>benbecker@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a user with more than one desk confirms the name of a desk to
    specify how often users create custom names.
  </summary>
</histogram>

<histogram name="Ash.Desks.CustomNamePercentage" units="%"
    expires_after="2023-12-31">
  <owner>benbecker@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a user with more than one desk changes the name of a desk to
    specify the percentage of the user's desks that have custom names.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskButton.DeskBar.Enter.PresentationTime"
    units="ms" expires_after="2024-08-21">
  <owner>yongshun@google.com</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>chromeos-wms@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the desk button desk bar enter event was received and successfully
    processed to when the next frame is shown to the user.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskButton.DeskBar.Exit.PresentationTime" units="ms"
    expires_after="2024-08-21">
  <owner>yongshun@google.com</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>chromeos-wms@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the desk button desk bar exit event was received and successfully
    processed to when the next frame is shown to the user.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskButton.HiddenByUser" units="BooleanHit"
    expires_after="2024-07-07">
  <owner>yongshun@google.com</owner>
  <owner>benbecker@google.com</owner>
  <owner>nupurjain@google.com</owner>
  <summary>
    Emitted when a user decides to hide the desk button to specify how often
    users are deliberately choosing to hide the button.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskButton.Presses" units="BooleanHit"
    expires_after="2024-06-30">
  <owner>yongshun@google.com</owner>
  <owner>benbecker@google.com</owner>
  <owner>nupurjain@google.com</owner>
  <summary>
    Emitted when a user presses on the central button on the desk button to
    specify how often users are using the center button to open or close the
    desk bar.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskLifetime_{DeskIndex}" units="hr"
    expires_after="2024-03-17">
  <owner>afakhry@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The lifetime of the desk at index {DeskIndex} (1-indexed). Emitted when a
    desk is removed. This metric is persisted across multiple sessions and
    restarts. I.e. if a user logs out and logs back in their desk's lifetime
    will be restored.
  </summary>
  <token key="DeskIndex">
    <variant name="1" summary="1"/>
    <variant name="2" summary="2"/>
    <variant name="3" summary="3"/>
    <variant name="4" summary="4"/>
    <variant name="5" summary="5"/>
    <variant name="6" summary="6"/>
    <variant name="7" summary="7"/>
    <variant name="8" summary="8"/>
  </token>
</histogram>

<histogram name="Ash.Desks.DesksCount3" units="units"
    expires_after="2024-02-25">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when there's a change in the virtual desks count whether due to desk
    creation or removal in Bento. Specifies the number of available desks. It is
    not emitted for the first-ever created default desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.DesksSwitch" enum="DesksSwitchSource"
    expires_after="2024-03-17">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when the active desk is changed to specify the source of this
    action, i.e. whether due to new-desk shortcut, desk removed, window
    activated, switch-desk shortcut, or a press on the desk mini_view.
  </summary>
</histogram>

<histogram name="Ash.Desks.MoveWindowFromActiveDesk"
    enum="DesksMoveWindowFromActiveDeskSource" expires_after="2024-02-25">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when a window is moved from the current active desk to another desk.
    Specifies the source of this action, i.e. whether to window drag-and-drop,
    or keyboard shortcut. As of M90, the &quot;Assign to desk menu&quot; bucket
    is emitted when a user assigns a window to all desks through its context
    menu. Prior to this, the &quot;Assign to desk menu&quot; bucket was emitted
    when a user switched desks and their All Desks windows were moved from the
    old active desk to the new active desk. As of M99, the &quot;Assign to desk
    menu&quot; no longer tracks the assign to all desks source. The replacement
    is &quot;Ash.Desks.AssignToAllDesksSource&quot;.
  </summary>
</histogram>

<histogram name="Ash.Desks.NewDesk2" enum="DesksCreationRemovalSource"
    expires_after="2023-12-24">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is created to specify the source of this action,
    i.e. whether from the new-desk button, keyboard shortcut, or due to desks
    restore. It is not emitted for the first-ever created default desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfDeskTraversals" units="units"
    expires_after="2023-11-12">
  <owner>afakhry@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Tracks the number of times a desk (virtual workspace) has visibly changed in
    a time span of five seconds. This counts the number of total traversals; for
    example if the user has moved from desk 1 to 2 to 1 to 2 to 3, the number
    recorded is 4. This only gets recorded if a traversal starts. A traversal
    means that the desk has changed onscreen.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsClosed" units="units"
    expires_after="2023-05-09">
  <obsolete>
    This metric was originally recording for metrics for both combineDesk and
    closeAll. Replaced with Ash.Desks.NumberOfWindowsClosed2.
  </obsolete>
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is removed and all windows on the desk being
    closed to record the total number of windows being closed by this operation.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsClosed.{RemovalSource}"
    units="windows" expires_after="2023-10-03">
  <obsolete>
    This metric was originally recording for metrics for both combineDesk and
    closeAll. Replaced with Ash.Desks.NumberOfWindowsClosed2.{RemovalSource}.
  </obsolete>
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is removed and all windows on the desk being
    closed by {RemovalSource} to record the total number of windows being closed
    by this operation.
  </summary>
  <token key="RemovalSource">
    <variant name="Api" summary="api"/>
    <variant name="Button" summary="button"/>
    <variant name="Keyboard" summary="keyboard"/>
    <variant name="SaveRecall" summary="save and recall"/>
  </token>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsClosed2" units="units"
    expires_after="2024-05-07">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is removed and all windows on the desk being
    closed to record the total number of windows being closed by this operation.
    Emitted only for close-all.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsClosed2.{RemovalSource}"
    units="windows" expires_after="2024-05-07">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is removed and all windows on the desk being
    closed by {RemovalSource} to record the total number of windows being closed
    by this operation. Emitted only for close-all.
  </summary>
  <token key="RemovalSource">
    <variant name="Api" summary="api"/>
    <variant name="Button" summary="close-all button"/>
    <variant name="Keyboard" summary="keyboard"/>
  </token>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_1" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the first desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_10" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the tenth desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_11" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the eleventh desk. Emitted when a desk is removed,
    or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_12" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the twelfth desk. Emitted when a desk is removed,
    or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_13" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the thirteenth desk. Emitted when a desk is
    removed, or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_14" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the fourteenth desk. Emitted when a desk is
    removed, or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_15" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the fifteenth desk. Emitted when a desk is removed,
    or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_16" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the sixteenth desk. Emitted when a desk is removed,
    or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_2" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the second desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_3" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the third desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_4" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the fourth desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_5" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the fifth desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_6" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the sixth desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_7" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the seventh desk. Emitted when a desk is removed,
    or a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_8" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the eighth desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.NumberOfWindowsOnDesk_9" units="units"
    expires_after="2024-02-27">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of windows on the ninth desk. Emitted when a desk is removed, or
    a window is moved to another desk.
  </summary>
</histogram>

<histogram name="Ash.Desks.PresentationTime.UpdateGesture" units="ms"
    expires_after="2024-03-10">
  <owner>afakhry@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Presentation time in ms when a four finger swipe is being used to change
    desks. One full swipe results in multiple emissions of this metric; once
    everytime the fingers change location on the trackpad. Presentation time is
    the time it takes from when the software recognizes the touchpad swipe to
    when the next frame is displayed on the screen.
  </summary>
</histogram>

<histogram name="Ash.Desks.PresentationTime.UpdateGesture.MaxLatency"
    units="ms" expires_after="2024-01-10">
  <owner>afakhry@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    The largest presentation time value in ms for a single four finger swipe to
    change desks. One full swipe results in one emission of this metric; its the
    largest value of Ash.Desks.PresentationTime.UpdateGesture which is emitted
    multiple times during a single full swipe. Presentation time is the time it
    takes from when the software recognizes the touchpad swipe to when the next
    frame is displayed on the frame.
  </summary>
</histogram>

<histogram name="Ash.Desks.RemoveDesk" enum="DesksCreationRemovalSource"
    expires_after="2024-03-17">
  <owner>afakhry@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is removed to specify the source of this remove
    operation, i.e. whether from the close-desk button, or keyboard shortcut.
  </summary>
</histogram>

<histogram name="Ash.Desks.RemoveDeskType" enum="DeskCloseType"
    expires_after="2024-03-17">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a virtual desk is removed to specify the category of this
    remove operation among close all, combine desk, and close all and wait.
  </summary>
</histogram>

<histogram name="Ash.Desks.UserHasUsedDesksRecently" enum="Boolean"
    expires_after="2023-10-01">
  <obsolete>
    Deprecated April 2023, the Bento Bar feature has been deleted.
  </obsolete>
  <owner>minch@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted true when first session started and detected user pref
    `kUserHasUsedDesksRecently` has been set to true for the user. Will not emit
    false otherwise. This will be used to count the number of users that
    `kUserHasUsedDesksRecently` has been set to true.
  </summary>
</histogram>

<histogram name="Ash.Desks.WeeklyActiveDesks" units="active desks"
    expires_after="2024-02-25">
  <owner>afakhry@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of unique weekly active desks a user has interacted with in a
    week. A desk is considered interacted with if a window is moved to it, it is
    created, its name is changed, or it is activated and stayed on for at least
    3s. This metric is persisted across multiple sessions and restarts. I.e. if
    a user logs out and logs back in. This metric is reported a week after it
    begins counting. If a session is restored and more than a week has elapsed
    since counting has begun, the restored data will be emitted as an entry and
    this metric will be reset.
  </summary>
</histogram>

<histogram name="Ash.Desks.{EntryPoint}.BarAction.{BarAction}"
    units="BooleanHit" expires_after="2024-07-05">
  <owner>benbecker@google.com</owner>
  <owner>yongshun@google.com</owner>
  <owner>nupurjain@google.com</owner>
  <summary>
    Emitted when a user {BarAction} using the {EntryPoint} desk bar to specify
    how often users are using the {EntryPoint} desk bar to perform these
    actions.
  </summary>
  <token key="EntryPoint">
    <variant name="DeskButton" summary="desk button"/>
    <variant name="Overview" summary="overview"/>
  </token>
  <token key="BarAction">
    <variant name="ActivateDesk"
        summary="activates a desk (via the desk preview button)"/>
    <variant name="CloseDesk" summary="closes a desk with its windows"/>
    <variant name="CombineDesks" summary="combines a desk with another desk"/>
    <variant name="NewDesk" summary="creates a new desk"/>
    <variant name="OpenLibrary" summary="opens the saved desks library"/>
    <variant name="RenameDesk" summary="renames a desk"/>
    <variant name="ReorderDesk" summary="reorders a desk"/>
  </token>
</histogram>

<histogram name="Ash.DeskTamplate.LaunchAdminTemplate" enum="BooleanHit"
    expires_after="2024-05-08">
  <owner>hongyulong@google.com</owner>
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>Emitted when an admin template is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.AddOrUpdateTemplateStatus"
    enum="DeskModelAddOrUpdateEntryStatus" expires_after="2023-12-17">
  <owner>yzd@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a desk template is added or updated to indicate result of this
    operation. i.e. whether this operation is successful or failed with any
    particular reason.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.AdminTemplateTabCount" units="count"
    expires_after="2024-05-08">
  <owner>hongyulong@chromium.org</owner>
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of tabs in an admin template when it is launched.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.AdminTemplateWindowCount" units="count"
    expires_after="2024-05-08">
  <owner>hongyulong@chromium.org</owner>
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of windows in an admin template when it is launched.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.DeleteSaveAndRecall" units="BooleanHit"
    expires_after="2023-12-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Recorded when a Save and Recall saved desk is manually deleted.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.DeleteTemplate" enum="BooleanHit"
    expires_after="2023-12-10">
  <owner>avynn@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>Recorded when desk templates are deleted, is never false.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceTabCount" units="tabs"
    expires_after="2024-02-02">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Records the number of tabs in a Floating Workspace desk when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceWindowAndTabCount"
    units="windows and tabs" expires_after="2024-02-02">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Records the number of windows and tabs in a Floating Workspace desk when it
    is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceWindowCount" units="windows"
    expires_after="2024-02-02">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Records the number of windows in a Floating Workspace desk when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.LaunchFloatingWorkspace" enum="BooleanHit"
    expires_after="2024-02-02">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>Emitted when a Floating Workspace desk is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.LaunchFromTemplate" enum="BooleanHit"
    expires_after="2023-12-10">
  <owner>richui@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when a template is launched and a desk is created, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.LaunchSaveAndRecall" enum="BooleanHit"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>Emitted when a Save and Recall desk is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.LoadTemplateGrid" enum="BooleanHit"
    expires_after="2023-12-04">
  <owner>avynn@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Recorded when a user opens the template grid, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.NewSaveAndRecall" units="BooleanHit"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>Recorded when a new Save and Recall desk is created.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.NewTemplate" enum="BooleanHit"
    expires_after="2023-12-10">
  <owner>avynn@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Recorded when a user creates a desk template, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.ReplaceSaveAndRecall" enum="BooleanHit"
    expires_after="2023-12-10">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>Recorded when the user replaces a Save and Recall desk.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.ReplaceTemplate" enum="BooleanHit"
    expires_after="2023-10-03">
  <owner>aprilzhou@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Recorded when replace dialog opens and user accepted it, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallLocalDeskSavedDeskParseError"
    enum="SavedDeskParseError" expires_after="2024-08-01">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <owner>yzd@google.com</owner>
  <summary>Recorded when a Save and Recall desk cannot be parsed.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallTabCount" units="count"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of tabs in a Save and Recall desk when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallTemplateSize" units="B"
    expires_after="2023-11-08">
  <owner>zhumatthew@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the save and recall template file size that is saved to local
    storage.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallUnsupportedAppDialogShow"
    units="count" expires_after="2024-02-11">
  <owner>dandersson@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of times the unsupported Apps dialog shows. This event is
    triggered when a user attempts to save a Save and Recall desk that contains
    an unsupported app type. Currently the saved desk feature only supports
    PWAs, Extensions, and browser instances.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallWindowAndTabCount" units="count"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of windows and tabs in a Save and Recall desk when it is
    saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallWindowCount" units="count"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of windows in a Save and Recall desk when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.TabCount" units="count"
    expires_after="2024-03-10">
  <owner>richui@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>Records the number of tabs in a template when it is saved.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.TemplateSize" units="B"
    expires_after="2024-03-10">
  <owner>zhumatthew@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the file size of the desk template that is saved to local storage.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.TimeBetweenSaveAndRecall" units="seconds"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    The number of seconds between the creation of a new Save and Recall desk and
    its launch (and automatic deletion).
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.TimeToLoadTemplate" units="ms"
    expires_after="2024-03-17">
  <owner>avynn@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Measures the amount of time it takes to launch a template from the time that
    the launch is invoked to the time that the last window is opened.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.UnsupportedAppDialogShow" units="count"
    expires_after="2023-10-03">
  <owner>avynn@google.com</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of times the unsupported Apps dialog shows. This event is
    triggered when a user attempts to save a template that contains an
    unsupported app type. Currently the desks templates feature only supports
    PWAs, Extensions, and browser instances.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.UserSaveAndRecallCount" units="count"
    expires_after="2024-02-04">
  <owner>dandersson@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of Save and Recall desks a user has saved when a desk is
    saved or deleted.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.UserTemplateCount" units="count"
    expires_after="2023-12-10">
  <owner>richui@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of templates a user has saved when a template is saved or
    deleted.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.WindowAndTabCount" units="count"
    expires_after="2023-12-10">
  <owner>richui@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of windows and tabs in a template when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.WindowCount" units="count"
    expires_after="2024-03-10">
  <owner>richui@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Records the number of windows in a template when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.CheckMembershipCases"
    enum="DeviceActiveCheckMembershipResponseCases" expires_after="2024-03-17">
  <owner>qianwan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the number of different failed/success cases for check membership
    process. Refer to ash::device_activity::DeviceActivityClient for details.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.Duration.{DeviceActiveClientState}"
    units="ms" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the total duration to transition between DeviceActivityClient states.
    States are defined in //chromeos/ash/components/device_activity_client.h.
    ChromeOS only. {DeviceActiveClientState}
  </summary>
  <token key="DeviceActiveClientState" variants="DeviceActiveClientState"/>
</histogram>

<histogram name="Ash.DeviceActiveClient.IsPsmOprfResponseBodySet"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM OPRF response contains a value. This network
    request is called after browser start if the last ping timestamp of the
    Chromebook is not known. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.IsPsmOprfResponseParsedCorrectly"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM OPRF response is able to be parsed correctly. This
    network request is called after browser start if the last ping timestamp of
    the Chromebook is not known. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.IsPsmQueryResponseBodySet"
    enum="BooleanSuccess" expires_after="2024-01-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM Query response contains a value. This network
    request is called after browser start if the last ping timestamp of the
    Chromebook is not known. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.IsPsmQueryResponseParsedCorrectly"
    enum="BooleanSuccess" expires_after="2024-03-24">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM Query response is able to be parsed correctly.
    This network request is called after browser start if the last ping
    timestamp of the Chromebook is not known. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.PreservedFileState"
    enum="DeviceActiveClientPreservedFileState" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the states after reading preserved file over DBus for last active utc
    dates. PreservedFileState is defined in
    //chromeos/ash/components/device_activity_client.h. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.PsmOprfResponseNetErrorCode"
    enum="NetErrorCodes" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Emit the NetError code associated with the PSM OPRF response. This network
    request is called after browser start if the last ping timestamp of the
    Chromebook is not known. ChromeOS only. Enum for histogram will contain 0 -
    899. Ranges are defined //net/base/net_error_list.h;l=14-23.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.PsmQueryResponseNetErrorCode"
    enum="NetErrorCodes" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Emit the NetError code associated with the PSM Query response. This network
    request is called after browser start if the last ping timestamp of the
    Chromebook is not known. ChromeOS only. Enum for histogram will contain 0 -
    899. Ranges are defined //net/base/net_error_list.h;l=14-23.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.QueryMembershipResult"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Whether the private set membership query response is true or false.
  </summary>
</histogram>

<histogram
    name="Ash.DeviceActiveClient.Recorded{DeviceActivityClientTransitionMethod}Minute"
    units="int" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Emitted in the minute during the hour that DeviceActivityClient
    {DeviceActivityClientTransitionMethod} is called. ChromeOS only.
  </summary>
  <token key="DeviceActivityClientTransitionMethod">
    <variant name="TransitionOutOfIdle" summary="transition-out-of-idle"/>
    <variant name="TransitionToCheckIn" summary="transition-to-check-in"/>
  </token>
</histogram>

<histogram name="Ash.DeviceActiveClient.Response.{DeviceActiveClientState}"
    enum="DeviceActiveClientPsmResponse" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the PsmResponse whenever a response is received from the server.
    PsmResponse is defined in
    //chromeos/ash/components/device_activity_client.h. ChromeOS only.
    {DeviceActiveClientState}
  </summary>
  <token key="DeviceActiveClientState" variants="DeviceActiveClientState"/>
</histogram>

<histogram name="Ash.DeviceActiveClient.SavePreservedFileSuccess"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success boolean after attempting to write last active utc dates for
    all use case to the preserved file, over DBus.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveClient.StateCount"
    enum="DeviceActiveClientState" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Recorded every time the DeviceActivityClient enters a new state in its FSM.
    States are defined in //chromeos/ash/components/device_activity_client.h.
    ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveController.IsTestImageDevice"
    enum="BooleanSuccess" expires_after="2024-03-24">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success boolean to indicate whether a branded ChromeOS device is a
    testimage/unknown channel type or a legitimate device. Frequency of
    recording the histogram is on every device browser startup.
  </summary>
</histogram>

<histogram name="Ash.DeviceActiveController.PsmDeviceActiveSecretIsSet"
    enum="BooleanSuccess" expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>Whether the PSM derived active secret is set (non empty).</summary>
</histogram>

<histogram name="Ash.DeviceActivity.MethodCalled" enum="DeviceActivityMethod"
    expires_after="2024-03-17">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the number of times various methods are called in
    //chromeos/ash/components/device_activity/. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Display.InternalDisplay.ActiveEffectiveResolution"
    enum="EffectiveResolution" expires_after="2024-03-17">
  <owner>malaykeshav@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    The effective resolution of the internal display after device scale factor
    and display zoom level has been applied. This is the exact value matching
    the display's effective resolution. This is emitted at regular intervals.
  </summary>
</histogram>

<histogram name="Ash.Dock.Action" enum="DockedAction" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    User-initiated action taken that affects docked windows such as docking,
    undocking, minimizing, restoring, closing or just dragging a docked window.
  </summary>
</histogram>

<histogram name="Ash.Dock.ActionSource" enum="DockedActionSource"
    expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Source (mouse, touch, keyboard or unknown) of the user-initiated action for
    docked windows.
  </summary>
</histogram>

<histogram name="Ash.Dock.ItemsAll" units="units" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Number of all docked windows or panels including hidden or minimized.
    Recorded on every user action that interacts with docked windows.
  </summary>
</histogram>

<histogram name="Ash.Dock.ItemsLarge" units="units" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Number of large (wider than dock maximum width) windows that had to be
    shrunk to get docked among the visible docked windows. Recorded on every
    user action that interacts with docked windows.
  </summary>
</histogram>

<histogram name="Ash.Dock.ItemsPanels" units="units" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Number of docked visible panels. Recorded on every user action that
    interacts with docked windows.
  </summary>
</histogram>

<histogram name="Ash.Dock.ItemsVisible" units="units" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Number of visible docked windows or panels. Recorded on every user action
    that interacts with docked windows.
  </summary>
</histogram>

<histogram name="Ash.Dock.TimeBetweenUse" units="seconds" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Time elapsed between instances of docking, undocking or any other action
    affecting docked state of a window.
  </summary>
</histogram>

<histogram name="Ash.Dock.Width" units="pixels" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Width of the docked area in pixels. Recorded every time it changes after a
    user window resize operation is completed.
  </summary>
</histogram>

<histogram name="Ash.DragWindowFromShelf.PresentationTime" units="ms"
    expires_after="2024-02-22">
  <owner>tbarzic@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Presentation time in ms when a window is dragged from the bottom of the
    shelf. Recorded when the drag action is in progress.

    Warning: this histogram was expired from 2022-10-04 to 2023-02-22; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.DragWindowFromShelf.PresentationTime.MaxLatency"
    units="ms" expires_after="2023-05-30">
  <owner>tbarzic@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Maximum latency of the presentation time in ms when a window is dragged from
    the bottom of the shelf. Recorded when the drag action is finished.
  </summary>
</histogram>

<histogram name="Ash.EndOfLife.IncentiveButtonClicked"
    enum="EolIncentiveButtonType" expires_after="2023-12-10">
  <owner>mmourgos@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    Tracks the number of times that each end of life incentive button has been
    clicked. Recorded when the button is clicked to open the incentive url.
  </summary>
</histogram>

<histogram name="Ash.EndOfLife.IncentiveShowSource"
    enum="EolIncentiveShowSource" expires_after="2024-02-04">
  <owner>mmourgos@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    Tracks the number of times that each end of life incentive type is shown.
    Recorded as soon as the end of life incentive is shown on the screen.
  </summary>
</histogram>

<histogram name="Ash.EventLatency.Core.NoOverflow.TotalLatency" units="ms"
    expires_after="2023-12-31">
  <owner>xiyuan@chromium.org</owner>
  <owner>yichenz@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Similar to &quot;Ash.EventLatency.Core.TotalLatency&quot; that tracks total
    latency of 5 core events
    (MouseDragged/MousePressed/MouseReleased/KeyPressed/KeyReleased) for ash UI,
    from when the user input causing the event is generated until the frame
    caused by the event is submitted by the GPU service and presented
    successfully on the screen.

    But this one does not record overflow samples. It is a temp metric before
    the large number samples in overflow bucket (b/290611576) is resolved.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Ash.EventLatency.Core.TotalLatency" units="ms"
    expires_after="2024-03-03">
  <owner>xiyuan@chromium.org</owner>
  <owner>yichenz@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Similar to &quot;Ash.EventLatency.TotalLatency&quot; but tracks total
    latency of 5 core events
    (MouseDragged/MousePressed/MouseReleased/KeyPressed/KeyReleased) for ash UI,
    from when the user input causing the event is generated until the frame
    caused by the event is submitted by the GPU service and presented
    successfully on the screen.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Ash.EventLatency.TotalLatency" units="ms"
    expires_after="2024-03-03">
  <owner>xiyuan@chromium.org</owner>
  <owner>yichenz@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Tracks total latency of all types of event for ash UI, from when the user
    input causing the event is generated until the frame caused by the event is
    submitted by the GPU service and presented successfully on the screen.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Ash.EventLatency.{EventType}.TotalLatency"
    units="microseconds" expires_after="2024-08-27">
  <owner>xiyuan@chromium.org</owner>
  <owner>yichenz@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Tracks total latency of {EventType} for ash UI, from when the user input
    causing the event is generated until the frame caused by the event is
    submitted by the GPU service and presented successfully on the screen.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
  <token key="EventType">
    <variant name="FirstGestureScrollUpdate"/>
    <variant name="GestureDoubleTap"/>
    <variant name="GestureLongPress"/>
    <variant name="GestureLongTap"/>
    <variant name="GesturePinchBegin"/>
    <variant name="GesturePinchEnd"/>
    <variant name="GesturePinchUpdate"/>
    <variant name="GestureScrollBegin"/>
    <variant name="GestureScrollEnd"/>
    <variant name="GestureScrollUpdate"/>
    <variant name="GestureShowPress"/>
    <variant name="GestureTap"/>
    <variant name="GestureTapCancel"/>
    <variant name="GestureTapDown"/>
    <variant name="GestureTapUnconfirmed"/>
    <variant name="GestureTwoFingerTap"/>
    <variant name="InertialGestureScrollUpdate"/>
    <variant name="KeyPressed"/>
    <variant name="KeyReleased"/>
    <variant name="MouseDragged"/>
    <variant name="MouseMoved"/>
    <variant name="MousePressed"/>
    <variant name="MouseReleased"/>
    <variant name="MouseWheel"/>
    <variant name="TouchMoved"/>
    <variant name="TouchPressed"/>
    <variant name="TouchReleased"/>
  </token>
</histogram>

<histogram name="Ash.Float.FloatWindowCountsPerSession" units="windows"
    expires_after="2024-03-24">
  <owner>nupurjain@google.com</owner>
  <owner>shidi@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <summary>
    The number of floating windows per session, which is from the time a user
    logs in to the time they log off. This counts how many times any window
    enters float state. If the same window is floated twice in the same session,
    it will get recorded twice.
  </summary>
</histogram>

<histogram name="Ash.Float.FloatWindowDuration" units="minutes"
    expires_after="2024-03-24">
  <owner>nupurjain@google.com</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>shidi@chromium.org</owner>
  <summary>
    The amount of time a user keeps a floating window open and visible. Open and
    visible means the window is in float state and is on the active desk. If a
    window is floated and moved to an inactive desk we stop recording. The timer
    starts when we float a window and we record the histogram when the window is
    unfloated. The recording can also happen if a floated window is moved to an
    inactive desk, or the desk changes; we treat this as unfloated.
  </summary>
</histogram>

<histogram name="Ash.Float.FloatWindowMoveToAnotherDeskCounts" units="windows"
    expires_after="2024-02-11">
  <owner>nupurjain@google.com</owner>
  <owner>shidi@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <summary>
    The counts of how many times floated windows moved to another desk per
    session, which is from the time a user logs in to the time they log off.
  </summary>
</histogram>

<histogram name="Ash.Float.MultitaskMenuActionType.{TabletOrClamshell}"
    enum="MultitaskMenuActionType" expires_after="2024-02-20">
  <owner>nupurjain@google.com</owner>
  <owner>shidi@chromium.org</owner>
  <owner>sophiewen@chromium.org</owner>
  <summary>
    Recorded whatever action is taken on the {TabletOrClamshell} multitask menu.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.Float.MultitaskMenuEntryType.{TabletOrClamshell}"
    enum="MultitaskMenuEntryType" expires_after="2024-02-20">
  <owner>nupurjain@google.com</owner>
  <owner>shidi@chromium.org</owner>
  <owner>sophiewen@chromium.org</owner>
  <summary>
    Recorded whenever the multitask menu is opened from {TabletOrClamshell}. The
    recorded enum value indicates the method used to open the menu.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.FloatingWorkspace.FloatingWorkspaceV1Initialized"
    enum="BooleanHit" expires_after="2024-01-28">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Recorded when floating workspace service is launched. The false bucket is
    unused here.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.FloatingWorkspaceV1RestoredSessionType"
    enum="FloatingWorkspaceV1RestoredSessionType" expires_after="2024-01-28">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Recorded the browser session type (local or remote) restored by floating
    workspace service on current device.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.FloatingWorkspaceV2Initialized"
    enum="BooleanHit" expires_after="2024-08-23">
  <owner>zhumatthew@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Recorded when floating workspace service V2 is launched. The false bucket is
    unused here.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateLaunchFailureStatus"
    enum="FloatingWorkspaceV2LaunchTemplateFailureType"
    expires_after="2024-02-08">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>Recorded the reason for template launch failures.</summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateLaunchTimeOut"
    enum="FloatingWorkspaceV2LaunchTemplateTimeoutType"
    expires_after="2024-02-08">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Recorded the reason for template launch timeouts either when we pass the
    threshold for waiting for a floating workspace to be downloaded or when
    there's no floating workspace template to be downloaded after waiting for
    the set timeout.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateLoadTime" units="seconds"
    expires_after="2024-02-08">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Indicate the time to download a floating workspace template. If after set
    timeout is reached and there is no floating workspace template downloaded, a
    record of the timeout will be recorded in
    &quot;Ash.FloatingWorkspace.TemplateLaunchTimeOut&quot;.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateNotFound" enum="BooleanHit"
    expires_after="2024-08-23">
  <owner>zhumatthew@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>
    Recorded when floating workspace service V2 is initialized, but no floating
    workspace template was found. The false bucket is unused here.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateSize" units="B"
    expires_after="2024-02-08">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>Record the size of an uploaded floating workspace template.</summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateUploadStatus"
    enum="FloatingWorkspaceV2UploadTemplateStatusType"
    expires_after="2024-02-08">
  <owner>ligeng@google.com</owner>
  <owner>marcuskoehler@google.com</owner>
  <summary>Record the floating workspace template upload status.</summary>
</histogram>

<histogram name="Ash.Frame.ColorChangeCount.{AppType}" units="count"
    expires_after="2024-09-01">
  <owner>lingyufeng@google.com</owner>
  <owner>arc-framework@google.com</owner>
  <summary>
    Tracks the number of frame color changes when a {AppType} is launched. The
    data is collected once per app launching.
  </summary>
  <token key="AppType">
    <variant name="ArcApp"/>
    <variant name="Browser"/>
    <variant name="ChromeApp"/>
    <variant name="CrostiniApp"/>
    <variant name="Others"/>
    <variant name="SystemApp"/>
  </token>
</histogram>

<histogram
    name="Ash.Glanceables.Api.Classroom.CourseWorkItemsPerStudentCourseCount"
    units="course work items" expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates the number of course work items fetched for a
    course, where the current user is enrolled as a student.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.Api.Classroom.IsStudentRoleActiveResult"
    enum="BooleanEnabled" expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates whether the current user is enrolled in at least
    one classroom course.
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.Api.Classroom.StudentSubmissionsPerStudentCourseCount"
    units="student submissions" expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates the number of student submissions fetched for a
    course, where the current user is enrolled as a student.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.Api.Classroom.{Role}CoursesCount"
    units="courses" expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates the total number of active courses returned for the
    user. This number serves as a multiplier for futher requests to get course
    work items and student submissions.
  </summary>
  <token key="Role">
    <variant name="Student"/>
    <variant name="Teacher"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.Api.Classroom.{Role}DataFetchTime" units="ms"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates the time needed to fetch all student or teacher
    data (courses, course work, student submissions).
  </summary>
  <token key="Role">
    <variant name="Student"/>
    <variant name="Teacher"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.Api.Tasks.ProcessedTasksCount" units="tasks"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Tasks API. The
    recorded value indicates the number of tasks in a task list after processing
    (only not completed root tasks).
  </summary>
</histogram>

<histogram name="Ash.Glanceables.Api.Tasks.RawTasksCount" units="tasks"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Tasks API. The
    recorded value indicates the number of fetched raw tasks in a task list. Raw
    - means all individual tasks before processing, including all subtasks,
    since the API returns them as a flat array.
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.Api.Tasks.SimultaneousMarkAsCompletedRequestsCount"
    units="requests" expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI submits changes to Google Tasks API after
    closing the bubble. The recorded value indicates the number of completed
    tasks that require individiual requests to update their status.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.Api.Tasks.TaskListsCount" units="task lists"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Tasks API. The
    recorded value indicates the number of task lists fetched for the current
    user.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.Api.{Method}.Latency" units="ms"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API or
    Tasks API. The recorded value indicates the duration of the fetch
    request/response.
  </summary>
  <token key="Method">
    <variant name="Classroom.GetCourses"/>
    <variant name="Classroom.GetCourseWork"/>
    <variant name="Classroom.GetStudentSubmissions"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
    <variant name="Tasks.PatchTask"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.Api.{Method}.PagesCount" units="pages"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API or
    Tasks API. The recorded value indicates the total number of pages needed to
    fetch in order to get all data.
  </summary>
  <token key="Method">
    <variant name="Classroom.GetCourseWork"/>
    <variant name="Classroom.GetStudentSubmissions"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.Api.{Method}.Status" enum="ApiErrorCode"
    expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API or
    Tasks API. The recorded enum value indicates the HTTP status code of the
    fetch response.
  </summary>
  <token key="Method">
    <variant name="Classroom.GetCourses"/>
    <variant name="Classroom.GetCourseWork"/>
    <variant name="Classroom.GetStudentSubmissions"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
    <variant name="Tasks.PatchTask"/>
  </token>
</histogram>

<histogram
    name="Ash.Glanceables.Classroom.Student.AssignmentListShownTime.{OccurrenceType}.{AssignmentListType}"
    units="ms" expires_after="2024-08-29">
  <owner>mmourgos@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time that the user had the student assignment list selected
    and shown. This metric is split between the default list which is shown when
    the bubble is first opened and assignment lists which are shown after
    chaning the selection. The time is measured from the moment that the list is
    shown to the moment that either the selection is changed or the bubble is
    closed.
  </summary>
  <token key="AssignmentListType">
    <variant name="Assigned"/>
    <variant name="Done"/>
    <variant name="Missing"/>
    <variant name="NoDueDate"/>
  </token>
  <token key="OccurrenceType">
    <variant name="ChangedList"/>
    <variant name="DefaultList"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.Classroom.Student.ListSelected"
    enum="GlanceableStudentAssignmentList" expires_after="2024-08-29">
  <owner>mmourgos@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The number of times that the assignment list has been selected. Recorded
    every time a new assignment list is selected.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.Classroom.Student.SelectedListChangeCount"
    units="int" expires_after="2024-08-29">
  <owner>mmourgos@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The total number of times that a new student assignment list is selected.
    The total count is recorded when the glanceable bubble is closed.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.LoginToShowTime" units="ms"
    expires_after="2024-08-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time that the user spent between login and opening the
    glanceables time management bubble. The time is measured from the moment the
    user logs in and the time the glanceables bubble is created.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.TasksListChangeCount"
    units="int" expires_after="2024-08-31">
  <owner>mmourgos@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Records the total number of times the selected tasks list is changed. The
    total count is recorded when the glanceable bubble is closed.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.TasksCountInDefaultTaskList"
    units="tasks" expires_after="2024-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Records the total number of tasks shown in the default (initially selected)
    task list.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.TotalShowTime" units="ms"
    expires_after="2024-08-29">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time that the user kept the glanceables time management bubble
    open. The time is measured from the moment the glanceables bubble is created
    until said bubble is destroyed.
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.TimeManagement.{GlanceableBubble}.ChangeListToLoadTime.{Status}"
    units="ms" expires_after="2024-08-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time in ms that the glanceables bubble takes to load up the
    data from the API after the user triggered an update. Split by bubble type
    and query status.
  </summary>
  <token key="GlanceableBubble">
    <variant name="Classroom"/>
    <variant name="Tasks"/>
  </token>
  <token key="Status">
    <variant name="Fail"/>
    <variant name="Success"/>
  </token>
</histogram>

<histogram
    name="Ash.Glanceables.TimeManagement.{GlanceableBubble}.OpenToInitialLoadTime.{Occurrence}"
    units="ms" expires_after="2024-08-29">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time in ms that the glanceables bubble takes to load up the
    initial data from the API after opened. Split by bubble type and whether the
    time represent the first time the bubble was opened in the session or not.
  </summary>
  <token key="GlanceableBubble">
    <variant name="Classroom"/>
    <variant name="Tasks"/>
  </token>
  <token key="Occurrence">
    <variant name="FirstOcurrence"/>
    <variant name="SubsequentOccurence"/>
  </token>
</histogram>

<histogram name="Ash.Homescreen.AnimationSmoothness" units="%"
    expires_after="2024-01-10">
  <owner>sammiequon@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    Relative smoothness of animations when performing tablet mode homescreen
    animations, recorded when the animation completes. 100% represents ideally
    smooth 60 frames per second.
  </summary>
</histogram>

<histogram name="Ash.HotseatGesture" enum="HotseatInAppGesture"
    expires_after="2023-06-04">
  <owner>andrewxu@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>Gestures supported by the in-app hotseat.</summary>
</histogram>

<histogram
    name="Ash.HotseatTransition.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2023-09-06">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Tracks the animation smoothness for the ShelfWidget's animating background
    during transitions of the hotseat to shown, extended, and hidden hotseat
    states. Check Ash.HotseatWidgetAnimation.AnimationSmoothness for smoothness
    of the HotseatWidget. {HotseatTransitionType}
  </summary>
  <token key="HotseatTransitionType" variants="HotseatTransitionType"/>
</histogram>

<histogram name="Ash.HotseatTransition.Drag.PresentationTime" units="ms"
    expires_after="2024-05-30">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Presentation time in ms of the hotseat when it changes between the hidden
    and the extended state as a result of a drag action. Recorded when the drag
    action is in progress.
  </summary>
</histogram>

<histogram name="Ash.HotseatTransition.Drag.PresentationTime.MaxLatency"
    units="ms" expires_after="2023-10-25">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Maximum latency of the presentation time in ms of the hotseat when it
    changes between the hidden and the extended state as a result of a drag
    action. Recorded when the drag action is finished.
  </summary>
</histogram>

<histogram
    name="Ash.HotseatWidgetAnimation.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2024-05-30">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Tracks the animation smoothness for the bounds animation of the hotseat
    widget's elements during transitions of the hotseat to shown, extended, and
    hidden hotseat states. Check Ash.HotseatTransition.AnimationSmoothness for
    smoothness of the shelf's animating background. {HotseatTransitionType}
  </summary>
  <token key="HotseatTransitionType" variants="HotseatTransitionType"/>
</histogram>

<histogram
    name="Ash.HotseatWidgetAnimation.{HotseatWidgetElement}AnimationSmoothness"
    units="%" expires_after="2024-05-30">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Tracks the animation smoothness for the bounds animation of the hotseat
    widget's elements during transitions of the hotseat to shown, extended, and
    hidden hotseat states. Check Ash.HotseatTransition.AnimationSmoothness for
    smoothness of the shelf's animating background. {HotseatWidgetElement}
  </summary>
  <token key="HotseatWidgetElement">
    <variant name="TranslucentBackground."
        summary="Hotseat widget's translucent background"/>
    <variant name="Widget." summary="Hotseat widget"/>
  </token>
</histogram>

<histogram name="Ash.InteractiveWindowResize.Lacros.TimeToPresent" units="ms"
    expires_after="2024-01-29">
  <owner>xiyuan@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Similar to Ash.InteractiveWindowResize.TimeToPresent but tracks the resize
    latency for lacros windows by measuring configure -&gt; ack -&gt; present
    time.
  </summary>
</histogram>

<histogram name="Ash.InteractiveWindowResize.Lacros.TimeToPresent.MaxLatency"
    units="ms" expires_after="2024-01-29">
  <owner>xiyuan@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Maximum time of Ash.InteractiveWindowResize.Lacros.TimeToPresent during an
    interactive resize.
  </summary>
</histogram>

<histogram name="Ash.InteractiveWindowResize.TimeToPresent" units="ms"
    expires_after="2024-04-16">
  <owner>xiyuan@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Time between when the size of a window changes during an interactive window
    resize and the results are drawn (presented) on screen. This is recorded for
    each movement of the mouse/pointer that results in a resize.
  </summary>
</histogram>

<histogram name="Ash.InteractiveWindowResize.TimeToPresent.MaxLatency"
    units="ms" expires_after="2024-04-16">
  <owner>xiyuan@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Maximum time between when the size of a window changes during an interactive
    window resize and the results are drawn (presented) on screen. This is
    recorded for each movement of the mouse/pointer that results in a resize.
  </summary>
</histogram>

<histogram name="Ash.Lacros.Launch.Mode" enum="LacrosLaunchMode"
    expires_after="2024-02-11">
  <owner>skuhne@chromium.org</owner>
  <owner>lacros-team@google.com</owner>
  <summary>
    The Lacros operation mode. This will record whether Lacros is the only
    browser. It will be emitted once when the system (Ash) starts.
  </summary>
</histogram>

<histogram name="Ash.Lacros.Launch.Mode.Daily" enum="LacrosLaunchMode"
    expires_after="2024-03-24">
  <owner>skuhne@chromium.org</owner>
  <owner>lacros-team@google.com</owner>
  <summary>
    The Lacros operation mode. This will record whether Lacros is the only
    browser. It will be emitted at least once a day.
  </summary>
</histogram>

<histogram name="Ash.Lacros.Launch.ModeAndSource"
    enum="LacrosLaunchModeAndSource" expires_after="2024-07-12">
  <owner>skuhne@chromium.org</owner>
  <owner>lacros-team@google.com</owner>
  <summary>
    The Lacros operation mode and the origin of the setting. This will record
    whether Lacros is enabled as well as whether that was set by the user,
    enforced by a policy or enforced by the user (overriding any given policy).
    It will be emitted shortly before Lacros gets started the first time from
    the system (Ash).
  </summary>
</histogram>

<histogram name="Ash.Lacros.Launch.ModeAndSource.Daily"
    enum="LacrosLaunchModeAndSource" expires_after="2024-07-12">
  <owner>skuhne@chromium.org</owner>
  <owner>lacros-team@google.com</owner>
  <summary>
    The Lacros operation mode and the origin of the setting. This will record
    whether Lacros is enabled as well as whether that was set by the user,
    enforced by a policy or enforced by the user (overriding any given policy).
    It will be emitted at least once a day.
  </summary>
</histogram>

<histogram name="Ash.LacrosMigrationStatus" enum="LacrosMigrationStatus"
    expires_after="2024-03-10">
  <obsolete>
    Deprecated Sep 2023. See the new metrics Ash.LacrosMigrationStatus2 for data
    collected for M119 and after.
  </obsolete>
<!-- TODO(crbug.com/1486209): Remove once Ash.LacrosMigrationStatus2 is in stable -->

  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Migration status from Ash to Lacros. It shows whether the user has migrated
    from Ash to Lacros and if they did with which migration mode.
  </summary>
</histogram>

<histogram name="Ash.LacrosMigrationStatus2" enum="LacrosMigrationStatus"
    expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Migration status from Ash to Lacros. It shows whether the user has migrated
    from Ash to Lacros and if they did with which migration mode.

    The same as &quot;Ash.LacrosMigrationStatus&quot; but further splits
    'Uncompleted' into 'Uncompleted' and 'MaxAttemptReached'. Uncompleted means
    the user hasn't completed migration but has not reached its retry limit,
    meaning the migration will be attempted at the next chance. Meanwhile
    MaxAttemptReached means it failed more than the number of times allowed and
    won't be attempted again.
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.AuthMethod.Switched"
    enum="AuthMethodSwitchType" expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The count of auth method switching actions on ChromeOS lock screen.
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.AuthMethod.Used.ClamShellMode"
    enum="AuthMethod" expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The usage of different auth methods (PIN / Password / Smartlock /
    Fingerprint / Challenge response) on Chromebooks in clamshell mode and on
    other form-factors.
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.AuthMethod.Used.TabletMode" enum="AuthMethod"
    expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The usage of different auth methods (PIN / Password / Smartlock /
    Fingerprint / Challenge response) on Chromebooks in tablet mode.
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.NbPasswordAttempts.UntilFailure"
    units="attempts" expires_after="2023-06-18">
  <obsolete>
    Deprecated in M111 and replaced with
    &quot;Ash.OSAuth.Login/Lock.NbPasswordAttempts.UntilFailure&quot;.
  </obsolete>
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The number of incorrect passwords entered in Chrome OS login/lock screen
    until the user gives up (user signs out the current session or shuts down
    the device).
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.NbPasswordAttempts.UntilSuccess"
    units="attempts" expires_after="2023-06-18">
  <obsolete>
    Deprecated in M111 and replaced with
    &quot;Ash.OSAuth.Login/Lock.NbPasswordAttempts.UntilSuccess&quot;.
  </obsolete>
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The number of incorrect passwords entered in Chrome OS login/lock screen
    until a successful attempt.
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.UserClicks" enum="LockScreenUserClickTarget"
    expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The numbers of times that users click on the shelf buttons, trays and lock
    screen note on the ChromeOS lock screen.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.AuthMethod.Switched"
    enum="AuthMethodSwitchType" expires_after="2024-01-14">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The count of auth method switching actions on ChromeOS login screen.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.AuthMethod.Used.ClamShellMode"
    enum="AuthMethod" expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The usage of different auth methods (PIN / Password / Smartlock /
    Fingerprint / Challenge response) on Chromebooks in clamshell mode and on
    other form-factors.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.AuthMethod.Used.TabletMode" enum="AuthMethod"
    expires_after="2024-03-17">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The usage of different auth methods (PIN / Password / Smartlock /
    Fingerprint / Challenge response) on Chromebooks in tablet mode.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.MigrationBanner" enum="BooleanShown"
    expires_after="2024-02-04">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Whether the cryptohome migration banner was shown on the Chrome OS login
    screen.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.UserClicks" enum="LoginScreenUserClickTarget"
    expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The numbers of times that users click on the shelf buttons and trays on the
    ChromeOS login screen.
  </summary>
</histogram>

<histogram name="Ash.Login.OOBE.UserClicks" enum="OobeUserClickTarget"
    expires_after="2024-02-25">
  <owner>emaamari@google.com</owner>
  <owner>raleksandrov@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>What shelf buttons or trays are clicked in the OOBE.</summary>
</histogram>

<histogram name="Ash.Login.PinAutosubmit.Backfill"
    enum="PinAutosubmitBackfillEvent" expires_after="2024-02-20">
  <owner>emaamari@google.com</owner>
  <owner>rrsilva@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The result of the PIN auto submit 'Backfill' operation. Users updating to
    M86 with an existing PIN will have their preference regarding auto submit
    'backfilled' to either enabled or disabled.
  </summary>
</histogram>

<histogram name="Ash.Login.ShowGaiaSignin.PermanentlyUntrusted" enum="Boolean"
    expires_after="2023-01-20">
  <owner>agawronska@chromium.org</owner>
  <owner>galenemco@google.com</owner>
  <owner>cros-families-eng@google.com</owner>
  <summary>
    Records instances of a &quot;PERMANENTLY_UNTRUSTED&quot; result during the
    check for trusted values before showing gaia signin. This is a fatal result
    which will result in signin not being shown.
  </summary>
</histogram>

<histogram name="Ash.Login.ShowGaiaSignin.WaitTime" units="ms"
    expires_after="2024-03-01">
  <owner>agawronska@chromium.org</owner>
  <owner>galenemco@google.com</owner>
  <owner>cros-families-eng@google.com</owner>
  <summary>
    Records the amount of time spent waiting for trusted values before showing
    gaia signin. Waiting for trusted values ensures that the device owner id is
    present before showing the signin, which is necessary for checking signin
    permissions for child users. This check may introduce a delay for all users.
    This metric allows monitoring that delay.
  </summary>
</histogram>

<histogram name="Ash.Login.TimeUntilGoodADF" units="microseconds"
    expires_after="2024-07-09">
  <owner>xiyuan@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Time between user logged in (i.e. a successful cryptohome mount) and when
    good ADF (&lt;= 20%) is observed for more than 5 seconds.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
</histogram>

<histogram name="Ash.Login.TotalFirstSessionDuration" units="minutes"
    expires_after="2024-05-12">
  <owner>raging@google.com</owner>
  <owner>alemate@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Total user first session time between when the user was added to the device
    and session exit or device shutdown. Reported for primary users only.
  </summary>
</histogram>

<histogram name="Ash.Login.TotalSessionDuration" units="minutes"
    expires_after="2024-05-12">
  <owner>raging@google.com</owner>
  <owner>alemate@chromium.org</owner>
  <owner>rsorokin@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Total user session time between sign-in and session exit or device shutdown.
    Reported for primary users only. First sessions are excluded and reported in
    a separate histogram: Ash.Login.TotalFirstSessionDuration.
  </summary>
</histogram>

<histogram base="true" name="Ash.LoginAnimation.Duration" units="ms"
    expires_after="2024-02-11">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <summary>
    The duration of how long it took to finish all animations applied during the
    login process, from the time the first animation is added, to the time the
    last animation is finished.
  </summary>
</histogram>

<histogram base="true" name="Ash.LoginAnimation.Duration2.{TabletOrClamshell}"
    units="ms" expires_after="2024-02-11">
  <owner>oshima@chromium.org</owner>
  <owner>zhzhliu@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <summary>
    The duration of how long it took to finish all animations applied during the
    login process, from the time the first animation is added, to the time the
    last animation is finished. This metric is capped at 30 seconds, while above
    &quot;Ash.LoginAnimation.Duration&quot; capped at 5 seconds.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram base="true" name="Ash.LoginAnimation.Jank" units="%"
    expires_after="2024-03-30">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <summary>
    Jank metrics of all animations applied during the login process. This
    represents how often the frame update rate changed during animation.
  </summary>
</histogram>

<histogram base="true" name="Ash.LoginAnimation.Smoothness" units="%"
    expires_after="2024-03-17">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <summary>
    Relative smoothness of all animations applied during the login process. 100%
    represents the ideal smoothness for 60 frames per second.
  </summary>
</histogram>

<histogram name="Ash.Media.CameraPrivacySwitch.Event"
    enum="CameraPrivacySwitchEvent" expires_after="2023-09-03">
  <owner>tbarzic@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Reports events related to camera privacy switch state. The camera privacy
    switch is a hardware toggle supported by some Chrome OS devices that
    disables the built in camera video feed. The histogram is reported (1) when
    a camera privacy switch state change is detected (which generally causes a
    system toast to get shown), and (2) when a notification informing the user
    that the camera privacy switch is on (the notification is shown if the user
    tries to use their camera with the privacy switch tuned on). The camera
    privacy switch state is only recorded if the state change is a result of a
    user action - it will not be recorded for state changes that are a result of
    camera privacy switch state initialization.
  </summary>
</histogram>

<histogram name="Ash.Media.CameraPrivacySwitch.TimeFromNotificationToOff"
    units="5 seconds" expires_after="2023-09-10">
  <owner>tbarzic@chromium.org</owner>
  <owner>gzadina@google.com</owner>
  <summary>
    Time from showing a notification informing the user about the camera privacy
    switch to the user turning the privacy switch off. The camera privacy switch
    is a hardware switch supported by some Chrome OS devices that cuts the video
    camera feed off. The Chrome OS UI shows a notification if the user tries to
    use the camera with the privacy switch on. The intention is to track the
    time it takes for the user to flip the privacy switch after they're notified
    the camera is disabled. The histogram is recorded if the user toggles the
    camera privacy switch after seeing the notification about the privacy switch
    being on (if the switch is toggled more than once after the notification
    gets shown, only the first toggle action will be reported). The time is
    reported in seconds with 5 second granularity.
  </summary>
</histogram>

<histogram name="Ash.MessageCenter.Scroll.PresentationTime" units="ms"
    expires_after="2024-10-01">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Presentation time while scrolling through the list of notifications in
    Notification Center. Emitted when Notification Center is scrolled.
  </summary>
</histogram>

<histogram name="Ash.MessageCenter.Scroll.PresentationTime.MaxLatency"
    units="ms" expires_after="2024-04-16">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Presentation time while scrolling through the list of notifications in
    Notification Center. Emitted when Notification Center is scrolled.
  </summary>
</histogram>

<histogram name="Ash.MojoServiceManager.BootstrapRetryTimes" units="count"
    expires_after="2024-02-04">
  <owner>chungsheng@google.com</owner>
  <owner>chromeos-mojo-service-manager@google.com</owner>
  <summary>
    The retry times when try to bootstrap to mojo service manager.
  </summary>
</histogram>

<histogram name="Ash.MojoServiceManager.IsConnectionLost" enum="BooleanShown"
    expires_after="2024-02-04">
  <owner>chungsheng@google.com</owner>
  <owner>chromeos-mojo-service-manager@google.com</owner>
  <summary>
    Whether the connection to mojo service manager is lost before during ash
    running.
  </summary>
</histogram>

<histogram name="Ash.MultiDisplay.WindowsMovedAfterRemap.DisplayRotated"
    units="Boolean" expires_after="2024-03-24">
  <owner>sammiequon@chromium.org</owner>
  <owner>yunchengs@google.com</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    After a display rotation, the existing app windows will get remapped. A one
    minute timer then runs. If any of the app windows are moved or resized by
    the user, then this histogram records true. If the timer ends without an app
    window being moved or resized, then this histogram records false. Used to
    determine if the user is satisfied with the window manager auto remap.
  </summary>
</histogram>

<histogram
    name="Ash.MultiDisplay.WindowsMovedAfterRemap.DisplayWorkAreaChanged"
    units="Boolean" expires_after="2024-03-24">
  <owner>sammiequon@chromium.org</owner>
  <owner>yunchengs@google.com</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    After a display work area change, the existing app windows will get
    remapped. A one minute timer then runs. If any of the app windows are moved
    or resized by the user, then this histogram records true. If the timer ends
    without an app window being moved or resized, then this histogram records
    false. Used to determine if the user is satisfied with the window manager
    auto remap.
  </summary>
</histogram>

<histogram
    name="Ash.NavigationWidget.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2024-03-27">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Relative smoothness of animations of the navigation widget's elements, which
    are the widget itself and its child views. 100% represents ideally smooth 60
    frames per second. 50% represents only 30 frames per second is achieved
    during the animations. Recorded every time an animation is triggered in the
    Navigation Widget. We record this metric for each element separately.
    {HotseatTransitionType}
  </summary>
  <token key="HotseatTransitionType" variants="HotseatTransitionType"/>
</histogram>

<histogram
    name="Ash.NavigationWidget.{NavigationWidgetElement}AnimationSmoothness"
    units="%" expires_after="2024-03-27">
  <owner>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Relative smoothness of animations of the navigation widget's elements, which
    are the widget itself and its child views. 100% represents ideally smooth 60
    frames per second. 50% represents only 30 frames per second is achieved
    during the animations. Recorded every time an animation is triggered in the
    Navigation Widget. We record this metric for each element separately.
    {NavigationWidgetElement}
  </summary>
  <token key="NavigationWidgetElement">
    <variant name="BackButton." summary="Navigation widget's back button"/>
    <variant name="HomeButton." summary="Navigation widget's home button"/>
    <variant name="Widget." summary="Navigation widget"/>
  </token>
</histogram>

<histogram name="Ash.NightLight.AutoNightLightNotificationShown"
    enum="BooleanShown" expires_after="2022-01-30">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>Emitted when the Auto Night Light notification is shown.</summary>
</histogram>

<histogram name="Ash.NightLight.AutoNightLightNotificationState"
    enum="AshAutoNightLightNotificationState" expires_after="2023-07-02">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Emitted when the user interacts with the Auto Night Light notification to
    report the state of the notification as a result of this interaction.
  </summary>
</histogram>

<histogram name="Ash.NightLight.DisplayCrtcCtmSupport"
    enum="AshNightLightDisplayCrtcCtmSupportType" expires_after="2022-02-01">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    The type of CRTC color transorm matrix support for the currently connected
    displays. Emitted when cursor compositing status is refreshed, but only when
    Night Light is on. The cursor compositing status is refreshed whenever there
    is a change in Night Light status or color temperature.
  </summary>
</histogram>

<histogram name="Ash.NightLight.ScheduleType" enum="AshNightLightScheduleType"
    expires_after="2024-03-17">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    The selected Night Light schedule type. Emitted when the user changes the
    Night Light schedule type from the Display System Settings.
  </summary>
</histogram>

<histogram name="Ash.NightLight.Temperature"
    enum="AshNightLightTemperatureRanges" expires_after="2022-02-01">
  <owner>afakhry@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    The ranges in which the selected values of the Night Light color temperature
    reside. Emitted when the user drags the Night Light color temperature slider
    to change its value from the Display System Settings.
  </summary>
</histogram>

<histogram name="Ash.Notification.ClearAllStacked.AnimationSmoothness"
    units="%" expires_after="2024-02-25">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the &quot;clear all&quot; animation in the CrOS
    message center. This occurs when the clear all button is pressed with
    notifications that are not visible on screen. Measured via a throughtput
    tracker.
  </summary>
</histogram>

<histogram name="Ash.Notification.ClearAllVisible.AnimationSmoothness"
    units="%" expires_after="2024-02-04">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the &quot;clear all&quot; animation in the CrOS
    message center. This occurs when the clear all button is pressed and all
    notifications are visible. Measured via a throughtput tracker.
  </summary>
</histogram>

<histogram name="Ash.Notification.CountOfNotificationsInOneGroup"
    units="Notifications" expires_after="2023-11-12">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The number of notification contained in one group. Emitted when a
    notification is added or removed from a group.
  </summary>
</histogram>

<histogram name="Ash.Notification.ExpandOrCollapse.AnimationSmoothness"
    units="%" expires_after="2024-02-05">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the &quot;Expand or Collapse&quot; animation in the
    CrOS message center. This occurs when the notification requests a size
    change due to being expanded or collapsed. Usually involves other layer
    animations which are named (get name from leandre@).
  </summary>
</histogram>

<histogram
    name="Ash.Notification.GroupNotification.SlideOut.AnimationSmoothness"
    units="%" expires_after="2024-03-24">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the slide out part of the animation when a grouped
    notification is removed. Emmitted when a grouped notification is removed by
    clicking on it's close button.
  </summary>
</histogram>

<histogram name="Ash.Notification.GroupNotificationAdded"
    enum="GroupNotificationType" expires_after="2024-01-14">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the types of group notification added to the system. The types are
    group parent and group child. Emitted when a group notification is created.
  </summary>
</histogram>

<histogram name="Ash.Notification.MoveDown.AnimationSmoothness" units="%"
    expires_after="2024-02-05">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the &quot;move down&quot; animation in the CrOS
    message center. This occurs when a notification is removed and notifications
    above the deleted one animate downwards to fill in the space. Measured via a
    throughtput tracker.
  </summary>
</histogram>

<histogram name="Ash.Notification.SwipeControl.FadeIn.AnimationSmoothness"
    units="%" expires_after="2024-01-28">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade in animation of the settings button inside a
    swipe control notification view. 100% represents ideally smooth 60 frames
    per second. Emitted when the fade in animation is completed.
  </summary>
</histogram>

<histogram name="Ash.NotificationPopup.AnimationSmoothness" units="%"
    expires_after="2024-03-17">
  <owner>leandre@chromium.org</owner>
  <owner>amehfooz@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of animations of notification pop-up. 100% represents
    ideally smooth 60 frames per second. Emitted when pop-up animations are
    completed, including pop-up fade-in, fade-out, move-up, move-down.
  </summary>
</histogram>

<histogram name="Ash.NotificationPopup.OnTopOfSurfacesPopupCount"
    units="popups" expires_after="2024-08-22">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the number of popups that show up on top of a UI surface. Emitted
    when the UI surface is shown or changes height when popup notifications are
    visible, and when there's a new notification popup added when the UI surface
    is visible.
  </summary>
</histogram>

<histogram name="Ash.NotificationPopup.OnTopOfSurfacesType"
    enum="NotifierCollisionSurfaceType" expires_after="2024-08-22">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the type of UI surface that popup notifications are shown on top of.
    Emitted when the UI surface is shown or changes height when popup
    notifications are visible, and when there's a new notification popup added
    when the UI surface is visible.
  </summary>
</histogram>

<histogram
    name="Ash.NotificationView.ConvertSingleToGroup.{Animation}.AnimationSmoothness"
    units="%" expires_after="2024-05-14">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the {Animation} in notification view when converting
    from single to group notification. 100% represents ideally smooth 60 frames
    per second. Emitted when the animation is completed.
  </summary>
  <token key="Animation">
    <variant name="FadeIn"/>
    <variant name="FadeOut"/>
  </token>
</histogram>

<histogram
    name="Ash.NotificationView.ExpandButton.BoundsChange.AnimationSmoothness"
    units="%" expires_after="2024-01-28">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the bounds change animation of the expand button
    inside a notification view. 100% represents ideally smooth 60 frames per
    second. Emitted when the animation is completed.
  </summary>
</histogram>

<histogram name="Ash.NotificationView.ExpandButton.ClickAction"
    enum="ExpandButtonClickAction" expires_after="2024-04-30">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The count of actions that is performed after an expand button is clicked.
    The actions are expanding or collapsing individual or group notification.
    Emitted when an expand button is clicked.
  </summary>
</histogram>

<histogram
    name="Ash.NotificationView.ExpandButton.ConvertSingleToGroup.{Animation}.AnimationSmoothness"
    units="%" expires_after="2024-05-14">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the {Animation} inside the expand button of the
    notification view when converting from single to group notification. 100%
    represents ideally smooth 60 frames per second. Emitted when the animation
    is completed.
  </summary>
  <token key="Animation">
    <variant name="BoundsChange"/>
    <variant name="FadeIn"/>
  </token>
</histogram>

<histogram
    name="Ash.NotificationView.ImageContainerView.ScaleDown.AnimationSmoothness"
    units="%" expires_after="2024-01-28">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the scale down animation of image container view
    inside a notification view. 100% represents ideally smooth 60 frames per
    second. Emitted when the scale down animation is completed.
  </summary>
</histogram>

<histogram name="Ash.NotificationView.ImageDrag.EndState"
    enum="NotificationImageDragEndState" expires_after="2024-03-10">
  <owner>andrewxu@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the notification drag end state when the notification image drag
    ends.
  </summary>
</histogram>

<histogram name="Ash.NotificationView.ImageDrag.Start"
    enum="NotificationCatalogName" expires_after="2024-03-10">
  <owner>andrewxu@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the notification catalog name when the notification image drag
    starts.
  </summary>
</histogram>

<histogram name="Ash.NotificationView.NotificationAdded.Type"
    enum="NotificationViewType" expires_after="2024-06-18">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the types of notification view added to the system. Emitted when
    each notification is added and the notification is visible.
  </summary>
</histogram>

<histogram name="Ash.NotificationView.{ChildView}.FadeIn.AnimationSmoothness"
    units="%" expires_after="2024-01-28">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade in animation of {ChildView} inside a
    notification view. 100% represents ideally smooth 60 frames per second.
    Emitted when the fade in animation is completed.
  </summary>
  <token key="ChildView">
    <variant name="ActionsRow"/>
    <variant name="CollapsedSummaryView"/>
    <variant name="ExpandButtonLabel"/>
    <variant name="ExpandedMessageLabel"/>
    <variant name="HeaderRow"/>
    <variant name="ImageContainerView"/>
    <variant name="InlineReply"/>
    <variant name="MainRightView"/>
    <variant name="MainView"/>
    <variant name="MessageLabel"/>
    <variant name="TimestampInTitle"/>
    <variant name="TitleRowDivider"/>
  </token>
</histogram>

<histogram name="Ash.NotificationView.{ChildView}.FadeOut.AnimationSmoothness"
    units="%" expires_after="2024-01-28">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade out animation of {ChildView} inside a
    notification view. 100% represents ideally smooth 60 frames per second.
    Emitted when the fade out animation is completed.
  </summary>
  <token key="ChildView">
    <variant name="ActionButtonsRow"/>
    <variant name="CollapsedSummaryView"/>
    <variant name="ExpandButton"/>
    <variant name="ExpandButtonLabel"/>
    <variant name="IconView"/>
    <variant name="ImageContainerView"/>
    <variant name="InlineReply"/>
    <variant name="InlineSettingsRow"/>
    <variant name="LeftContent"/>
    <variant name="MainView"/>
  </token>
</histogram>

<histogram
    name="Ash.NotificationView.{ChildView}.ScaleAndTranslate.AnimationSmoothness"
    units="%" expires_after="2024-01-28">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the scale and translate animation of {ChildView}
    inside a notification view. 100% represents ideally smooth 60 frames per
    second. Emitted when the animation is completed.
  </summary>
  <token key="ChildView">
    <variant name="IconView"/>
    <variant name="ImageContainerView"/>
  </token>
</histogram>

<histogram name="Ash.NotifierFramework.Nudge.ShownCount"
    enum="NudgeCatalogName" expires_after="2024-03-17">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the number of times a specific nudge is shown to users. This metric
    is recorded every time a nudge is shown.
  </summary>
</histogram>

<histogram name="Ash.NotifierFramework.Nudge.TimeToAction.{TimeRange}"
    enum="NudgeCatalogName" expires_after="2024-03-17">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the time from when a specific educational nudge is shown to when it's
    interacted with. Starts measuring time when the nudge is shown and records
    the Nudge catalog name in one of the time buckets available if the user
    performs the nudge's suggested action.
  </summary>
  <token key="TimeRange">
    <variant name="Within1h"/>
    <variant name="Within1m"/>
    <variant name="WithinSession"/>
  </token>
</histogram>

<histogram name="Ash.NotifierFramework.Nudge.{FirstOrSecond}ButtonPressed"
    enum="NudgeCatalogName" expires_after="2024-07-15">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the nudge catalog name when a user presses one of the nudge's
    buttons.
  </summary>
  <token key="FirstOrSecond">
    <variant name="First"/>
    <variant name="Second"/>
  </token>
</histogram>

<histogram name="Ash.NotifierFramework.Toast.Dismissed.{TimeRange}"
    enum="ToastCatalogName" expires_after="2024-01-15">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the time a specific toast spends on screen before being dismissed by
    the user or system. Records the toast catalog name in one of the time
    buckets available when toast is dismissed either manually or by time out.
  </summary>
  <token key="TimeRange">
    <variant name="After7s"/>
    <variant name="Within2s"/>
    <variant name="Within7s"/>
  </token>
</histogram>

<histogram name="Ash.NotifierFramework.Toast.ShownCount"
    enum="ToastCatalogName" expires_after="2024-03-17">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the number of times a specific toast is shown to users. This metric
    is recorded every time a toast is shown.
  </summary>
</histogram>

<histogram name="Ash.NotifierFramework.Toast.TimeInQueue" units="seconds"
    expires_after="2024-03-17">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the time a toast spends in queue before it's shown on screen.
  </summary>
</histogram>

<histogram
    name="Ash.NotifierFramework.{UnpinnedOrPinned}SystemNotification.Added"
    enum="NotificationCatalogName" expires_after="2024-03-17">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the number of times a specific system notification is added to the
    notification list. This metric is recorded every time the
    `OnNotificationAdded` event is triggered for a system notification.
  </summary>
  <token key="UnpinnedOrPinned">
    <variant name=""/>
    <variant name="Pinned"/>
  </token>
</histogram>

<histogram
    name="Ash.NotifierFramework.{UnpinnedOrPinned}SystemNotification.Popup.Dismissed.{TimeRange}"
    enum="NotificationCatalogName" expires_after="2024-03-17">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the time a specific system notification spends as a pop-up before
    being dismissed either by the user or system. Records the notification
    catalog name in one of the time buckets available when the pop-up is
    dismissed either manually or by time out.
  </summary>
  <token key="UnpinnedOrPinned">
    <variant name=""/>
    <variant name="Pinned"/>
  </token>
  <token key="TimeRange">
    <variant name="After7s"/>
    <variant name="Within1s"/>
    <variant name="Within3s"/>
    <variant name="Within7s"/>
  </token>
</histogram>

<histogram
    name="Ash.NotifierFramework.{UnpinnedOrPinned}SystemNotification.Popup.ShownCount"
    enum="NotificationCatalogName" expires_after="2024-03-17">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the number of times a specific system notification pop-up is shown to
    users.
  </summary>
  <token key="UnpinnedOrPinned">
    <variant name=""/>
    <variant name="Pinned"/>
  </token>
</histogram>

<histogram
    name="Ash.NotifierFramework.{UnpinnedOrPinned}SystemNotification.Popup.UserJourneyTime"
    units="seconds" expires_after="2024-01-15">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the time a system notification spends as a pop-up before being
    dismissed either by the user or system. Starts measuring time whenever the
    pop-up is shown to the user, and records metric when the pop-up is dismissed
    either manually or by time out.
  </summary>
  <token key="UnpinnedOrPinned">
    <variant name=""/>
    <variant name="Pinned"/>
  </token>
</histogram>

<histogram name="Ash.OSAuth.Login.ConfiguredAuthFactors.{AuthFactor}"
    enum="Boolean" expires_after="2024-03-01">
  <owner>anastasiian@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Whether the logged in user has {AuthFactor} auth factor configured. Recorded
    upon successful login.
  </summary>
  <token key="AuthFactor">
    <variant name="CryptohomePin"/>
    <variant name="GaiaPassword"/>
    <variant name="Recovery"/>
    <variant name="SmartCard"/>
  </token>
</histogram>

<histogram
    name="Ash.OSAuth.{AuthenticationSurface}.NbPasswordAttempts.{AuthenticationOutcome}"
    units="attempts" expires_after="2024-02-01">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The number of incorrect passwords entered in Chrome OS
    {AuthenticationSurface} screen until the &quot;{AuthenticationOutcome}&quot;
    outcome. For previous data (grouped for login and lock screen together) see
    &quot;Ash.Login.Lock.NbPasswordAttempts.*&quot;.
  </summary>
  <token key="AuthenticationSurface">
    <variant name="Lock"/>
    <variant name="Login"/>
  </token>
  <token key="AuthenticationOutcome">
    <variant name="UntilFailure"/>
    <variant name="UntilRecovery"/>
    <variant name="UntilSuccess"/>
  </token>
</histogram>

<histogram base="true" name="Ash.Overview.AnimationSmoothness.Close" units="%"
    expires_after="2024-02-20">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>omrilio@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Relative smoothness of animations when closing a window, recorded when the
    animation completes. 100% represents ideally smooth 60 frames per second.
  </summary>
</histogram>

<histogram name="Ash.Overview.AnimationSmoothness.Enter{OverviewAnimationMode}"
    units="%" expires_after="2024-02-07">
  <owner>achuith@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Relative smoothness of animations when entering overview mode, recorded when
    the animation completes. 100% represents ideally smooth 60 frames per
    second. {OverviewAnimationMode}
  </summary>
  <token key="OverviewAnimationMode" variants="OverviewAnimationMode"/>
</histogram>

<histogram name="Ash.Overview.AnimationSmoothness.Exit{OverviewAnimationMode}"
    units="%" expires_after="2024-02-07">
  <owner>achuith@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Relative smoothness of animations when exiting overview mode, recorded when
    the animation completes. 100% represents ideally smooth 60 frames per
    second. {OverviewAnimationMode}
  </summary>
  <token key="OverviewAnimationMode" variants="OverviewAnimationMode"/>
</histogram>

<histogram name="Ash.Overview.ArrowKeyPresses" units="units"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The number of times the arrow keys are pressed in overview mode per session,
    i.e. between bringing up overview mode and ending it. This is only measured
    for the sessions that end by selecting a window with the enter key.
  </summary>
</histogram>

<histogram name="Ash.Overview.EndAction" enum="OverviewEndAction"
    expires_after="2024-02-04">
  <owner>minch@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when exiting overview mode. Recording the reasons for ending
    overview mode. E.g, pressing the overview button at status area.
  </summary>
</histogram>

<histogram name="Ash.Overview.Enter.PresentationTime" units="ms"
    expires_after="2024-08-14">
  <owner>sammiequon@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the overview enter event was received and successfully processed
    to when the next frame is shown to the user.
  </summary>
</histogram>

<histogram name="Ash.Overview.Exit.PresentationTime" units="ms"
    expires_after="2024-08-14">
  <owner>sammiequon@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the overview exit event was received and successfully processed to
    when the next frame is shown to the user.
  </summary>
</histogram>

<histogram name="Ash.Overview.Items" units="units" expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The number of items (single windows or groups of windows such as panels) in
    the overview mode, present at the start of each session.
  </summary>
</histogram>

<histogram name="Ash.Overview.KeyPressesOverItemsRatio" units="%"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The ratio between the arrow key presses and the number of overview items,
    expressed as a percentage for a single session. Recorded when an overview
    session is exited after selecting a highlighted overview item.
  </summary>
</histogram>

<histogram name="Ash.Overview.OverviewClosedItems" units="units"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The number of items closed from the window overview for a single session.
    Recorded when exiting an overview session.
  </summary>
</histogram>

<histogram name="Ash.Overview.Scroll.PresentationTime.MaxLatency.TabletMode"
    units="ms" expires_after="2024-01-10">
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Maximum latency of the presentation time for scrolling the overview grid in
    overview mode for a scrolling session.
  </summary>
</histogram>

<histogram name="Ash.Overview.Scroll.PresentationTime.TabletMode" units="ms"
    expires_after="2024-01-10">
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Presentation time for scrolling the overview grid in overview mode. Each
    time the grid is updated by a scroll, the time it takes to update the new
    visuals onto the screen is updated.
  </summary>
</histogram>

<histogram name="Ash.Overview.SelectionDepth" units="items"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    When a window is selected in overview mode, records that window's position
    in the global MRU ordering. 1 represents the most-recently used window, 2
    represents the next most-recently used window, and so on.
  </summary>
</histogram>

<histogram name="Ash.Overview.StartAction" enum="OverviewStartAction"
    expires_after="2024-02-04">
  <owner>minch@chromium.org</owner>
  <owner>janetmac@chromium.org</owner>
  <summary>
    Emitted when entering overview mode. Recording the reasons for starting
    overview mode. E.g, pressing the overview button at status area.
  </summary>
</histogram>

<histogram name="Ash.Overview.TimeBetweenActiveWindowChanges" units="seconds"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The amount of time between endings of overview mode sessions which were
    caused by the user selecting a window which was not previously active. Only
    recorded on the second and later times after startup that the user selected
    a window which was not previously active.
  </summary>
</histogram>

<histogram name="Ash.Overview.TimeBetweenUse" units="ms"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The amount of time between uses of overview mode, recorded when overview
    mode is entered. Only recorded on the second and later times after startup
    that the user entered overview mode.
  </summary>
</histogram>

<histogram name="Ash.Overview.TimeInOverview" units="ms"
    expires_after="2024-06-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The amount of time spent in overview mode. Overview mode is engaged by
    pressing the overview accelerator, overview button tray or swiping up from
    the shelf in tablet mode. The time is measured from the moment the windows
    begin animating to a thumbnail size preview to when a window is selected or
    selection is canceled. Recorded when an overview session is exited, before
    the exit animation starts.
  </summary>
</histogram>

<histogram base="true" name="Ash.Overview.WindowDrag.PresentationTime"
    units="ms" expires_after="2024-04-16">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>Presentation time for dragging a window in overview mode.</summary>
</histogram>

<histogram base="true"
    name="Ash.Overview.WindowDrag.PresentationTime.MaxLatency" units="ms"
    expires_after="2024-04-16">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    Maximum latency of the presentation time for dragging a window in overview
    mode.
  </summary>
</histogram>

<histogram name="Ash.Overview.WindowDrag.Workflow" enum="OverviewDragAction"
    expires_after="2024-03-24">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Recorded when a drag from overview (not from the top or shelf) is completed,
    and when an overview item is closed by vertically swiping or flinging (even
    if you fling without dragging).
  </summary>
</histogram>

<histogram name="Ash.Peripheral.ConnectivityResults"
    enum="PeripheralConnectivityResult" expires_after="2024-08-21">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>jthies@chromium.org</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    The connectivity results of when the user plugs in a Thunderbolt/USB4
    peripheral to their Chrome OS device. This is recorded for only devices that
    support Thunderbolt/USB4 connectivity. Gets recorded every time a
    Thunderbolt/USB4 peripheral is plugged in. This histogram is based off of
    the obsolete Ash.PciePeripheral.ConnectivityResults histogram and also
    includes invalid cable detection from the Chrome OS type-c daemon.

    Warning: this histogram was expired from 2022-12-31 to 2023-08-21; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.PersistentWindow.NumOfWindowsRestoredOnDisplayAdded"
    units="units" expires_after="2024-03-24">
  <owner>minch@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>yunchengs@google.com</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    The number of windows restored in multi-display scenario, such as due to
    disconnecting and reconnecting display, enabling and disabling mirror mode,
    entering and leaving dock mode. Zero is not recorded.
  </summary>
</histogram>

<histogram name="Ash.PersistentWindow.NumOfWindowsRestoredOnScreenRotation"
    units="units" expires_after="2024-01-20">
  <owner>minch@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>yunchengs@google.com</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    Emits the number of windows bounds restored when rotating the screen back to
    the previous screen orientation. Zero is not recorded.
  </summary>
</histogram>

<histogram name="Ash.Personalization.Ambient.GooglePhotosPreviewsLoadTime"
    units="ms" expires_after="2024-02-04">
  <owner>cowmoo@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a request to load ambient mode google photos albums preview
    images completes, but only upon first page load. This roughly corresponds to
    user perceived time it takes to load the ambient preview section of
    Personalization App. Does not emit if a user opens Personalization App onto
    a page that does not load google photos albums previews. Does not emit
    unless the user already has ambient mode enabled and Google Photos selected
    as the source upon first opening Personalization App.
  </summary>
</histogram>

<histogram name="Ash.Personalization.AmbientMode.AnimationTheme2"
    enum="AmbientModeAnimationTheme" expires_after="2024-03-03">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user selects an animation theme in screensaver subpage or
    when screensaver is first enabled. In the latter case, the theme is recorded
    here even without the user explicitly selecting it in the screensaver
    subpage. The theme in this case will either be the default chosen by the
    system, or the theme that the user had selected when they last disabled
    screensaver.
  </summary>
</histogram>

<histogram name="Ash.Personalization.AmbientMode.OptIn" enum="BooleanHit"
    expires_after="2024-03-17">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user presses the `Turn on` button on ambient preview to
    enable screen saver.
  </summary>
</histogram>

<histogram name="Ash.Personalization.AmbientMode.ScreenSaverDuration"
    enum="AmbientModeDurationOption" expires_after="2024-04-05">
  <owner>pzliu@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user selects a new screen saver duration option.
  </summary>
</histogram>

<histogram name="Ash.Personalization.AmbientMode.Video2"
    enum="AmbientModeVideo" expires_after="2024-03-12">
  <owner>jasontt@chromium.org</owner>
  <owner>esum@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user selects the video theme, selects a new video in the
    screensaver subpage, or enables screensaver with a video theme automatically
    active. The latter can happen if a video theme is the default on that
    particular device model, or if the user had selected a video theme in the
    past when they last disabled screensaver.
  </summary>
</histogram>

<histogram name="Ash.Personalization.App.Duration" units="ms"
    expires_after="2024-04-05">
  <owner>pzliu@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the amount of time a user spends in the Personalization App on each
    visit.
  </summary>
</histogram>

<histogram name="Ash.Personalization.DynamicColor.ColorScheme.Settled"
    enum="PersonalizationDynamicColorColorScheme" expires_after="2024-04-05">
  <owner>ericamlee@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the color scheme that the user has settled on. Emitted once for
    every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Personalization.DynamicColor.ColorSchemeButton"
    enum="PersonalizationDynamicColorColorScheme" expires_after="2024-04-05">
  <owner>ericamlee@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user clicks a button to choose a color scheme for dynamic
    color in personalization hub.
  </summary>
</histogram>

<histogram name="Ash.Personalization.DynamicColor.StaticColor.Settled"
    enum="PersonalizationDynamicColorStaticColor" expires_after="2024-04-05">
  <owner>ericamlee@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the static color that the user has settled on. Emitted once for
    every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Personalization.DynamicColor.StaticColorButton"
    enum="PersonalizationDynamicColorStaticColor" expires_after="2024-04-03">
  <owner>ericamlee@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user clicks a static color button for dynamic color in
    personalization hub.
  </summary>
</histogram>

<histogram name="Ash.Personalization.DynamicColor.ToggleButton"
    enum="BooleanEnabled" expires_after="2024-04-03">
  <owner>ericamlee@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user clicks the toggle button to enable or disable dynamic
    color in personalization hub.
  </summary>
</histogram>

<histogram name="Ash.Personalization.EntryPoint"
    enum="PersonalizationEntryPoint" expires_after="2024-03-17">
  <owner>thuongphan@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records which entry point is used to access Personalization Hub. Emitted
    every time Personalization hub is accessed.
  </summary>
</histogram>

<histogram name="Ash.Personalization.KeyboardBacklight.Color"
    enum="PersonalizationKeyboardBacklightColor" expires_after="2024-02-25">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user selects a keyboard backlight color in personalization
    hub.
  </summary>
</histogram>

<histogram name="Ash.Personalization.KeyboardBacklight.Color.Settled"
    enum="PersonalizationKeyboardBacklightColor" expires_after="2024-02-25">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the keyboard backlight color that the user has settled on. Emitted
    once for every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Personalization.KeyboardBacklight.DisplayType.Settled"
    enum="PersonalizationKeyboardBacklightDisplayType"
    expires_after="2024-03-28">
  <owner>thuongphan@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the display type of keyboard backlight color that the user has
    settled on. Emitted once for every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Personalization.KeyboardBacklight.OpenZoneCustomization"
    units="BooleanHit" expires_after="2024-03-20">
  <owner>thuongphan@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted every time the user selects 'Customize' button to open zone
    customization dialog to view or set zone colors, even when no zone color
    changed.
  </summary>
</histogram>

<histogram name="Ash.Personalization.KeyboardBacklight.WallpaperColor.Valid"
    enum="BooleanValid" expires_after="2023-12-24">
  <obsolete>
    Deprecated July 2023. See the new metrics
    Ash.Personalization.KeyboardBacklight.WallpaperColor.Valid2.
  </obsolete>
<!-- TODO(b/293605781): Remove once there are data for Ash.Personalization.KeyboardBacklight.WallpaperColor.Valid2 on stable channel. -->

  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when the keyboard backlight is updated to a new wallpaper extracted
    color. Non transparent colors are considered valid.
  </summary>
</histogram>

<histogram name="Ash.Personalization.KeyboardBacklight.WallpaperColor.Valid2"
    enum="BooleanValid" expires_after="2024-07-26">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when the wallpaper extracted color is available and the keyboard
    backlight selection is updated to be wallpaper color. Only non transparent
    colors are considered valid.
  </summary>
</histogram>

<histogram
    name="Ash.Personalization.KeyboardBacklight.ZoneColors.Zone{ZoneIdx}.Settled"
    enum="PersonalizationKeyboardBacklightColor" expires_after="2024-03-25">
  <owner>thuongphan@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the keyboard backlight color for zone {ZoneIdx} that the user has
    settled on. Emitted once for every UMA upload if the user currently uses
    customized zone colors for keyboard backlight.
  </summary>
  <token key="ZoneIdx">
    <variant name="1" summary="Zone 1"/>
    <variant name="2" summary="Zone 2"/>
    <variant name="3" summary="Zone 3"/>
    <variant name="4" summary="Zone 4"/>
    <variant name="5" summary="Zone 5"/>
  </token>
</histogram>

<histogram name="Ash.Personalization.Path" enum="PersonalizationPath"
    expires_after="2024-02-25">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user navigates to a valid path in personalization hub.
  </summary>
</histogram>

<histogram name="Ash.Personalization.Theme.ColorMode"
    enum="PersonalizationThemeColorMode" expires_after="2024-02-25">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Emitted when a user selects a theme button in personalization hub.
  </summary>
</histogram>

<histogram name="Ash.PhantomWindowController.Show.PresentationTime" units="ms"
    expires_after="2024-08-14">
  <owner>sammiequon@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm-corexp@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when show phantom window was received and successfully processed to
    when the next frame is shown to the user. The phantom window is shown to
    give users an indication of the window bounds of the next state. For
    example, when dragging a window to the left side of the display, the phantom
    window will take up roughly the left half of the work area to indicate the
    bounds of the window, if the drag is completed.
  </summary>
</histogram>

<histogram name="Ash.Pip.AndroidPipUseTime" units="ms"
    expires_after="2024-03-10">
  <owner>takise@chromium.org</owner>
  <owner>linben@chromium.org</owner>
  <summary>
    How long Android PIP was used for, upon ending the session.

    This metric was expired between April 2022 and July 2023 and may be missing
    data.
  </summary>
</histogram>

<histogram name="Ash.Pip.Events" enum="AshPipEvents" expires_after="2024-03-10">
  <owner>takise@chromium.org</owner>
  <owner>linben@chromium.org</owner>
  <summary>
    Various individiual Picture-in-picture related events. See AshPipEvents.

    This metric was expired between April 2022 and July 2023 and may be missing
    data.
  </summary>
</histogram>

<histogram name="Ash.PowerSoundsController.PluggedInBatteryLevel" units="%"
    expires_after="2024-02-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>nupurjain@google.com</owner>
  <summary>
    Record the battery level when a charger is connected and the battery status
    is from discharging to charging.
  </summary>
</histogram>

<histogram name="Ash.PowerSoundsController.UnpluggedBatteryLevel" units="%"
    expires_after="2024-02-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>nupurjain@google.com</owner>
  <summary>
    Record the battery level when a charger is unplugged and the battery status
    is from charging to discharging.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.AnimationSmoothness" units="%"
    expires_after="2024-09-19">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the privacy indicators view animation. This occurs
    when an app is accessing camera/microphone or screen sharing and a green
    indicator appears on the status area button. Measured via a throughtput
    tracker.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.AppAccessUpdate.Type" enum="AppType"
    expires_after="2024-03-24">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the type of the app that change the status of camera/microphone
    access. Emitted when there is any change in the status of camera/microphone
    access.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.IndicatorShowsDuration" units="ms"
    expires_after="2023-11-19">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the duration of showing for privacy indicators. Emitted when the
    privacy indicators view is hidden after a show in the status tray.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.LaunchSettings" enum="AppType"
    expires_after="2024-03-24">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the type of the app that associate with the privacy indicators
    notification whose settings button is clicked. Emitted when the user click
    on the settings button of that notification.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.NumberOfAppsAccessingCamera"
    units="count" expires_after="2024-01-21">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the number of apps that access the camera at the same time. Emitted
    when there are one or more apps accessing the camera.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.NumberOfAppsAccessingMicrophone"
    units="count" expires_after="2024-09-19">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the number of apps that access the microphone at the same time.
    Emitted when there are one or more apps accessing the microphone.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.NumberOfRepeatedShows" units="shows"
    expires_after="2024-03-24">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the number of times that the privacy indicator repeatedly shows per
    100ms. Emitted when the sequence of consecutive shows in the privacy
    indicator has finished.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.NumberOfShowsPerSession" units="shows"
    expires_after="2024-01-21">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the number of times that the tray indicator shows in the tray per
    session. Emitted when there is a change in user session.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.ShowType" enum="PrivacyIndicatorsType"
    expires_after="2024-03-24">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the type of privacy indicators shown. Emitted when the privacy
    indicators view is shown in the status tray.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.Source" enum="PrivacyIndicatorsSource"
    expires_after="2024-03-03">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the source that use privacy indicators. Emitted when there's a client
    calling into the function that updates the privacy indicators.
  </summary>
</histogram>

<histogram name="Ash.PrivacyIndicators.{Icon}.AnimationSmoothness" units="%"
    expires_after="2024-09-19">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the privacy indicators {Icon} fade in animation.
    This occurs when an app is accessing camera/microphone or screen sharing and
    a green indicator appears on the status area button.
  </summary>
  <token key="Icon">
    <variant name="CameraIcon" summary="Camera icon"/>
    <variant name="MicrophoneIcon" summary="Microphone icon"/>
    <variant name="ScreenshareIcon" summary="Screen share icon"/>
  </token>
</histogram>

<histogram name="Ash.Projector.CreationFlow.{TabletOrClamshell}"
    enum="ProjectorCreationFlow" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks how the user progresses through the creation flow in
    {TabletOrClamshell}, recorded each time the user starts or ends a screencast
    recording.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.Projector.CreationFlowError.{TabletOrClamshell}"
    enum="ProjectorCreationFlowError" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks the most common errors during the screencast recording creation
    process in {TabletOrClamshell}, recorded each time an error occurs.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.Projector.MarkerColor.{TabletOrClamshell}"
    enum="ProjectorMarkerColor" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Recorded whenever the user chooses a marker color on the Projector toolbar
    in {TabletOrClamshell}. This metric records when the user changes the color
    or when the annotator toggles on, to record the saved last used color.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.Projector.OnDeviceToServerSpeechRecognitionFallbackReason"
    enum="OnDeviceToServerSpeechRecognitionFallbackReason"
    expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Records the fallback reason of using server based speech recognition instead
    of on device speech recogniton. This metric is recorded on server based
    speech recognition in projector session.
  </summary>
</histogram>

<histogram name="Ash.Projector.PendingScreencastBatchIOTaskDuration" units="ms"
    expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks the processing time of batch pending screencast files validation on
    IO thread. Recorded each time when IO task finishes.
  </summary>
</histogram>

<histogram name="Ash.Projector.PendingScreencastChangeInterval" units="ms"
    expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks the interval between UI updates during screencast uploading. Recorded
    at each pending screencast's UI change except for the first one of current
    uploading phase.
  </summary>
</histogram>

<histogram name="Ash.Projector.PolicyChangeHandlingError"
    enum="ProjectorPolicyChangeHandlingError" expires_after="2023-10-17">
  <obsolete>
    Deprecated in M116. No longer needed since no error reported and converted
    to CHECK.
  </obsolete>
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Records the nullptr error that potentially caused a crash when handling
    policy changes.
  </summary>
</histogram>

<histogram name="Ash.Projector.SpeechRecognitionEndState.{Location}"
    enum="SpeechRecognitionEndState" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    For a recognition session happening at {Location}, this histogram records
    the recognition status at the end of the session.
  </summary>
  <token key="Location" variants="RecognizerLocation"/>
</histogram>

<histogram name="Ash.Projector.Toolbar.{TabletOrClamshell}"
    enum="ProjectorToolbar" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Recorded whenever the user opens, closes, or presses a button the Projector
    toolbar in {TabletOrClamshell}.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.Projector.TranscriptsCount.{TabletOrClamshell}"
    units="Number of transcripts" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks the number of transcripts generated during a recording in
    {TabletOrClamshell}, recorded each time the metadata file saved successfully
    after a recording ends.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.QuickSettings.Button.Activated" enum="QsButtonCatalogName"
    expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when any button in the quick settings view is activated.
  </summary>
</histogram>

<histogram name="Ash.QuickSettings.FeaturePod.{FeaturePodBehavior}"
    enum="QsFeatureCatalogName" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when an action is done on any FeaturePod in the quick settings
    view. {FeaturePodBehavior} can be a toggle to enable the feature, toggle to
    disable this feature, going to the feature's detailed page, or making the
    button visible.
  </summary>
  <token key="FeaturePodBehavior">
    <variant name="DiveIn" summary="Go to the feature's detailed page"/>
    <variant name="ToggledOff" summary="Toggle to disable the feature"/>
    <variant name="ToggledOn" summary="Toggle to enable the feature"/>
    <variant name="Visible" summary="The feature pod is shown"/>
  </token>
</histogram>

<histogram name="Ash.QuickSettings.PageCountOnClose" units="pages"
    expires_after="2024-07-30">
  <owner>etuck@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The number of quick settings pagination pages in the new quick settings UI.
    This metric is recorded each time the quick settings are closed. Note that
    this will also get recorded when the user opens and then closes the status
    area calendar (even if they never viewed the quick settings), until
    b/285280977 is fixed.
  </summary>
</histogram>

<histogram name="Ash.QuickSettings.Slider.{SliderBehavior}"
    enum="QsSliderCatalogName" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when an action is done on any slider in the quick settings view or
    in the slider bubble. {SliderBehavior} can be changing the value or toggling
    to enable the feature.
  </summary>
  <token key="SliderBehavior">
    <variant name="DisableFeature" summary="Toggle to disable the feature"/>
    <variant name="Down" summary="Turn the slider value down"/>
    <variant name="EnableFeature" summary="Toggle to enable the feature"/>
    <variant name="Up" summary="Turn the slider value up"/>
  </token>
</histogram>

<histogram name="Ash.QuickSettings.UserJourneyTime" units="ms"
    expires_after="2024-07-30">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records time user spent in Quick Settings opened through the Status Area
    button. Starts measuring time whenever the QS bubble is opened, and records
    metric when the QS bubble is closed.
  </summary>
</histogram>

<histogram name="Ash.QuickSettings.{DeviceMode}.FeaturePodCountOnOpen"
    units="count" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The number of feature pods (e.g. WiFi, Bluetooth, IME, Accessibility, etc.)
    in the system tray quick settings when it is opened, including pods that
    overflow to other pages. This metric is logged by 2 different types of
    {DeviceMode}: &quot;Clamshell&quot; and &quot;Tablet&quot;. This metric gets
    recorded for both the new quick settings view and the old unified system
    view, see
    &quot;Ash.UnifiedSystemView.{DeviceMode}.FeaturePodCountOnOpen&quot; which
    is the metric for the old view.
  </summary>
  <token key="DeviceMode">
    <variant name="Clamshell" summary="Regular mode"/>
    <variant name="Tablet" summary="Tablet mode"/>
  </token>
</histogram>

<histogram name="Ash.Report.IsPsm{PsmUseCase}OprfResponseBodySet"
    enum="BooleanSuccess" expires_after="2024-10-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM OPRF response for {PsmUseCase} contains a value.
    This network request is called after browser start if the last ping
    timestamp of the Chromebook is not known. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
</histogram>

<histogram name="Ash.Report.IsPsm{PsmUseCase}OprfResponseParsedCorrectly"
    enum="BooleanSuccess" expires_after="2024-10-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM OPRF response for {PsmUseCase} is able to be
    parsed correctly. This network request is called after browser start if the
    last ping timestamp of the Chromebook is not known. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
</histogram>

<histogram name="Ash.Report.PreservedFileReadAndParsed" enum="BooleanSuccess"
    expires_after="2024-10-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record whether the preserved file read and successfully parsed all known
    last active UTC dates. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.PreservedFileWritten" enum="BooleanSuccess"
    expires_after="2024-10-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record whether the preserved file was written successfully over DBus for
    last active UTC dates. This histogram is recorded after browser start up,
    when the device attempts to read the preserved file storing the last known
    UTC dates. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.PsmQueryMembershipResult" enum="BooleanKnown"
    expires_after="2024-10-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record whether the private set membership query response contains queried ID
    that is known or not known. This histogram is recorded after the check
    membership request is fulfilled by the Fresnel server. The response code
    indicates whether the queried ID is present in the privacy complaint PSM
    database. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.Psm{PsmUseCase}{PsmRequest}ResponseNetErrorCode"
    enum="NetErrorCodes" expires_after="2024-10-01">
  <owner>hirthanan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Emit the NetError code associated with the {PsmUseCase} {PsmRequest}
    response. Network requests are called after the browser is instantiated and
    the device is connected to the internet. Enum for histogram will contain 0 -
    899. Ranges are defined //net/base/net_error_list.h;l=14-23. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
  <token key="PsmRequest" variants="PsmRequest"/>
</histogram>

<histogram name="Ash.Report.{PsmUseCase}CheckMembershipCases"
    enum="ReportCheckMembershipResponseCases" expires_after="2024-10-01">
  <owner>qianwan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the number of different failed/success cases for the {PsmUseCase}
    check membership process. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
</histogram>

<histogram name="Ash.Rotation.AnimationSmoothness" units="%"
    expires_after="2024-04-16">
  <owner>xiyuan@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Relative smoothness of animations when rotating screen. 100% represents
    ideally smooth 60 frames per second. 50% represents only 30 frames per
    second is achieved during the animations. 0% should not happen. This metric
    is recorded exactly once when the user rotates the screen.
  </summary>
</histogram>

<histogram name="Ash.Search.DriveFileSuggestDataValidation.Status"
    enum="DriveFileSuggestDataValidationStatus" expires_after="2023-08-12">
  <owner>andrewxu@chromium.org</owner>
  <summary>
    The outcome of drive file suggestion data validation. Recorded once per
    validation.
  </summary>
</histogram>

<histogram name="Ash.SearchModelUpdateTime.{TabletOrClamshell}" units="ms"
    expires_after="2023-10-01">
  <owner>yulunwu@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <summary>
    Records the time interval between user-initiated search model updates after
    the user starts a search query. Used to record how quickly users update the
    search model in {TabletOrClamshell} after the first keystroke.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.SearchResultUpdateAnimationShortened" enum="Boolean"
    expires_after="2023-11-01">
  <owner>yulunwu@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>tby@google.com</owner>
  <summary>
    Records whether search result animation times were shorted for recent search
    result update animation preemptions. Recorded when productivity launcher
    search containers' results change while result containers are still
    animating.
  </summary>
</histogram>

<histogram
    name="Ash.ServerBasedSpeechRecognition.AudioLengthLeftWhenAudioCaptureEnd"
    units="ms" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Records the length of remaining un-transcribed audio when the audio capture
    stops.
  </summary>
</histogram>

<histogram
    name="Ash.ServerBasedSpeechRecognition.EndOfRecognitionSignalLatency"
    units="ms" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Records the time user needs to wait to get the final speech recognition
    result after audio capture stops.
  </summary>
</histogram>

<histogram name="Ash.ServerBasedSpeechRecognition.ErrorCode"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2024-04-17">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Records the network error or HTTP response code of server based speech
    recognition request when an an error occurred.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Menu.NumItemsEnabledUponSelection" units="Count"
    expires_after="2023-08-13">
  <owner>anasalazar@chromium.org</owner>
  <owner>mmourgos@google.com</owner>
  <summary>
    Tracks the number of menu items that are enabled in a shelf item's secondary
    menu. This metric is only recorded when a menu item is selected.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Menu.SelectedMenuItemIndex" units="Index"
    expires_after="2024-02-08">
  <owner>anasalazar@chromium.org</owner>
  <owner>mmourgos@google.com</owner>
  <summary>
    Tracks the index of the selected menu item in a shelf item's secondary menu.
    This metric is only recorded when a menu item is selected.
  </summary>
</histogram>

<histogram name="Ash.Shelf.NumberOfItems" units="Icons"
    expires_after="2024-03-24">
  <owner>anasalazar@chromium.org</owner>
  <owner>mmourgos@google.com</owner>
  <summary>
    The number of icons in the shelf, not including the App Launcher icon. This
    metric is recorded every 30 minutes.
  </summary>
</histogram>

<histogram name="Ash.Shelf.NumberOfPinnedItems" units="Icons"
    expires_after="2024-02-11">
  <owner>anasalazar@chromium.org</owner>
  <owner>mmourgos@google.com</owner>
  <summary>
    The number of pinned icons in the shelf, not including the App Launcher
    icon. This metric is recorded every 30 minutes.
  </summary>
</histogram>

<histogram name="Ash.Shelf.NumberOfUnpinnedItems" units="Icons"
    expires_after="2024-03-24">
  <owner>anasalazar@chromium.org</owner>
  <owner>mmourgos@google.com</owner>
  <summary>
    The number of unpinned icons in the shelf. This metric is recorded every 30
    minutes.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.CircledPercentage" units="%"
    expires_after="2021-12-12">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The percentage of the screen area circled by the Assistant pen. Recorded
    when the &quot;closed shape&quot; gesture is recognized.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.DeprecateStylusFeaturesToastEvent"
    units="dp" expires_after="2023-04-23">
  <obsolete>
    Deprecated in M111.
  </obsolete>
  <owner>angelaxiao@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Whether or not the user is shown the limitation toast notifying that the
    Assistant stylus features (i.e. what's on my screen) have been deprecated.
    Also considers whether or not the deprecation flag has been set. Recorded
    upon every stylus long press action.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.GestureDuration" units="ms"
    expires_after="2021-12-12">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The duration of an Assistant pen gesture. Recorded at the end of every
    gesture.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.GestureInterval" units="ms"
    expires_after="2021-12-12">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The interval between subsequent Assistant pen gestures within a session.
    Session is defined as the period while the Assistant tool is enabled.
    Recorded at the end of each gesture except for the first one in the session.
    The interval is computed excluding the gesture duration.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.GesturesPerSession" units="units"
    expires_after="2021-12-12">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The number of Assistant pen gestures per session. Session is defined as the
    period while the Assistant tool is enabled. Recorded at the end of the
    session.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.GesturesPerSession.Recognized"
    units="units" expires_after="2021-12-12">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The number of recognized Assistant pen gestures per session. Session is
    defined as the period while the Assistant tool is enabled. Recorded at the
    end of the session.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.GestureType"
    enum="AssistantGestureType" expires_after="2023-05-01">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The type of the Assistant pen gesture. Recorded at the end of each gesture.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Assistant.HighlighterLength" units="dp"
    expires_after="2021-12-12">
  <obsolete>
    Deprecated in M111. No longer needed since metalayer was deprecated in M110.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The length of a recognized &quot;horizontal stroke&quot; Assistant pen
    gesture. Recorded at the and of the gesture.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.InAssistantMode" units="ms"
    expires_after="2021-12-12">
  <obsolete>
    Kept to view historical data.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The amount of time spent in Palette Assistant mode. Recorded when the
    Assistant mode is exited.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.InLaserPointerMode" units="ms"
    expires_after="2021-12-12">
  <obsolete>
    Kept to view historical data.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The amount of time spend in Palette Laser pointer mode. Recorded when the
    Laser pointer mode is exited.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.InMagnifyMode" units="ms"
    expires_after="2021-12-12">
  <obsolete>
    Kept to view historical data.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The amount of time spend in Palette Magnify mode. Recorded when the Magnify
    mode is exited.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.ModeCancellation"
    enum="PaletteModeCancelType" expires_after="2021-12-12">
  <obsolete>
    Kept to view historical data.
  </obsolete>
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    Tracks the number of times a palette mode is explicitly cancelled or
    switched out of.
  </summary>
</histogram>

<histogram name="Ash.Shelf.ShowStackedHotseat" enum="Boolean"
    expires_after="2024-09-24">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Show stacked hotseat app bar above the shelf button panels/system tray when
    there is no enough space for the app bar.
  </summary>
</histogram>

<histogram name="Ash.Shelf.ShutdownConfirmationBubble.Action"
    enum="ShutdownConfirmationBubbleAction" expires_after="2024-03-24">
  <owner>sherrilin@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Track actions on the shutdown confirmation bubble, if it's opened, dismissed
    or which buttons are clicked.
  </summary>
</histogram>

<histogram
    name="Ash.Shelf.ShutdownConfirmationBubble.TimeToNextBoot.LoginShutdownToPowerUpDuration"
    units="seconds" expires_after="2023-09-10">
  <owner>sherrilin@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Emitted at device start-up if a shut-down was previously initiated from the
    shelf shutdown button. In other words this metric is only recorded if a
    shelf shutdown button was pressed and the device was powered up again soon
    after that.
  </summary>
</histogram>

<histogram name="Ash.Shelf.TimeBetweenWindowMinimizedAndActivatedActions"
    units="ms" expires_after="2020-06-28">
  <owner>tbuckley@chromium.org</owner>
  <summary>
    Tracks the amount of time between a window being minimized by the shelf and
    subsequently activated. In other words this metric is only recorded if a
    shelf button pressed action causes a window to be minimized and the very
    next shelf button pressed action causes the same window to be activated.
  </summary>
</histogram>

<histogram name="Ash.ShelfAlignmentUsage" enum="ShelfAlignmentValue"
    expires_after="never">
<!-- expires-never: Monitors core shelf behavior/usage (the shelf alignment) -->

  <owner>kuscher@google.com</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    The current state of the shelf (alignment) when the shelf launcher is used
    to launch an app/window/etc, this is used instead of log in to give data on
    users that do not lock/unlock or log in frequently.
  </summary>
</histogram>

<histogram name="Ash.ShelfIcon.AnimationSmoothness{ShelfIconAnimationType}"
    units="%" expires_after="2021-03-30">
  <owner>andrewxu@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Relative smoothness of animations of the shelf icons. 100% represents
    ideally smooth 60 frames per second. Recorded when shelf icon animations are
    completed, including icon move, icon fade-in and icon fade-out.
    {ShelfIconAnimationType}
  </summary>
  <token key="ShelfIconAnimationType">
    <variant name=""/>
    <variant name=".FadeIn" summary="Shelf icon fade-in animation"/>
    <variant name=".FadeOut" summary="Shelf icon fade-out animation"/>
    <variant name=".Move" summary="Shelf icon move animation"/>
  </token>
</histogram>

<histogram name="Ash.ShortcutCustomization.AddAccelerator.{ActionName}"
    units="Shortcuts" expires_after="2024-08-17">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    Record which accelerator is added by the user for {ActionName}. A shortcut
    is encoded as an int where the high 16 bits represent all the modifiers
    used, and the 0-15 bits represent which key is used.
  </summary>
  <token key="ActionName" variants="AcceleratorActionName"/>
</histogram>

<histogram name="Ash.ShortcutCustomization.CustomizationAction"
    enum="ShortcutCustomizationAction" expires_after="2024-08-17">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    Tracks the number of times a shortcut customization action has taken place
    from the Key Shortcuts App.
  </summary>
</histogram>

<histogram
    name="Ash.ShortcutCustomization.RemoveDefaultAccelerator.{ActionName}"
    units="Shortcuts" expires_after="2024-08-17">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-peripherals@google.com</owner>
  <summary>
    Record which default accelerator is removed by the user for {ActionName}. A
    shortcut is encoded as an int where the high 16 bits represent all the
    modifiers used, and the 0-15 bits represent which key is used.
  </summary>
  <token key="ActionName" variants="AcceleratorActionName"/>
</histogram>

<histogram name="Ash.Smoothness.PercentDroppedFrames_1sWindow2{Stage}"
    units="%" expires_after="2024-01-29">
  <owner>xiyuan@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Tracks the percent of dropped frames in a 1 second sliding window.

    PercentDroppedFrames is measured by tracking the number of frames which were
    not displayed on screen out of the total number of frames expected to be
    produced and displayed. In other words, the lower this number is, the
    smoother experience.

    The &quot;.InSession&quot; covers the time of 1 minute beyond into user
    sessions. The 1 minute timeline is picked based on
    &quot;Ash.Login.TimeUntilGoodADF&quot; histogram, where about 93-94% user
    sessions fall under the 1 minute bar.

    The metric is reported {Stage}.
  </summary>
  <token key="Stage">
    <variant name="" summary="on every frame"/>
    <variant name=".InSession"
        summary="on every frame after 1 min into session"/>
  </token>
</histogram>

<histogram name="Ash.Smoothness.PercentDroppedFrames_1sWindow{Stage}" units="%"
    expires_after="2023-10-30">
  <obsolete>
    This metric is reported on every dropped frame instead of every frame. It is
    deprecated in favor of Ash.Smoothness.PercentDroppedFrames_1sWindow2.
  </obsolete>
  <owner>xiyuan@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Tracks the percent of dropped frames in a 1 second sliding window.

    PercentDroppedFrames is measured by tracking the number of frames which were
    not displayed on screen out of the total number of frames expected to be
    produced and displayed. In other words, the lower this number is, the
    smoother experience.

    The metric is reported {Stage}.
  </summary>
  <token key="Stage">
    <variant name="" summary="all the time"/>
    <variant name=".BeforeLogin" summary="before login"/>
    <variant name=".DuringLogin"
        summary="after cryptohome mount but before login animations finish"/>
    <variant name=".InSession" summary="after post-login animation finishes"/>
    <variant name=".InSession2"
        summary="after observing good ADF for 5 seconds"/>
  </token>
</histogram>

<histogram name="Ash.Snap.MinimizeTwoWindowsDuration" units="seconds"
    expires_after="2024-01-14">
  <owner>sophiewen@chromium.org</owner>
  <owner>michelefan@chromium.org</owner>
  <summary>
    The elapsed time between a first snapped window getting minimized and a
    second snapped window getting minimized. Starts recording when a window
    changes state from snapped to minimized. Ends recording when a second window
    changes state from snapped to minimized, or if the first window is no longer
    snapped on the same side, records the maximum value of 50 hours (18000
    seconds).
  </summary>
</histogram>

<histogram name="Ash.Snap.SnapTwoWindowsDuration" units="seconds"
    expires_after="2024-01-14">
  <owner>sophiewen@chromium.org</owner>
  <owner>michelefan@chromium.org</owner>
  <summary>
    The elapsed time between a first window getting snapped and a second window
    getting snapped on the other side. Starts recording when one window gets
    snapped. Ends recording when another window is snapped on the other side of
    the screen, or if the first window is no longer snapped on the same side,
    records the maximum value of 50 hours (18000 seconds).
  </summary>
</histogram>

<histogram name="Ash.SpeechRecognitionSessionLength.{Location}" units="ms"
    expires_after="2024-02-20">
  <owner>dorianbrandon@google.com</owner>
  <owner>ligeng@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    The length of the speech recognition session happening on {Location}. This
    histogram records the length at the end of the session.
  </summary>
  <token key="Location" variants="RecognizerLocation"/>
</histogram>

<histogram name="Ash.SplitView.DeviceOrientation.{DeviceUIMode}"
    enum="DeviceOrientation" expires_after="2024-07-27">
  <owner>zxdan@chromium.org</owner>
  <owner>afakhry@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at entry to split view mode and each time the orientation or the
    device mode changes to report whether the device is in clamshell mode or
    tablet mode and whether the orientation is landscape or portrait.
  </summary>
  <token key="DeviceUIMode">
    <variant name="ClamshellMode"/>
    <variant name="TabletMode"/>
  </token>
</histogram>

<histogram name="Ash.SplitView.EntryPoint.DeviceOrientation"
    enum="DeviceOrientation" expires_after="2024-02-25">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at the entry point of split view mode, to report the device
    orientation is in landscape mode (left and right) or portrait mode (top and
    bottom).
  </summary>
</histogram>

<histogram name="Ash.SplitView.EntryPoint.DeviceUIMode" enum="DeviceMode"
    expires_after="2024-08-21">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at the entry point of split view mode, to report the device is in
    clamshell mode or tablet mode.
  </summary>
</histogram>

<histogram name="Ash.SplitView.OrientationInSplitView" enum="DeviceOrientation"
    expires_after="2023-11-12">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted when device orientation changes in split view, to report the device
    orientation is in landscape mode (left and right) or portrait mode (top and
    bottom).
  </summary>
</histogram>

<histogram name="Ash.SplitView.ResizeWindowCount.{DeviceUIMode}" units="count"
    expires_after="2024-04-01">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at the end of split view mode to report the number of resizing
    window operations in split view mode session for both clamshell and tablet
    mode.
  </summary>
  <token key="DeviceUIMode">
    <variant name="ClamshellMode"/>
    <variant name="TabletMode"/>
  </token>
</histogram>

<histogram name="Ash.SplitView.SwapWindowCount" units="count"
    expires_after="2024-04-01">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at the end of split view mode to report the number of swap window
    operations in split view mode session.
  </summary>
</histogram>

<histogram name="Ash.SplitView.SwapWindowSource"
    enum="SplitViewSwapWindowsSource" expires_after="2024-04-10">
  <owner>michelefan@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Recorded whenever two windows in split view are swapped. The recorded enum
    indicates where the swap operation is triggered, which can either be from
    double tap or swap button on the snap group expanded menu.
  </summary>
</histogram>

<histogram name="Ash.SplitView.TimeInMultiDisplaySplitView" units="ms"
    expires_after="2024-07-02">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    The amount of time that the user spent in multi-display split view mode,
    meaning that split view is active on more than one display. The time is
    measured from when the number of displays in split view becomes more than
    one to when it drops back down to one.
  </summary>
</histogram>

<histogram name="Ash.SplitView.TimeInSplitView" units="ms"
    expires_after="2024-03-17">
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromim.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    The amount of time that the user spent in split view mode. The time is
    measured from the moment a window is snapped to one side of the screen to
    when split view mode is ended.
  </summary>
</histogram>

<histogram name="Ash.SplitView.{EngagementTime}.{DeviceUIMode}" units="ms"
    expires_after="2024-04-01">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at the end of split view mode or the point of switching between
    clamshell mode and tablet mode in split view, to report the engagement time
    of general split view and multi-display split view in both clamshell mode
    and tablet mode.
  </summary>
  <token key="EngagementTime">
    <variant name="TimeInMultiDisplaySplitScreen"/>
    <variant name="TimeInSplitScreen"/>
  </token>
  <token key="DeviceUIMode">
    <variant name="ClamshellMode"/>
    <variant name="TabletMode"/>
  </token>
</histogram>

<histogram name="Ash.SplitViewResize.AnimationSmoothness.DividerAnimation"
    units="%" expires_after="2024-04-01">
  <owner>sammiequon@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Relative smoothness of animation when releasing the split view divider,
    recorded when the animation completes. 100% represents ideally smooth 60
    frames per second.
  </summary>
</histogram>

<histogram
    name="Ash.SplitViewResize.PresentationTime.MaxLatency{SplitViewResizeModes}"
    units="ms" expires_after="2024-02-07">
  <owner>xdai@chromium.org</owner>
  <owner>omrilio@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Maximum latency of the presentation time while resizing one or two split
    view windows. {SplitViewResizeModes}
  </summary>
  <token key="SplitViewResizeModes" variants="SplitViewResizeModes"/>
</histogram>

<histogram name="Ash.SplitViewResize.PresentationTime{SplitViewResizeModes}"
    units="ms" expires_after="2024-02-20">
  <owner>xdai@chromium.org</owner>
  <owner>omrilio@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Presentation time while resizing one or two split view windows.
    {SplitViewResizeModes}
  </summary>
  <token key="SplitViewResizeModes" variants="SplitViewResizeModes"/>
</histogram>

<histogram name="Ash.StateKeysPresent" enum="BooleanPresent"
    expires_after="2023-03-13">
  <obsolete>
    Deprecated Mar 2023 because of the b:273278497. The data logged under this
    histogram is meaningless. Check Ash.StateKeysPresent2 for new data.
  </obsolete>
  <owner>igorcov@chromium.org</owner>
  <owner>vsavu@google.com</owner>
  <summary>
    The presense of state keys on first device policy fetch response. It is
    expected for state keys to be present. The histogram is logged only in case
    of successful device policy fetch response. Warning: This histogram was
    expired from 2022-07-03 to 2022-07-05; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.StateKeysPresent2" enum="BooleanPresent"
    expires_after="2024-03-12">
  <owner>igorcov@chromium.org</owner>
  <owner>vsavu@google.com</owner>
  <summary>
    The presense of state keys on first device policy fetch response. It is
    expected for state keys to be present. The histogram is logged only in case
    of successful device policy fetch response. This is replacing the old
    Ash.StateKeysPresent histogram because a bug made that data useless.
  </summary>
</histogram>

<histogram name="Ash.StatusArea.TrayBackgroundView.BounceIn" units="%"
    expires_after="2024-02-05">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the bounce in animation of tray background view. 100%
    represents ideally smooth 60 frames per second. Emitted when animation is
    completed (when the shelf pod/tray background view is completely bounced in
    and shown the tray).
  </summary>
</histogram>

<histogram name="Ash.StatusArea.TrayBackgroundView.FadeIn" units="%"
    expires_after="2024-02-05">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade in animation of tray background view. 100%
    represents ideally smooth 60 frames per second. Emitted when animation is
    completed (when the shelf pod/tray background view is completely faded in
    and shown the tray).
  </summary>
</histogram>

<histogram name="Ash.StatusArea.TrayBackgroundView.Hide" units="%"
    expires_after="2024-02-04">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade in animation of tray background view. 100%
    represents ideally smooth 60 frames per second. Emitted when animation is
    completed (when the shelf pod/tray background view is completely hidden in
    the tray).
  </summary>
</histogram>

<histogram name="Ash.StatusArea.TrayBackgroundView.{State}"
    enum="TrayBackgroundViewCatalogName" expires_after="2024-03-24">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Logged when: Hidden: a TrayBackgroundView's preferred visibility is set to
    false. Shown: a TrayBackgroundView's preferred visibility is set to true.
    Pressed: Logged when a TrayBackgroundView is activated, either showing a
    bubble or handling a custom action. The metric is expired from 2023-01-19 to
    2023-03-15, so it's possible some data is dropped during that time.
  </summary>
  <token key="State">
    <variant name="Hidden"/>
    <variant name="Pressed"/>
    <variant name="Shown"/>
  </token>
</histogram>

<histogram name="Ash.StatusArea.TrayItemView.Hide" units="%"
    expires_after="2024-02-04">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the hide animation of tray item view. 100% represents
    ideally smooth 60 frames per second. Emitted when animation is completed
    (when the tray item is completely hidden in the tray).
  </summary>
</histogram>

<histogram name="Ash.StatusArea.TrayItemView.Show" units="%"
    expires_after="2024-02-04">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the show animation of tray item view. 100% represents
    ideally smooth 60 frames per second. Emitted when animation is completed
    (when the tray item is completely shown in the tray).
  </summary>
</histogram>

<histogram name="Ash.StatusAreaShowBubble.PresentationTime" units="ms"
    expires_after="2024-07-30">
  <owner>leandre@chromium.org</owner>
  <owner>amehfooz@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    Presentation time while opening QuickSettings and Notification Center
    through Status Area button. Emitted when QuickSettings and Notification
    Center are opened and shown.
  </summary>
</histogram>

<histogram name="Ash.Style.ColorPalette.KMeansAlgorithm" enum="BooleanEnabled"
    expires_after="2024-07-13">
  <owner>ericamlee@google.com</owner>
  <owner>skau@google.com</owner>
  <owner>cowmoo@google.com</owner>
  <summary>
    Whether or not to use the kmeans algorithm to determine the user's color
    palette. This metric is recorded once per UMA upload.
  </summary>
</histogram>

<histogram name="Ash.SwipeDownDrag.Tab.PresentationTime.MaxLatency.TabletMode"
    units="ms" expires_after="2023-06-30">
  <owner>xdai@chromium.org</owner>
  <owner>omrilio@chromium.org</owner>
  <summary>
    Maximum latency of the presentation timestamp while dragging a tab in tablet
    mode.
  </summary>
</histogram>

<histogram name="Ash.SwipeDownDrag.Tab.PresentationTime.TabletMode" units="ms"
    expires_after="2023-03-05">
  <owner>xdai@chromium.org</owner>
  <owner>omrilio@chromium.org</owner>
  <summary>Presentation time while dragging a tab in tablet mode.</summary>
</histogram>

<histogram
    name="Ash.SwipeDownDrag.Window.PresentationTime.MaxLatency.TabletMode"
    units="ms" expires_after="2023-06-30">
  <owner>xdai@chromium.org</owner>
  <owner>omrilio@chromium.org</owner>
  <summary>
    Maximum latency of the presentation timestamp while dragging maximized
    window in tablet mode.
  </summary>
</histogram>

<histogram name="Ash.SwipeDownDrag.Window.PresentationTime.TabletMode"
    units="ms" expires_after="2023-06-30">
  <owner>xdai@chromium.org</owner>
  <owner>omrilio@chromium.org</owner>
  <summary>
    Presentation time while dragging maximized window in tablet mode.
  </summary>
</histogram>

<histogram name="Ash.SwipeHomeToOverviewGesture"
    enum="SwipeHomeToOverviewResult" expires_after="2024-03-17">
  <owner>andrewxu@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    Boolean indicating whether a swipe from hotseat on home screen resulted in a
    transition to overview.
  </summary>
</histogram>

<histogram name="Ash.SystemMenu.PercentageOfWorkAreaHeightCoveredByMenu"
    units="%" expires_after="2021-12-12">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The height of the system menu divided by the height of the Ash desktop work
    area; a value over 100% indicates that a portion of the system menu is not
    visible to the user. Recorded each time the menu is opened.
  </summary>
</histogram>

<histogram name="Ash.SystemMenu.Rows" units="rows" expires_after="2021-12-12">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <owner>gzadina@chromium.org</owner>
  <summary>
    The number of user-visible rows in the system menu's default view. Recorded
    each time the menu is opened.
  </summary>
</histogram>

<histogram name="Ash.TabDrag.PresentationTime" units="ms"
    expires_after="2024-05-30">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>yichenz@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Presentation time in ms when a tab is dragged. In clamshell mode, each time
    a tab is dragged within a display, the time it takes to present the new
    frame on screen is recorded. In tablet mode (with webui tab strip enable),
    dragging between displays is precluded, thus each time a tab is dragged, the
    time it takes to present the new frame to screen is recorded.
  </summary>
</histogram>

<histogram name="Ash.TabDrag.PresentationTime.MaxLatency" units="ms"
    expires_after="2024-05-30">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>yichenz@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Maximum presentation time recorded during a tab dragging session in both
    clamshell and tablet mode.
  </summary>
</histogram>

<histogram name="Ash.TabletMode.AnimationSmoothness.Enter" units="%"
    expires_after="2024-02-20">
  <owner>oshima@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <summary>
    Relative smoothness of animations when entering tablet mode, recorded when
    the animation completes. 100% represents ideally smooth 60 frames per
    second.
  </summary>
</histogram>

<histogram name="Ash.TabletMode.AnimationSmoothness.Exit" units="%"
    expires_after="2024-01-10">
  <owner>oshima@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <summary>
    Relative smoothness of animations when exiting tablet mode, recorded when
    the animation completes. 100% represents ideally smooth 60 frames per
    second.
  </summary>
</histogram>

<histogram name="Ash.TouchMoveSteps" units="pixels" expires_after="M85">
  <owner>kuscher@google.com</owner>
  <owner>rbyers@chromium.org</owner>
  <summary>The distance between touch-move events.</summary>
</histogram>

<histogram name="Ash.TouchStartAfterEnd" units="ms" expires_after="M77">
  <owner>kuscher@google.com</owner>
  <summary>
    The interval between the end of a touch-sequence and the start of the next
    touch-sequence.
  </summary>
</histogram>

<histogram name="Ash.TouchView.LidAngle" units="degrees"
    expires_after="2024-02-25">
  <owner>oshima@chromium.org</owner>
  <summary>
    Chrome OS only. The computed angle between the lid and the keyboard panel.
    These values are imprecise and may be tens of degrees off from reality.
    Reported once per hour that the system is awake, and not reported if the
    system doesn't have two accelerometers.
  </summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActive" units="ms"
    expires_after="2024-03-17">
  <owner>girard@chromium.org</owner>
  <summary>
    The length of time that TouchView is active, for each activation.
  </summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActivePercentage" units="%"
    expires_after="2024-02-11">
  <owner>girard@chromium.org</owner>
  <summary>The proportion of time spent in TouchView during a session.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActiveTotal" units="minutes"
    expires_after="2024-02-11">
  <owner>girard@chromium.org</owner>
  <summary>The total time that TouchView is active during a session.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewInactive" units="ms"
    expires_after="2023-03-19">
  <owner>girard@chromium.org</owner>
  <summary>The length of time between TouchView activations.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewInactiveTotal" units="minutes"
    expires_after="2023-03-19">
  <owner>girard@chromium.org</owner>
  <summary>
    The total time that TouchView is not active during a session.
  </summary>
</histogram>

<histogram name="Ash.UnifiedSystemView.Button.Activated"
    enum="QsButtonCatalogName" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when any button in the old quick settings view is activated.
  </summary>
</histogram>

<histogram name="Ash.UnifiedSystemView.FeaturePod.{FeaturePodBehavior}"
    enum="QsFeatureCatalogName" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when an action is done on any FeaturePod in the old quick settings
    view. {FeaturePodBehavior} can be a toggle to enable the feature, toggle to
    disable this feature, going to the feature's detailed page, or making the
    button visible.
  </summary>
  <token key="FeaturePodBehavior">
    <variant name="DiveIn" summary="Go to the feature's detailed page"/>
    <variant name="ToggledOff" summary="Toggle to disable the feature"/>
    <variant name="ToggledOn" summary="Toggle to enable the feature"/>
    <variant name="Visible" summary="The feature pod is shown"/>
  </token>
</histogram>

<histogram name="Ash.UnifiedSystemView.Slider.{SliderBehavior}"
    enum="QsSliderCatalogName" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when an action is done on any slider in the old quick settings view
    or in the slider bubble. {SliderBehavior} can be changing the value or
    toggling to enable the feature.
  </summary>
  <token key="SliderBehavior">
    <variant name="DisableFeature" summary="Toggle to disable the feature"/>
    <variant name="Down" summary="Turn the slider value down"/>
    <variant name="EnableFeature" summary="Toggle to enable the feature"/>
    <variant name="Up" summary="Turn the slider value up"/>
  </token>
</histogram>

<histogram name="Ash.UnifiedSystemView.{DeviceMode}.FeaturePodCountOnOpen"
    units="count" expires_after="2024-07-30">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The number of feature pods (e.g. WiFi, Bluetooth, IME, Accessibility, etc.)
    in the old system tray quick settings when it is opened, including pods that
    overflow to other pages. This metric is logged by 2 different types of
    {DeviceMode}: &quot;Clamshell&quot; and &quot;Tablet&quot;. This metric gets
    recorded for both the new quick settings view and the old unified system
    view, see &quot;Ash.QuickSettings.{DeviceMode}.FeaturePodCountOnOpen&quot;
    which is the metric for the new quick settings view.
  </summary>
  <token key="DeviceMode">
    <variant name="Clamshell" summary="Regular mode"/>
    <variant name="Tablet" summary="Tablet mode"/>
  </token>
</histogram>

<histogram base="true" name="Ash.UnlockAnimation.Smoothness" units="%"
    expires_after="2024-07-12">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <summary>
    Relative smoothness of all animations applied during the unlock process.
    100% represents the ideal smoothness for 60 frames per second. The metric
    was expired from 2022-04-18 to 2023-07-12 (revived in M117), it's possible
    some data was dropped during that time.
  </summary>
</histogram>

<histogram name="Ash.UserDataStatsRecorder.DataSize.TotalSize" units="MB"
    expires_after="2024-01-28">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Records the size of the entire profile data directory. Collected upon
    launching ash chrome.
  </summary>
</histogram>

<histogram name="Ash.UserDataStatsRecorder.DataSize.{ItemName}" units="MB"
    expires_after="2024-03-10">
  <owner>ythjkt@chromium.org</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    Records the size of each file/dir directly under user data directory.
  </summary>
  <token key="ItemName">
    <variant name="AccountManagerTokensBin"/>
    <variant name="Accounts"/>
    <variant name="AffiliationDatabase"/>
    <variant name="AppRankerPb"/>
    <variant name="ArcApps"/>
    <variant name="Autobrightness"/>
    <variant name="AutofillStrikeDatabase"/>
    <variant name="BlobStorage"/>
    <variant name="Bookmarks"/>
    <variant name="BrowserDataMigrator"/>
    <variant name="BudgetDatabase"/>
    <variant name="Cache"/>
    <variant name="CodeCache"/>
    <variant name="Cookies"/>
    <variant name="CrostiniIcons"/>
    <variant name="Databases"/>
    <variant name="DataReductionProxyLeveldb"/>
    <variant name="DNRExtensionRules"/>
    <variant name="Downloads"/>
    <variant name="DownloadService"/>
    <variant name="ExtensionCookies"/>
    <variant name="ExtensionInstallLog"/>
    <variant name="ExtensionRules"/>
    <variant name="Extensions"/>
    <variant name="ExtensionState"/>
    <variant name="Favicons"/>
    <variant name="FeatureEngagementTracker"/>
    <variant name="FileSystem"/>
    <variant name="FullRestoreData"/>
    <variant name="GCache"/>
    <variant name="GCMStore"/>
    <variant name="GoogleAssistantLibrary"/>
    <variant name="GPUCache"/>
    <variant name="HeavyAdInterventionOptOutDb"/>
    <variant name="History"/>
    <variant name="IndexedDB"/>
    <variant name="LocalAppSettings"/>
    <variant name="LocalExtensionSettings"/>
    <variant name="LocalStorage"/>
    <variant name="LOCK"/>
    <variant name="LOG"/>
    <variant name="LoginData"/>
    <variant name="LoginDataForAccount"/>
    <variant name="LoginTimes"/>
    <variant name="LOGOld"/>
    <variant name="LogoutTimes"/>
    <variant name="ManagedExtensionSettings"/>
    <variant name="MyFiles"/>
    <variant name="NearbySharePublicCertificateDatabase"/>
    <variant name="NetworkActionPredictor"/>
    <variant name="NetworkPersistentState"/>
    <variant name="OptimizationGuideHintCacheStore"/>
    <variant name="OptimizationGuideModelAndFeaturesStore"/>
    <variant name="PlatformNotifications"/>
    <variant name="Policy"/>
    <variant name="PPDCache"/>
    <variant name="Preferences"/>
    <variant name="PreferredApps"/>
    <variant name="PreviewsOptOutDb"/>
    <variant name="PrintJobDatabase"/>
    <variant name="QuotaManager"/>
    <variant name="README"/>
    <variant name="ReportingAndNEL"/>
    <variant name="RLZData"/>
    <variant name="ServiceWorker"/>
    <variant name="Sessions"/>
    <variant name="SessionStorage"/>
    <variant name="SharedProtoDb"/>
    <variant name="Shortcuts"/>
    <variant name="SiteCharacteristicsDatabase"/>
    <variant name="Smartcharging"/>
    <variant name="StructuredMetrics"/>
    <variant name="SyncAppSettings"/>
    <variant name="SyncData"/>
    <variant name="SyncExtensionSettings"/>
    <variant name="TopSites"/>
    <variant name="TranslateRankerModel"/>
    <variant name="TransportSecurity"/>
    <variant name="TrustedVault"/>
    <variant name="Unknown"/>
    <variant name="VisitedLinks"/>
    <variant name="WebApplications"/>
    <variant name="WebData"/>
    <variant name="WebrtcEventLogs"/>
    <variant name="WebRTCLogs"/>
    <variant name="ZeroStateGroupRankerPb"/>
    <variant name="ZeroStateLocalFilesPb"/>
  </token>
</histogram>

<histogram name="Ash.UserImage.URLLoaderDownloadSuccess" enum="BooleanSuccess"
    expires_after="2023-12-10">
  <owner>angelaxiao@google.com</owner>
  <owner>updowndota@google.com</owner>
  <summary>
    Emitted when loading default user images from gstatic resources. Records
    whether an image download attempt was successful or not.
  </summary>
</histogram>

<histogram name="Ash.VideoConference.NumberOfRepeatedShows" units="shows"
    expires_after="2024-03-16">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the number of times that the video conference tray repeatedly shows
    per 100ms. Emitted when the sequence of consecutive shows in the video
    conference tray has finished.
  </summary>
</histogram>

<histogram name="Ash.VideoConference.ReturnToApp.Click"
    enum="VideoConferenceAppType" expires_after="2024-03-16">
  <owner>leandre@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the app type of the media app that users want to return to when they
    click the return to app button in the video conference panel.
  </summary>
</histogram>

<histogram
    name="Ash.VideoConference.ReturnToAppButton.FadeOut.AnimationSmoothness"
    units="%" expires_after="2024-04-20">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade out animation of the return to app button
    inside the video conference controls. 100% represents ideally smooth 60
    frames per second. Emitted when the fade out animation is completed.
  </summary>
</histogram>

<histogram
    name="Ash.VideoConference.ReturnToAppPanel.BoundsChange.AnimationSmoothness"
    units="%" expires_after="2024-04-20">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the bounds change animation of the return to app
    panel inside the video conference controls. 100% represents ideally smooth
    60 frames per second. Emitted when the bounds change animation is completed.
  </summary>
</histogram>

<histogram name="Ash.VideoConference.{ViewName}.FadeIn.AnimationSmoothness"
    units="%" expires_after="2024-04-20">
  <owner>leandre@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the fade in animation of the {ViewName} inside the
    video conference controls. 100% represents ideally smooth 60 frames per
    second. Emitted when the fade in animation is completed.
  </summary>
  <token key="ViewName">
    <variant name="ReturnToAppButton" summary="Return To App button"/>
    <variant name="SummaryIcons" summary="Summary icons"/>
  </token>
</histogram>

<histogram name="Ash.VideoConferenceTray.BackgroundBlur.Click"
    enum="BackgroundBlurState" expires_after="2024-03-16">
  <owner>leandre@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the background blur state that users want to switch to when they
    choose a different value for background blur effect in the tab slider of the
    video conference panel.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.BackgroundBlur.InitialState"
    enum="BackgroundBlurState" expires_after="2024-03-16">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the initial state of background blur when the Video Conference Panel
    is shown.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.StopScreenShareButton.Click"
    enum="BooleanClicked" expires_after="2024-03-16">
  <owner>leandre@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the stop screen share button in video conference tray is
    clicked.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.ToggleBubbleButton.Click"
    enum="BooleanOpened" expires_after="2024-03-16">
  <owner>leandre@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the toggle bubble button in video conference tray is clicked
    to open/close the bubble.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.{Device}MuteButton.Click"
    enum="BooleanMuted" expires_after="2024-03-16">
  <owner>leandre@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the {Device} mute button in video conference tray is clicked.
    We will record if the user clicks the button to mute or to un-mute the
    {Device}.
  </summary>
  <token key="Device">
    <variant name="Camera" summary="camera"/>
    <variant name="Microphone" summary="microphone"/>
  </token>
</histogram>

<histogram name="Ash.VideoConferenceTray.{EffectName}.Click"
    enum="BooleanEnabled" expires_after="2024-03-16">
  <owner>leandre@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the toggle button of {EffectName} in the video conference
    bubble is clicked. We will record if the user clicks the button to enable or
    disable the effect.
  </summary>
  <token key="EffectName">
    <variant name="CameraFraming" summary="Camera Framing"/>
    <variant name="LiveCaption" summary="Live Caption"/>
    <variant name="NoiseCancellation" summary="Noise cancellation"/>
    <variant name="PortraitRelighting" summary="Portrait Relighting"/>
    <variant name="TestEffect" summary="Test Effect"/>
  </token>
</histogram>

<histogram name="Ash.VideoConferenceTray.{EffectName}.Toggle.InitialState"
    enum="BooleanEnabled" expires_after="2024-03-16">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the initial state of {EffectName} when the Video Conference Panel is
    shown.
  </summary>
  <token key="EffectName">
    <variant name="CameraFraming" summary="Camera Framing"/>
    <variant name="LiveCaption" summary="Live Caption"/>
    <variant name="NoiseCancellation" summary="Noise cancellation"/>
    <variant name="PortraitRelighting" summary="Portrait Relighting"/>
    <variant name="TestEffect" summary="Test Effect"/>
  </token>
</histogram>

<histogram name="Ash.Wallpaper.Collection" enum="WallpaperCollection"
    expires_after="2024-02-04">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    The wallpaper collection of the selected online wallpaper. Recorded each
    time the online wallpaper image is selected, but not when wallpaper is
    automatically refreshed.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.CustomLayout" enum="WallpaperLayout"
    expires_after="2024-03-17">
  <owner>xiaohuic@chromium.org</owner>
  <owner>assistive-eng@chromium.org</owner>
  <summary>
    The custom wallpaper layout type. Recorded when the user sets a new custom
    wallpaper or changes the existing custom wallpaper's layout.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Api.{Api}.RefreshCount"
    units="count" expires_after="2024-01-27">
  <owner>thuongphan@google.com</owner>
  <owner>cowmoo@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the refresh count for the request of the Google Photos API which
    {Api} with a valid refresh token. The count increases each time a user
    scrolls down to the end of the page to fetch more photos or albums from the
    Google Photos API. Emitted only at the end of a session.
  </summary>
  <token key="Api" variants="GooglePhotosApi"/>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Api.{Api}.ResponseTime.{Result}"
    units="ms" expires_after="2022-11-15">
  <owner>xiaohuic@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the response time for the {Result} request to the Google Photos API
    which {Api}. Emitted only on {Result} parsing of the API response at the
    moment parsing is completed.
  </summary>
  <token key="Api" variants="GooglePhotosApi"/>
  <token key="Result">
    <variant name="Failure" summary="failed"/>
    <variant name="Success" summary="successful"/>
  </token>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Api.{Api}.Result"
    enum="BooleanSuccess" expires_after="2022-11-15">
  <owner>xiaohuic@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the result for the request to the Google Photos API which {Api}.
    Emitted for both failed and successful parsing of the API request at the
    moment parsing is completed.
  </summary>
  <token key="Api" variants="GooglePhotosApi"/>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Api.{Api}.Result.Count"
    units="results" expires_after="2022-11-15">
  <owner>xiaohuic@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the result count for the response of the Google Photos API which
    {Api}. Emitted only on successful parsing of the API response at the moment
    parsing is completed.
  </summary>
  <token key="Api" variants="GooglePhotosApi"/>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Source"
    enum="WallpaperGooglePhotosSource" expires_after="2023-07-09">
  <obsolete>
    Replaced 01/2023 by Ash.Wallpaper.GooglePhotos.Source2.
  </obsolete>
  <owner>xiaohuic@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the section of the Wallpaper App from which a Google Photos
    wallpaper was selected. Emitted regardless of the selection's success.
    b/262449270: Adds new enums to record when a user picks a photo from owned
    or shared albums with the Google Photos shared albums feature.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Source2"
    enum="WallpaperGooglePhotosSource" expires_after="2024-01-30">
  <owner>thuongphan@google.com</owner>
  <owner>cowmoo@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Records the section of the Wallpaper App from which a Google Photos
    wallpaper was selected. Emitted regardless of the selection's success.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Image" enum="WallpaperImage"
    expires_after="2024-02-25">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    The selected online wallpaper. Recorded each time the online wallpaper image
    is selected, but not when wallpaper is automatically refreshed.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.IsSetToTimeOfDayAfterOobe" enum="Boolean"
    expires_after="2024-05-23">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Tracks whether the time of day wallpaper is set to be the default wallpaper
    successfully on supported devices. Recorded each time the user goes through
    OOBE flow and they did not have any synced wallpaper on any of their
    previous devices.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Preview.Show" enum="BooleanHit"
    expires_after="2024-02-13">
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Tracks the preview mode usage for wallpaper. Recorded each time the
    wallpaper image is previewed.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Source2" enum="WallpaperType"
    expires_after="2024-02-25">
  <owner>thuongphan@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Recorded when a user attempts to set a wallpaper, either by the built-in
    Wallpaper App, or by a third party App. Note the wallpaper change triggered
    by Sync file system event doesn't count.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Type" enum="WallpaperType"
    expires_after="2024-03-17">
  <owner>kuscher@google.com</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    The wallpaper type. Recorded at user login.

    This metric expired in April 2022 and was revived in August 2022. Data
    between these times is incomplete.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.{WallpaperType}.Result"
    enum="SetWallpaperResult" expires_after="2023-08-31">
  <obsolete>
    Replaced Aug 2023 by Ash.Wallpaper.{WallpaperType}.Result2.
  </obsolete>
  <owner>jasontt@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Tracks the result of user's attempt to set a wallpaper. Recorded when a user
    selects a wallpaper from the personalization hub. b/285387348: Add more
    variants and fix incorrect metric recording for online wallpapers.
  </summary>
  <token key="WallpaperType">
    <variant name="Customized"/>
    <variant name="OnceGooglePhotos"/>
    <variant name="Online"/>
  </token>
</histogram>

<histogram name="Ash.Wallpaper.{WallpaperType}.Result2"
    enum="SetWallpaperResult" expires_after="2024-08-15">
  <owner>thuongphan@chromium.org</owner>
  <owner>assistive-eng@google.com</owner>
  <summary>
    Tracks the result of user's attempt to set a wallpaper of type
    {WallpaperType}. Recorded when a user selects a {WallpaperType} wallpaper
    from the personalization hub.
  </summary>
  <token key="WallpaperType">
    <variant name="Customized"/>
    <variant name="Daily"/>
    <variant name="DailyGooglePhotos"/>
    <variant name="Default"/>
    <variant name="Device"/>
    <variant name="OnceGooglePhotos"/>
    <variant name="Online"/>
    <variant name="Oobe"/>
    <variant name="Policy"/>
    <variant name="ThirdParty"/>
  </token>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.CrossFade" units="%"
    expires_after="2023-11-12">
  <owner>sammiequon@chromium.org</owner>
  <owner>wutao@chromium.org</owner>
  <summary>
    Relative smoothness of cross fade animation when setting window bounds. 100%
    represents ideally smooth 60 frames per second. 50% represents when only 30
    frames per second is achieved during the animations. 0% should not happen.
    This metric is recorded exactly once when SetBoundsDirectCrossFade is
    called, such as when window is maximized.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.CrossFade.DragMaximize"
    units="%" expires_after="2024-06-25">
  <owner>sammiequon@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    When dragging a maximized window, the window will shrink to restore bounds.
    Dragging the window back to the top of the screen will expand the window.
    This histogram is fired only if the window is initially maximized. If we
    drag a normal window to maximized state, the animation smoothness will be
    recorded in the regular cross fade histogram above. This histogram will be
    recorded to measure the smoothenss of the expand animation. 100% represents
    ideally smooth 60 frames per second. 50% represents when only 30 frames per
    second is achieved during the animations. 0% should not happen.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.CrossFade.DragUnmaximize"
    units="%" expires_after="2024-06-25">
  <owner>sammiequon@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    When dragging a maximized window, the window will shrink to restore bounds.
    This histogram is fired everytime we drag a maximized window to normal
    state. This histogram will be recorded to measure the smoothness of the
    shrink animation. 100% represents ideally smooth 60 frames per second. 50%
    represents when only 30 frames per second is achieved during the animations.
    0% should not happen.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.Hide" units="%"
    expires_after="2024-02-25">
  <owner>sammiequon@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <summary>
    Relative smoothness of hiding window animation. 100% represents ideally
    smooth 60 frames per second. 50% represents when only 30 frames per second
    is achieved during the animations. 0% should not happen. This metric is
    recorded exactly once when AnimateHideWindowCommon is called, such as when
    window is closed.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.Minimize" units="%"
    expires_after="2024-07-24">
  <owner>oshima@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Relative smoothness of minimizing window animation. 100% represents ideally
    smooth 60 frames per second. 50% represents when only 30 frames per second
    is achieved during the animations. 0% should not happen. This metric is
    recorded exactly once when AnimateHideWindow_Minimize is called, such as
    when window is minimized.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.Snap" units="%"
    expires_after="2024-05-15">
  <owner>oshima@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Relative smoothness of snapping window animation. 100% represents ideally
    smooth 60 frames per second. 50% represents when only 30 frames per second
    is achieved during the animations. 0% should not happen. This metric is
    recorded exactly once when a window is snapped to the left or right in
    clamshell mode using the alt + [ or ] accelerator, but only if the size of
    the window's bounds change.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.Unminimize" units="%"
    expires_after="2024-05-15">
  <owner>oshima@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Relative smoothness of unminimizing window animation. 100% represents
    ideally smooth 60 frames per second. 50% represents when only 30 frames per
    second is achieved during the animations. 0% should not happen. This metric
    is recorded exactly once when AnimateShowWindow_Minimize is called, such as
    when window is unminimized.
  </summary>
</histogram>

<histogram name="Ash.Window.DragMaximized.NumberOfMisTriggers" units="units"
    expires_after="2024-02-11">
  <owner>conniekxu@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when a window state is being destroyed. Records number of
    mis-triggers of the drag to maximize behavior for a window during its
    lifetime.
  </summary>
</histogram>

<histogram name="Ash.Window.DragMaximized.Valid" enum="Boolean"
    expires_after="2024-02-11">
  <owner>conniekxu@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    This boolean keeps tracking if a drag to maximize behavior is valid or not.
    Emits true if a window is dragged to maximized and stays maximized status
    over 5 seconds. If a window is dragged to maximized, but gets restored
    during 5 seconds, the drag to maximize behavior should be considered as
    invalid and a mis-trigger.
  </summary>
</histogram>

<histogram name="Ash.Window.PartialSplitDuration" units="minutes"
    expires_after="2024-03-24">
  <owner>nupurjain@chromium.org</owner>
  <owner>sophiewen@chromium.org</owner>
  <summary>
    The amount of time a user keeps a partial split window open and visible.
    Starts recording when a user partial splits through the multitask menu, or
    activates a desk that contains a partial window. Ends recording when the
    window is closed, changes window state, is snapped/dragged/resized to a
    non-partial snap ratio, gets moved to an inactive desk, or a different desk
    is activated.
  </summary>
</histogram>

<histogram name="Ash.Window.Snap.DeviceOrientation" enum="DeviceOrientation"
    expires_after="2024-03-17">
  <owner>cattalyya@chromium.org</owner>
  <owner>afakhry@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted when the user snaps the window to record whether window snap is used
    while the display orientation is portrait or landscape mode.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.DesksSwitchDistance" units="units"
    expires_after="2024-07-27">
  <owner>afakhry@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when the user ends window cycling via Alt-Tab, if and only if user
    had 2 or more desks and a new window was activated, to report the distance
    between the active desks before and after window cycling. A distance of 0
    means no desks switch occurred.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.Enter.PresentationTime" units="ms"
    expires_after="2024-07-27">
  <owner>andp@chromium.org</owner>
  <owner>sammiequon@chromium.org</owner>
  <owner>chromeos-wms@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the window cycle event (alt+tab) was received to when the next
    frame is shown to the user. This does not include the 150ms delay for window
    cycle (for users who switch so fast they do not need the UI).
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.InitialMode" enum="AltTabMode"
    expires_after="2024-07-27">
  <owner>afakhry@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when the user starts Alt-Tab, if and only if user had 2 or more
    desks and Bento is not disabled, to report the initial alt-tab mode, which
    signals user's saved and preferred mode.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.Items" units="items"
    expires_after="2024-07-27">
  <owner>sammiequon@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The number of windows in the Alt+Tab selector. Only recorded once when
    cycling starts, not every time when Tab is pressed without releasing Alt.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.ModeSwitchSource"
    enum="AltTabModeSwitchSource" expires_after="2024-07-27">
  <owner>afakhry@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when the user switches the Alt-Tab mode, if and only if user had 2
    or more desks and Bento is not disabled, to report whether the user switches
    the mode via a click or keyboard.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.SameApp.DeskMode" enum="AltTabMode"
    expires_after="2024-07-27">
  <owner>andp@chromium.org</owner>
  <owner>benbecker@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when same app window cycling ends, if and only if user had 2 or more
    desks and Bento is not disabled, to report the same-desk vs all-desk mode
    selection.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.SameApp.IsSameApp" enum="Boolean"
    expires_after="2024-07-27">
  <owner>andp@chromium.org</owner>
  <owner>benbecker@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emits true when a same-app cycling session is started and false when a
    normal cycling session is started.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.SameApp.SkippedWindows"
    units="windows" expires_after="2024-07-27">
  <owner>andp@chromium.org</owner>
  <owner>benbecker@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The number of windows the user didn't have to tab through because they were
    using Alt-Backtick instead of Alt-Tab. Recorded as the number of
    non-same-app windows in the ending MRU list between the starting and chosen
    window in the initial cycling direction.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.SwitchMode" enum="AltTabMode"
    expires_after="2024-07-27">
  <owner>afakhry@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when the user switches the Alt-Tab mode from a click or keyboard, if
    and only if user had 2 or more desks and Bento is not disabled, to report
    the alt-tab mode the user switches to.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.TimeBetweenTaskSwitches"
    units="seconds" expires_after="2024-07-27">
  <owner>sammiequon@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    The number of seconds between task switches triggered by the next window and
    previous window accelerator keys (ie Alt+Tab, Alt+Shift+Tab).
  </summary>
</histogram>

<histogram name="Ash.WindowCycleView.AnimationSmoothness.Container" units="%"
    expires_after="2024-02-22">
  <owner>yichenz@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Relative smoothness of showing window animation when the window cycle view
    moves the next window into position when alt + tab is pressed. 100%
    represents ideally smooth 60 frames per second. 50% represents when only 30
    frames per second is achieved during the animations. 0% should not happen.

    Warning: this histogram was expired from 2022-04-10 to 2023-02-22; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleView.AnimationSmoothness.Show" units="%"
    expires_after="2024-02-22">
  <owner>yichenz@chromium.org</owner>
  <owner>chromeos-wmp@google.com</owner>
  <summary>
    Relative smoothness of showing window animation when the window cycle view
    starts. 100% represents ideally smooth 60 frames per second. 50% represents
    when only 30 frames per second is achieved during the animations. 0% should
    not happen.

    Warning: this histogram was expired from 2022-04-10 to 2023-02-22; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.WindowDragFromShelfResult" enum="ShelfWindowDragResult"
    expires_after="2023-10-08">
  <owner>andrewxu@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    The final state after window drag gesture that started from the system shelf
    in tablet mode.
  </summary>
</histogram>

<histogram name="Ash.WindowManager.Lock.Success" units="ms"
    expires_after="2023-08-13">
  <owner>antrim@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    How long it took for the screen lock process to complete. This does not
    include timeouts. Warning: this histogram was expired from M78 till M104.
  </summary>
</histogram>

<histogram name="Ash.WindowManager.Lock.Timeout" units="ms"
    expires_after="2023-12-06">
  <owner>antrim@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    How long it took for the screen lock process to complete, for timeouts only.
    Warning: this histogram was expired from M78 till M104. It was also expired
    from 2023-04-23 till 2023-07-10.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerClick" enum="Boolean"
    expires_after="2024-01-28">
  <owner>michelefan@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Emits true if the resize widget is clicked to start the resizing while in
    mulit-window resizing mode.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerClickTwoWindowsSnapped"
    enum="Boolean" expires_after="2024-03-17">
  <owner>michelefan@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Emits true if the resize widget is clicked to start the resizing while in
    mulit-window resizing mode.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerShow" enum="Boolean"
    expires_after="2024-03-17">
  <owner>michelefan@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Emits true if the resize widget shows on mouse hover on the ResizeWindows.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerShowTwoWindowsSnapped" enum="Boolean"
    expires_after="2024-03-17">
  <owner>michelefan@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Emits true if the resize widget shows on mouse hover on the ResizeWindows
    and the two windows of the ResizeWindows are snapped.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSnapActionSource"
    enum="DeprecatedWindowSnapActionSource" expires_after="2023-05-03">
  <obsolete>
    Deprecated Apr 2023. See the new metrics Ash.Wm.WindowSnapActionSource2.
  </obsolete>
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when a window is to be snapped. Records different ways for a user to
    snap a window. Deprecated.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSnapActionSource2" enum="WindowSnapActionSource"
    expires_after="2024-04-21">
  <owner>xdai@chromium.org</owner>
  <owner>nupurjain@chromium.org</owner>
  <summary>
    Emitted when a window is to be snapped. Records different ways for a user to
    snap a window.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
