chromium/tools/metrics/histograms/metadata/ash/histograms.xml

<!--
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
[email protected].
-->

<histogram-configuration>

<histograms>

<variants name="AcceleratorActionName">
  <variant name="AccessibilityAction"/>
  <variant name="BrightnessDown"/>
  <variant name="BrightnessUp"/>
  <variant name="CreateSnapGroup"/>
  <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="DebugShowInformedRestore"/>
  <variant name="DebugShowToast"/>
  <variant name="DebugStartSunfishSession"/>
  <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="EnableOrToggleDictation"/>
  <variant name="EnableSelectToSpeak"/>
  <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="TilingWindowResizeDown"/>
  <variant name="TilingWindowResizeLeft"/>
  <variant name="TilingWindowResizeRight"/>
  <variant name="TilingWindowResizeUp"/>
  <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="TogglePicker"/>
  <variant name="ToggleProjectorMarker"/>
  <variant name="ToggleResizeLockMenu"/>
  <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="AmbientVideoDlcInstallLabels">
  <variant name="Background"
      summary="Install happens in background shortly after login. This
               installation increases the probability that the DLC package is
               installed by the time ambient mode is actually launched."/>
  <variant name="Foreground"
      summary="Install that happens when it's time to launch ambient mode
               with one of the video themes. If this install fails, ambient
               mode will fail to render. If the background install has
               already succeeded at some point in the past, this foreground
               install should be very quick and always succeed."/>
</variants>

<variants name="CalendarDataTypes">
  <variant name="Calendar"/>
  <variant name="Event"/>
</variants>

<variants name="CriticalNotificationOutcome">
  <variant name="Crashed"
      summary="The device crashes, it includes the case when the battery is
               empty and powerd does not have time to perform a graceful
               shutdown."/>
  <variant name="LowBatteryShutdown"
      summary="The device automatically shuts down due to a low battery."/>
  <variant name="NotificationShown"
      summary="The critical notification is shown."/>
  <variant name="PluggedIn" summary="The device connects to a power source."/>
  <variant name="Suspended" summary="The device enters a suspended state."/>
  <variant name="UserShutdown"
      summary="The device is shut down gracefully by the user."/>
</variants>

<!-- LINT.IfChange(AshDisplayModes) -->

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

<!-- LINT.ThenChange(//tools/metrics/histograms/metadata/apps/histograms.xml:AshDisplayModes) -->

<variants name="DriveFsSearchType">
  <variant name="Modified" summary="Most recently modified files"/>
  <variant name="Shared" summary="Files most recently shared with user"/>
  <variant name="Total" summary="Total time to run all queries"/>
  <variant name="Viewed" summary="Most recently viewed files"/>
</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="MantaMetricType">
  <variant name="AnchovyProvider" summary="Request from Anchovy provider"/>
  <variant name="MahiProvider.Outline"
      summary="Request from Mahi provider for outline"/>
  <variant name="MahiProvider.QA" summary="Request from Mahi provider for QA"/>
  <variant name="MahiProvider.Summary"
      summary="Request from Mahi provider for summary"/>
  <variant name="OrcaProvider" summary="Request from Orca provider"/>
  <variant name="SnapperProvider" summary="Request from Snapper provider"/>
</variants>

<variants name="NumWindows">
  <variant name="0" summary="0 windows open"/>
  <variant name="1" summary="1 windows open"/>
  <variant name="2" summary="2 windows open"/>
  <variant name="3" summary="3 windows open"/>
  <variant name="4" summary="4 windows open"/>
  <variant name="5" summary="5 windows open"/>
  <variant name="6" summary="6 windows open"/>
  <variant name="7" summary="7 windows open"/>
  <variant name="8" summary="8 windows open"/>
  <variant name="9" summary="9 windows open"/>
  <variant name="10" summary="10 windows open"/>
  <variant name="MoreThan10" summary="More than 10 windows open"/>
</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="RestoreMode">
  <variant name="AutoRestore"/>
  <variant name="ManualRestore"/>
</variants>

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

<variants name="SeaPenApiType">
  <variant name="Thumbnails"/>
  <variant name="Wallpaper"/>
</variants>

<variants name="SeaPenAppName">
  <variant name="VcBackground" summary="Vc Background App"/>
  <variant name="Wallpaper" summary="Wallpaper App"/>
</variants>

<variants name="SeaPenImageSource">
  <variant name="Create" summary="A newly created image"/>
  <variant name="Recent" summary="A recent image previously created"/>
</variants>

<variants name="SeaPenTemplateName">
  <variant name="Art" summary="Template Classic art"/>
  <variant name="Characters" summary="Template Characters"/>
  <variant name="Curious" summary="Template Curious world"/>
  <variant name="Dreamscapes" summary="Template Dreamscape"/>
  <variant name="Flower" summary="Template Airbrushed"/>
  <variant name="Freeform" summary="Wallpaper Freeform"/>
  <variant name="Glowscapes" summary="Template Glowscapes"/>
  <variant name="Landscape"
      summary="Template Landscape (OBSOLETE: Use Terrain instead)"/>
  <variant name="Letters" summary="Template Letters"/>
  <variant name="Mineral" summary="Template Minerals"/>
  <variant name="Query" summary="Free-form text query"/>
  <variant name="Scifi" summary="Template Science fiction"/>
  <variant name="Surreal" summary="Template Surreal"/>
  <variant name="Terrain" summary="Template Landscape"/>
  <variant name="TerrainAlternate" summary="Template Landscape"/>
  <variant name="Translucent" summary="Template Translucent"/>
  <variant name="VcBackgroundArt" summary="VcBackground Template Classic art"/>
  <variant name="VcBackgroundCafe" summary="VcBackground Template Cafe"/>
  <variant name="VcBackgroundCharacters"
      summary="VcBackground Template Characters"/>
  <variant name="VcBackgroundDreamscapes"
      summary="VC Background Template Dreamscapes (OBSOLETE: Use
               VcBackgroundDreamscapesVc instead)"/>
  <variant name="VcBackgroundDreamscapesVc"
      summary="VcBackground Template Dreamscapes"/>
  <variant name="VcBackgroundFreeform" summary="VcBackground Freeform"/>
  <variant name="VcBackgroundGlowscapes"
      summary="VcBackground Template Glowscapes"/>
  <variant name="VcBackgroundOffice"
      summary="VcBackground Template Stylish office"/>
  <variant name="VcBackgroundSimple" summary="VcBackground Template Simple"/>
  <variant name="VcBackgroundTerrain"
      summary="VC Background Template Terrain (OBSOLETE: Use
               VcBackgroundTerrainVc instead)"/>
  <variant name="VcBackgroundTerrainVc"
      summary="VcBackground Template Terrain"/>
</variants>

<variants name="SnapActionSource">
  <variant name="AutoSnapInSplitView"
      summary="Auto snap a window in split view"/>
  <variant name="DragDownFromTopToSnap"
      summary="Drag down from shelf to snap a window"/>
  <variant name="DragOrSelectOverviewWindowToSnap"
      summary="Snap a window from overview"/>
  <variant name="DragTabToSnap" summary="Drag a tab to snap"/>
  <variant name="DragUpFromShelfToSnap"
      summary="Drag up from shelf to snap a window"/>
  <variant name="DragWindowToEdgeToSnap" summary="Drag a window to snap"/>
  <variant name="KeyboardShortcutToSnap"
      summary="Use keyboard shortcut to snap a window"/>
  <variant name="LongPressCaptionButtonToSnap"
      summary="Long press the caption button to snap a window"/>
  <variant name="LongPressOverviewButtonToSnap"
      summary="Long press overview button to snap a window"/>
  <variant name="NotSpecified"
      summary="Default value for any snap action actions that's not covered
               below"/>
  <variant name="SnapByClamshellTabletTransition"
      summary="Snap the window during clamshell to tablet mode transition"/>
  <variant name="SnapByDeskOrSessionChange"
      summary="Snap a window due to desk or session change"/>
  <variant name="SnapByFullRestoreOrDeskTemplateOrSavedDesk"
      summary="Snap the window on full restore, desk template or saved desk"/>
  <variant name="SnapByWindowLayoutMenu"
      summary="Snap the window through the window layout menu snap option"/>
  <variant name="SnapByWindowStateRestore"
      summary="Snap the window on window state restore"/>
  <variant name="SnapGroupWindowUpdate"
      summary="Snap a window while updating a window in split view"/>
  <variant name="Test" summary="Snap a window in test"/>
</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>

<variants name="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="SeaPen"/>
  <variant name="ThirdParty"/>
</variants>

<histogram name="Ash.Accelerators.Actions.{ActionName}" units="Shortcuts"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.ToggleHighContrast"
    enum="DeprecatedAcceleratorUsage" expires_after="M77">
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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.TogglePicker.Action"
    enum="TogglePickerAction" expires_after="2025-08-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Action triggered by pressing toggle picker accelerator.</summary>
</histogram>

<histogram name="Ash.Accelerators.WindowSnap"
    enum="WindowSnapAcceleratorAction" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Captures usage of Alt+[ and Alt+].</summary>
</histogram>

<histogram name="Ash.AmbientMode.Activation.{TabletOrClamshell}"
    enum="AmbientUiMode" expires_after="2024-04-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-08-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>
  <token key="Settings" variants="AmbientUiSettings"/>
</histogram>

<histogram name="Ash.AmbientMode.LottieAnimationSmoothness.{Settings}"
    units="%" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.PhotoSource" enum="AmbientModePhotoSource"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.TopicSource" enum="AmbientModeTopicSource"
    expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when screen saver starts running. Logs the topic source of the
    screen saver.
  </summary>
</histogram>

<histogram name="Ash.AmbientMode.TotalNumberOfAlbums" units="int"
    expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.VideoDlcInstall.{Label}.Error"
    enum="AmbientDlcError" expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of error that is received from DLC Service when an
    installation is requested for the ambient video package. This is emitted
    after each ambient DLC installation attempt. See comments above
    AmbientVideoDlcInstallLabels for when installation attempts are made.
  </summary>
  <token key="Label" variants="AmbientVideoDlcInstallLabels"/>
</histogram>

<histogram name="Ash.AmbientMode.VideoPlaybackStatus.{Settings}"
    enum="AmbientVideoSessionStatus" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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.Auth.ActiveSessionAuthClosedDuringAuth" enum="Boolean"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when the active session auth dialog closed during authentication. It
    means the user already submitted their password or pin, but didn't wait for
    the result. Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthClosedWithSuccess"
    enum="BooleanSuccess" expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the success outcome of the authentication on the active session auth
    dialog. Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthFailed" enum="AuthInputType"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the authentication input type when authentication fails on the
    active session dialog. Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthFingerprintAttempt" units="attempts"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of fingerprint attempts while the active session auth dialog was
    opened. Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthOpenDuration" units="ms"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time the active session auth dialog remained opened. Recorded
    when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthPasswordAttempt" units="attempts"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of password attempts while the active session auth dialog was
    opened. Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthPinAttempt" units="attempts"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of pin attempts while the active session auth dialog was opened.
    Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthStart" enum="AuthInputType"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the authentication input type when authentication happened. Recorded
    when the authentication starts on the active session auth dialog.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthSucceeded" enum="AuthInputType"
    expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the authentication input type when authentication succeeded.
    Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionShowReason"
    enum="ActiveSessionAuthControllerReason" expires_after="2025-08-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the authentication reason why the active session auth dialog was
    opened. Recorded when the active session auth dialog opens.
  </summary>
</histogram>

<histogram name="Ash.BackGesture.EndScenarioType"
    enum="BackGestureEndScenarioType" expires_after="2023-10-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Birch.Bar.Activate" units="count"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records true if the user clicks on any chip on the birch bar.
  </summary>
</histogram>

<histogram name="Ash.Birch.Bar.Impression" units="count"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records true if the user was presented with the birch bar and it had one or
    more chips visible.
  </summary>
</histogram>

<histogram name="Ash.Birch.Chip.Activate" enum="BirchItemType"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user clicks or taps on a chip of a given type.
  </summary>
</histogram>

<histogram name="Ash.Birch.Chip.ActivatedRanking" units="rank"
    expires_after="2025-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The ranking of a chip from the triggers and priorities specification.
    Recorded when the user clicks or taps on a chip.
  </summary>
</histogram>

<histogram name="Ash.Birch.Chip.Activate{When}" enum="BirchItemType"
    expires_after="2025-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The type of the chip the user clicked or tapped. Recorded the {When} time
    the user clicks or taps on a chip in a login session.
  </summary>
  <token key="When">
    <variant name="First" summary="first"/>
    <variant name="Second" summary="second"/>
    <variant name="Third" summary="third"/>
  </token>
</histogram>

<histogram name="Ash.Birch.Chip.Hidden" enum="BirchItemType"
    expires_after="2025-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when the user hides a suggestion.</summary>
</histogram>

<histogram name="Ash.Birch.Chip.Impression" enum="BirchItemType"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when the user is shown a chip of a given type.</summary>
</histogram>

<histogram name="Ash.Birch.ChipCount" units="count" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of chips when the birch bar is shown to the user. May be zero if
    there were no chips to show.
  </summary>
</histogram>

<histogram name="Ash.Birch.Latency{Type}" units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The latency to fetch data of {Type} type via the data provider. Recorded
    once per fetch (i.e. once per time the birch bar is shown).
  </summary>
  <token key="Type">
    <variant name=".Calendar" summary="calendar"/>
    <variant name=".Coral" summary="coral"/>
    <variant name=".File" summary="file"/>
    <variant name=".LastActive" summary="last active tab"/>
    <variant name=".LostMedia" summary="lost media tabs"/>
    <variant name=".MostVisited" summary="most visited URLs"/>
    <variant name=".ReleaseNotes" summary="release notes"/>
    <variant name=".SelfShare" summary="self share"/>
    <variant name=".Tab" summary="recent tab"/>
    <variant name=".Weather" summary="weather"/>
  </token>
</histogram>

<histogram name="Ash.Birch.ProviderHidden{Type}" units="count"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the user is hiding birch results of {Type} type. Recorded on
    startup.
  </summary>
  <token key="Type">
    <variant name=".Calendar" summary="calendar"/>
    <variant name=".ChromeTabs"
        summary="recent tabs, last active tab, most visited tab, and
                 self-share tabs"/>
    <variant name=".Coral" summary="coral"/>
    <variant name=".FileSuggest" summary="file suggest"/>
    <variant name=".LastActive" summary="(obsolete) use ChromeTabs"/>
    <variant name=".LostMedia" summary="lost media tabs"/>
    <variant name=".MostVisited" summary="(obsolete) use ChromeTabs"/>
    <variant name=".RecentTabs" summary="(obsolete) use ChromeTabs"/>
    <variant name=".ReleaseNotes" summary="release notes"/>
    <variant name=".SelfShare" summary="(obsolete) use ChromeTabs"/>
    <variant name=".Weather" summary="weather"/>
  </token>
</histogram>

<histogram name="Ash.Birch.Ranking{Time}" units="ranking"
    expires_after="2025-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The ranking (lower is better) of the birch results shown to user during
    {Time}. Recorded when the birch chips are shown.
  </summary>
  <token key="Time">
    <variant name=".0000to0500" summary="midnight to 5 AM local time"/>
    <variant name=".0500to1200" summary="5 AM to noon local time"/>
    <variant name=".1200to1700" summary="noon to 5 PM local time"/>
    <variant name=".1700to0000" summary="5 PM to midnight local time"/>
    <variant name=".Total" summary="the entire day"/>
  </token>
</histogram>

<histogram name="Ash.Birch.ResultsReturned{Type}" units="count"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of results of {Type} type returned by the data provider. The
    results were not necessarily shown to the user (based on ranking).
  </summary>
  <token key="Type">
    <variant name=".Attachment" summary="calendar event file attachment"/>
    <variant name=".Calendar" summary="calendar"/>
    <variant name=".Coral" summary="coral"/>
    <variant name=".File" summary="file"/>
    <variant name=".LastActive" summary="last active tab"/>
    <variant name=".LostMedia" summary="lost media tabs"/>
    <variant name=".MostVisited" summary="most visited URLs"/>
    <variant name=".ReleaseNotes" summary="release notes"/>
    <variant name=".SelfShare" summary="self share"/>
    <variant name=".Tab" summary="recent tab"/>
    <variant name=".Weather" summary="weather"/>
  </token>
</histogram>

<histogram name="Ash.Birch.TotalLatency" units="ms" expires_after="2025-03-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total latency to fetch all birch data via all data providers. Recorded
    once per fetch (i.e. once per time the birch bar is shown).
  </summary>
</histogram>

<histogram name="Ash.Birch.TotalLatencyPostLogin" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total latency to fetch all birch data via all data providers on the
    first fetch post login. Recorded when the birch bar is shown post login.
  </summary>
</histogram>

<histogram name="Ash.BrowserContext.UnexpectedGetPrimaryUserProfile"
    enum="Boolean" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.BrowserDataBackMigrator.ElapsedTimeBetweenDataMigrations"
    units="ms" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.IsPrecededByForwardMigration"
    enum="Boolean" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether forward migration was performed before backward migration. True if
    the user was first on Ash, then moved to Lacros (forward migration), and
    then back to Ash (backward migration). False if the user started with Lacros
    (no forward migration) and then moved to Ash (backward migration). Recorded
    every time backward migration is started, if forward migration was performed
    prior to it.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataBackMigrator.NumberOfLacrosSecondaryProfiles"
    units="profiles" expires_after="2024-12-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The size of temporary profile directory created during the migration.
  </summary>
</histogram>

<histogram name="Ash.BrowserDataMigrator.MoveMigrator.TmpSplitDirSize"
    units="MB" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The size of temporary split directory created during the migration.
  </summary>
</histogram>

<histogram name="Ash.Calendar.CalendarKeyboardNavigationSource"
    enum="CalendarKeyboardNavigationSource" expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.JoinMeetingButton.Pressed"
    enum="CalendarEventSource" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.EventListViewJelly.EventDisplayedCount"
    units="int" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.EventsDisplayedToUser" enum="Boolean"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.FetchCalendars.TotalSelectedCalendars"
    units="int" expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a fetched calendar list is filtered for selected calendars.
    Records the number of calendars in the response that are selected.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.PreFetched" units="fetches"
    expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.SingleMonthSize" units="bytes"
    expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when there are no outstanding calendar event fetches for a month.
    The total size of the month's events.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.TotalCacheSizeMonths" units="months"
    expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.FetchEvents.TotalFetchDuration" units="ms"
    expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the final calendar event fetch for a month returns and Multi-
    Calendar is enabled. Records the time elapsed from the first fetch that is
    started to the last fetch that is completed.
  </summary>
</histogram>

<histogram name="Ash.Calendar.Fetch{DataType}s.FetchDuration" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the {DataType} fetch returns. The duration of the fetch
    request.
  </summary>
  <token key="DataType" variants="CalendarDataTypes"/>
</histogram>

<histogram name="Ash.Calendar.Fetch{DataType}s.Result"
    enum="CalendarDataFetchApiError" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the {DataType} fetch returns. The recorded enum value
    indicates the return code of the fetch request.
  </summary>
  <token key="DataType" variants="CalendarDataTypes"/>
</histogram>

<histogram name="Ash.Calendar.Fetch{DataType}s.Timeout" enum="Boolean"
    expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when {DataType}s are requested and the request goes too long
    without a response.
  </summary>
  <token key="DataType" variants="CalendarDataTypes"/>
</histogram>

<histogram name="Ash.Calendar.MaxDistanceBrowsed" units="months"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the calendar view is shown from the {ViewShowSource}.
  </summary>
  <token key="ViewShowSource">
    <variant name="DateView" summary="date view in quick settings"/>
    <variant name="Keyboard" summary="accelerator (search + c)"/>
    <variant name="TimeView" summary="time view in the status area"/>
  </token>
</histogram>

<histogram name="Ash.Calendar.TimeToSeeTodaysEventDots" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.TimeToSeeTodaysEventDotsForMultiCalendar"
    units="ms" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Measures the time from open of CalendarView, to CalendarDateCellView
    representing today receives events when Multi-Calendar is enabled. 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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.UserAction" enum="CalendarUserAction"
    expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User actions recorded when the user interacts with Calendar in Chrome OS
    System UI.
  </summary>
</histogram>

<histogram name="Ash.Calendar.UserActionToOpenCalendarWebUi"
    enum="CalendarUserAction" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User actions in Chrome OS Calendar System UI that result in Google Calendar
    web UI being opened. Recorded when the user interacts with the Chrome OS
    Calendar System UI.
  </summary>
</histogram>

<histogram name="Ash.Calendar.UserJourneyTime.{EventLaunchState}" units="ms"
    expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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"/>
  </token>
</histogram>

<histogram name="Ash.CalendarView.ConstructionTime" units="ms"
    expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.FadeInUpNextView.AnimationSmoothness"
    units="%" expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Animation smoothness recorded when the up next view fades in. 60 fps is 100%
    smoothness and so ideally we should see smoothness &gt; 80%.
  </summary>
</histogram>

<histogram name="Ash.CalendarView.FadeOutUpNextView.AnimationSmoothness"
    units="%" expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Animation smoothness recorded when the up next view fades out. 60 fps is
    100% smoothness and so ideally we should see smoothness &gt; 80%.
  </summary>
</histogram>

<histogram name="Ash.CalendarView.OnMonthChanged.AnimationSmoothness" units="%"
    expires_after="2024-09-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when the on month changed animation is finished.</summary>
</histogram>

<histogram
    name="Ash.CalendarView.OpenEventList.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.{Animation}.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2024-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.CaptureConfiguration.{TabletOrClamshell}"
    enum="CaptureModeConfiguration" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</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="2025-06-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.{TabletOrClamshell}"
    units="seconds" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.ContainerApp.Page.Visit" enum="ContainerAppPage"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records visits to container app related pages. Emitted when the browser tab
    performing the visit has started navigation to the recorded page.
  </summary>
</histogram>

<histogram name="Ash.ContextualGoogleIntegrations.{IntegrationName}.Status"
    enum="ContextualGoogleIntegrationStatus" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the contextual Google integration status (whether it's enabled, or
    disabled because of policy / app / URL block).
  </summary>
  <token key="IntegrationName">
    <variant name="GoogleCalendar"/>
    <variant name="GoogleClassroom"/>
    <variant name="GoogleTasks"/>
  </token>
</histogram>

<histogram name="Ash.DarkTheme.SystemTray.IsDarkModeEnabled" enum="Boolean"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.CloseAllUndo" enum="BooleanClicked"
    expires_after="2025-03-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted after a virtual desk being removed by Desk API and undo toast being
    clicked.
  </summary>
</histogram>

<histogram name="Ash.DeskApi.RemoveDeskType" enum="DeskCloseType"
    expires_after="2025-03-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when a virtual desk is removed by Desk Api to specify the category
    of this remove operation among close all, combine desk, and close all and
    wait.
  </summary>
</histogram>

<histogram name="Ash.DeskApi.{Method}.Result" enum="BooleanSuccess"
    expires_after="2025-03-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.CloseAllTotal" enum="BooleanHit"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted after a virtual desk being removed with close all option and undo
    toast being clicked.
  </summary>
</histogram>

<histogram name="Ash.Desks.ConsecutiveDailyVisits" units="days"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-11-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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" enum="BooleanHit"
    expires_after="2024-11-17">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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" enum="BooleanHit"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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_Profile_{DeskIndex}" units="hr"
    expires_after="2024-12-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Variant of Ash.Desks.DeskLifetime that is emitted if the closed desk has a
    desk profile assigned to it. It has the same semantics as DeskLifetime.
  </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.DeskLifetime_{DeskIndex}" units="hr"
    expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.DeskProfiles.AvatarView.ButtonPressed"
    enum="BooleanHit" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records when the desk profiles button is pressed.</summary>
</histogram>

<histogram name="Ash.Desks.DeskProfiles.ContextMenu.OpenProfileManager"
    units="BooleanHit" expires_after="2024-12-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records when the profile manager is opened from desk profiles context menu.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskProfiles.SelectProfile"
    enum="DeskProfilesSelectProfileSource" expires_after="2024-12-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted when the user assigns a profile to a desk.</summary>
</histogram>

<histogram name="Ash.Desks.DeskProfiles.UsageStatus"
    enum="DeskProfilesUsageStatus" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records relative adoption of desk profiles.</summary>
</histogram>

<histogram name="Ash.Desks.DesksCount3" units="units"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.

    Note: the bucket for user switching was previousy emitted to at session
    startup which meant that it was artificially inflated. As of M123, these
    events now end up in the session restore bucket.
  </summary>
</histogram>

<histogram name="Ash.Desks.DesksSwitchScreenshotResult" enum="BooleanSuccess"
    expires_after="2025-01-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when a starting or ending screenshot succeeded or failed.
  </summary>
</histogram>

<histogram name="Ash.Desks.MoveWindowFromActiveDesk"
    enum="DesksMoveWindowFromActiveDeskSource" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.NumberOfWindowsClosed2" units="units"
    expires_after="2025-04-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-03-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-03-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-07-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.WeeklyActiveDesks" units="active desks"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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}"
    enum="BooleanHit" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="OpenContextMenu" summary="right click open context menu"/>
    <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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted when an admin template is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.AddOrUpdateTemplateStatus"
    enum="DeskModelAddOrUpdateEntryStatus" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of windows in an admin template when it is launched.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.DeleteSaveAndRecall" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a Save and Recall saved desk is manually deleted.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.DeleteTemplate" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when desk templates are deleted, is never false.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceTabCount" units="tabs"
    expires_after="2024-09-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted when a Floating Workspace desk is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.LaunchFromTemplate" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted when a Save and Recall desk is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.LoadTemplateGrid" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a user opens the template grid, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.NewSaveAndRecall" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when a new Save and Recall desk is created.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.NewTemplate" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a user creates a desk template, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.ReplaceSaveAndRecall" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when the user replaces a Save and Recall desk.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.ReplaceTemplate" enum="BooleanHit"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded when a Save and Recall desk cannot be parsed.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallTabCount" units="count"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of windows in a Save and Recall desk when it is saved.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAsTemplatePressed" enum="BooleanHit"
    expires_after="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time the &quot;Save desk as template&quot; option in the desk
    action context menu is pressed.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SavedDeskButtonsShown" enum="BooleanHit"
    expires_after="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time the desk action context menu opens and the saved desk
    options are shown.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SavedDeskMenuOptionsShown" enum="BooleanHit"
    expires_after="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time the desk action context menu opens and the saved desk
    options are not shown, but would have if the Saved Desk UI revamp feature
    was enabled.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveForLaterPressed" enum="BooleanHit"
    expires_after="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time the &quot;Save desk for later&quot; option in the desk
    action context menu is pressed.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.ShowSavedDeskButtonsRevampDisabled"
    enum="BooleanHit" expires_after="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time the saved desk buttons in the overview grid are shown.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.ShowSavedDeskButtonsRevampEnabled"
    enum="BooleanHit" expires_after="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted every time the saved desk buttons in the overview grid are viable to
    be shown, but don't appear, as the Saved Desk UI revamp feature is enabled.
    The saved desk options should apppear in the desk context menu instead.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.TabCount" units="count"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of windows in a template when it is saved.
  </summary>
</histogram>

<histogram name="Ash.Display.InternalDisplay.ActiveEffectiveResolution"
    enum="EffectiveResolution" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Display.{DisplayType}.ActiveEffectiveDPI" units="dpi"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The effective DPI of the {DisplayType} computed from active effective
    resolution and display physical size. The bucket value ranges from 50 to 500
    with bucket count of 90. This is emitted at regular intervals.
  </summary>
  <token key="DisplayType">
    <variant name="ExternalDisplay" summary="external display"/>
    <variant name="InternalDisplay" summary="internal display"/>
  </token>
</histogram>

<histogram name="Ash.Dock.Action" enum="DockedAction" expires_after="M85">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.EssentialSearch.Status" enum="EssentialSearchStatus"
    expires_after="2025-02-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the outcome of a call to chromeoscompliance API. Reported once per
    call. Chromeoscompliance API is called every time the user signs in, unlocks
    the device, or stays in session for 24 hours. This event would only occur if
    EssentialSearchEnabled policy set.
  </summary>
</histogram>

<histogram name="Ash.EventLatency.Core.NoOverflow.TotalLatency" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.EventLatency.{EventType}.TotalLatency.1MinAfterResume"
    units="microseconds" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.

    This metric is only recorded for 1 minute after the device is resumed.
  </summary>
  <token key="EventType">
    <variant name="KeyPressed"/>
    <variant name="MousePressed"/>
  </token>
</histogram>

<histogram name="Ash.ExtendedUpdates.DialogEvent"
    enum="ExtendedUpdatesDialogEventEnum" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of times an event on the Extended Updates opt-in dialog happened.
    Note that a user may open and close the dialog multiple times before finally
    opting in, so it's more useful to filter on unique clients.
  </summary>
</histogram>

<histogram name="Ash.ExtendedUpdates.EntryPointEvent"
    enum="ExtendedUpdatesEntryPointEventEnum" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of times an event related to the various entry points into the
    Extended Updates opt-in flow happened. These numbers only include owner
    users on unmanaged and opt-in required devices. Note that these events can
    happen multiple times for the same user, so it's more useful to filter on
    unique clients.
  </summary>
</histogram>

<histogram name="Ash.FirstWebContentsProfile.Recorded" enum="Boolean"
    expires_after="2025-01-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the Startup.FirstWebContents.* metrics were recorded for the first
    active web browser window in a ChromeOS session. Recorded once per ChromeOS
    session in which a browser window is restored. An example where this is
    false: When the post-login feature is enabled and the user has selected
    &quot;Ask every time&quot; for restoring their session, an overview mode
    window is active on startup rather than a browser window, so
    Startup.FirstWebContents metrics are skipped.
  </summary>
</histogram>

<histogram name="Ash.Float.FloatWindowCountsPerSession" units="windows"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Recorded the reason for template launch failures.</summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateLaunchTimeOut"
    enum="FloatingWorkspaceV2LaunchTemplateTimeoutType"
    expires_after="2024-02-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Record the floating workspace template upload status.</summary>
</histogram>

<histogram name="Ash.FocusMode.DNDStateOnFocusEnd"
    enum="DNDStateOnFocusEndType" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records interactions with Do Not Disturb during a Focus Mode session.
    Recorded once per session. Indicates the final state of Do Not Disturb and
    if a user changed the state during the session.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.DuringSession.ToggleEndSessionSource"
    enum="FocusModeEndSessionSource" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded whenever a focus session will be ended through the focus panel, the
    contextual panel, or the feature pod.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.EndingMomentBubbleAction"
    enum="FocusModeEndingMomentBubbleClosedReason" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Record the reason for the ending moment bubble closed.</summary>
</histogram>

<histogram name="Ash.FocusMode.MusicPausedSessionCount" units="count"
    expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When a session ends, record how many times the user paused the playlists
    which were played by the Focus Mode during the session.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.PercentOfSessionCompleted.{SessionDurationType}"
    units="%" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the percent of the session which was completed (bucketed by the
    final session duration) when a session is over. This is for the
    {SessionDurationType} type of `Short` (&lt; 11 mins), `Medium` (11 - 29
    mins), and `Long` (&gt; 29 mins).
  </summary>
  <token key="SessionDurationType">
    <variant name="Long"/>
    <variant name="Medium"/>
    <variant name="Short"/>
  </token>
</histogram>

<histogram name="Ash.FocusMode.PlaylistChosen" enum="FocusModePlaylistChosen"
    expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records the playlist which starts playing during a session.</summary>
</histogram>

<histogram name="Ash.FocusMode.PlaylistsDuringSession" units="count"
    expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When a session ends, record how many playlists were played during the
    session.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.PlaylistTypesSelectedDuringSession"
    enum="PlaylistTypesSelectedDuringSessionType" expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of playlists played during a session when a session ends.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.SessionDuration" units="minutes"
    expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the time in minutes since the session started when the session ends.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.SoundscapeLatency" units="ms"
    expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many milliseconds the user waited for a soundscape playlist to
    be played from clicking on the playlist while in a focus session or starting
    a session to play the current selected playlist.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.StartSession.ExistingMediaPlaying"
    enum="Boolean" expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits true when an existing media session is playing on the system on
    session start; otherwise, emits false.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.StartSession.HasSelectedTask" enum="Boolean"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits true when a task is selected on a session start; otherwise, emits
    false.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.StartSession.InitialDuration" units="minutes"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records a session duration in minutes when starting a focus session.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.StartSession.TaskState"
    enum="FocusModeStartedWithTaskState" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the state of the selected task when a focus mode session is started.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.StartSession.ToggleSource"
    enum="FocusModeStartSessionSource" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded whenever a focus session will be started through the focus panel or
    the feature pod.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.TasksCompleted" units="count"
    expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    When a session ends, record how many tasks were marked as completed by the
    user during the session.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.TasksSelected" units="count"
    expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the count of tasks selected throughout each focus session. Emitted
    when a session ends. Note that only one task can be selected at a time.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.TimeAdded.{TimeAddedType}" units="minutes"
    expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of minutes that were added to a session (bucketed by the
    initial session duration) when a session is over. This is for the
    {TimeAddedType} type of `Short` (&lt; 11 mins), `Medium` (11 - 29 mins), and
    `Long` (&gt; 29 mins).
  </summary>
  <token key="TimeAddedType">
    <variant name="Long"/>
    <variant name="Medium"/>
    <variant name="Short"/>
  </token>
</histogram>

<histogram name="Ash.FocusMode.YouTubeMusicLatency" units="ms"
    expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how many milliseconds the user waited for a YouTube Music playlist
    to be played from clicking on the playlist while in a focus session or
    starting a session to play the current selected playlist.
  </summary>
</histogram>

<histogram name="Ash.Frame.ColorChangeCount.{AppType}" units="count"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.FullRestore.Browser.FirstInputDelay" units="ms"
    expires_after="2025-07-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    This is the same latency as PageLoad.InteractiveTiming.FirstInputDelay4
    except it's recorded once per user session for the active browser window's
    foreground tab in a session restore (either a full ChromeOS-level session
    restore or a Chrome-specific restore). If a browser window that's not from a
    full session restore is active (ex: user opened manually), this metric is
    skipped.
  </summary>
</histogram>

<histogram name="Ash.FullRestore.ShowFullRestoreNotification" enum="BooleanHit"
    expires_after="2025-07-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted every time the full restore notification shows up.</summary>
</histogram>

<histogram name="Ash.FullRestore.ShowInformedRestoreDialog" enum="BooleanHit"
    expires_after="2025-07-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emmited every time the informed restore dialog shows up.</summary>
</histogram>

<histogram name="Ash.GameDashboard.ControlsFeatureToggleState"
    enum="BooleanEnabled" expires_after="2025-04-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the game controls feature is toggled on or off.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.ControlsHintToggleSource.{OnOrOff}"
    enum="GameDashboardMenu" expires_after="2025-04-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records where the game controls hint is toggled {OnOrOff}.</summary>
  <token key="OnOrOff">
    <variant name="Off" summary="game controls hint off"/>
    <variant name="On" summary="game controls hint on"/>
  </token>
</histogram>

<histogram name="Ash.GameDashboard.EditControlsWithEmptyState"
    enum="BooleanEnabled" expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether Game Controls is in the empty state when users start to edit
    the Game Controls.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.FunctionTriggered"
    enum="GameDashboardFunction" expires_after="2025-04-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records how often a specific function within the game dashboard is
    triggered.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.RecordingStartSource"
    enum="GameDashboardMenu" expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records where the recording starts from, main menu or toolbar.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.ScreenshotTakeSource"
    enum="GameDashboardMenu" expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records where the screenshot is taken from, main menu or toolbar.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.ToggleMainMenu.{OnOrOff}"
    enum="GameDashboardMainMenuToggleMethod" expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the ways of the game dashboard main menu is toggled {OnOrOff}.
  </summary>
  <token key="OnOrOff">
    <variant name="Off" summary="close main menu"/>
    <variant name="On" summary="open main menu"/>
  </token>
</histogram>

<histogram name="Ash.GameDashboard.ToolbarClickToExpandState"
    enum="BooleanEnabled" expires_after="2025-04-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the tool bar is toggled to expanded or collapsed.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.ToolbarNewLocation"
    enum="GameDashboardToolbarSnapLocation" expires_after="2025-04-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records where the toolbar is repositioned.</summary>
</histogram>

<histogram name="Ash.GameDashboard.ToolbarToggleState" enum="BooleanEnabled"
    expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records whether the tool bar is toggled on or off.</summary>
</histogram>

<histogram name="Ash.GameDashboard.WelcomeDialogNotificationToggleState"
    enum="BooleanEnabled" expires_after="2025-04-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records whether the welcome notification is toggled on or off.
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.Api.Classroom.CourseWorkItemsPerStudentCourseCount"
    units="course work items" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.StudentCoursesCount"
    units="courses" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>
</histogram>

<histogram name="Ash.Glanceables.Api.Classroom.StudentDataFetchTime" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates the time needed to fetch all student data (courses,
    course work, student submissions).
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.Api.Classroom.StudentSubmissionsPerStudentCourseCount"
    units="student submissions" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Tasks.ProcessedTasksCount" units="tasks"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.InsertTask"/>
    <variant name="Tasks.PatchTask"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.Api.{Method}.PagesCount" units="pages"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.InsertTask"/>
    <variant name="Tasks.PatchTask"/>
  </token>
</histogram>

<histogram
    name="Ash.Glanceables.Classroom.Student.AssignmentListShownTime.{OccurrenceType}.{AssignmentListType}"
    units="ms" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.AddTaskButtonUsageForNewTasksUsersTT"
    enum="Boolean" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records true if a new Tasks user has interacted (pressed) the &quot;Add new
    task&quot; button, false otherwise. &quot;New Tasks users&quot; means the
    user has only one tasks list with zero tasks in it. Applies only for the
    Trusted Testers UI. May be recorded multiple times per user.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Classroom.UserAction"
    enum="ClassroomUserAction" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User actions performed in the Time Management Glanceables bubble for Google
    Classroom
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.FeatureStatus"
    enum="TimeManagementGlanceablesFeatureStatus" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether time management glanceables are enabled, and the reason they are
    enabled. Recorded when the feature state gets evaluated - either when an
    eligible user profile gets created, or glanceables policy changes.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.LoginToShowTime" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.AddedTasks.{Emptiness}"
    units="int" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of times the user created a task in the in-line task
    creation UI while a task list was selected in the tasks time management
    glanceable bubble. The histogram is recorded when the time management
    glanceables bubble gets closed, or the user changes the selected task list.
    The count of added tasks is reset at the same time. The histogram is
    recorded separately depending on whether the selected task list was
    initially empty.
  </summary>
  <token key="Emptiness">
    <variant name="InEmptyList"/>
    <variant name="InNonEmptyList"/>
  </token>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.AddedTasksForFirstUsage"
    units="int" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of times the user created a task in the in-line task
    creation UI while a task list was selected in the tasks time management
    glanceable bubble. The histogram is recorded only if the user is considered
    a potentially new tasks user (they have a single empty task list in Google
    Tasks). It's recorded when the glanceables bubble gets closed.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.AddTaskResult"
    enum="ModifyGlanceablesTaskResult" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of use interaction with the tasks glanceables UI to add a new
    task. When the user clicks &quot;Add new task&quot; button, the tasks
    glanceables UI displays a textfield to enter a new task title. This metric
    records whether the user entered the task title, initiating an API call to
    create a task, or whether they dismissed it while it was empty.
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.TimeManagement.Tasks.ChildResizing.AnimationSmoothness"
    units="%" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The animation smoothness of the resize animation of the glanceables tasks
    bubble view. This occurs when a task is entering edit mode or an editted
    task is committed.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.ModifyTaskResult"
    enum="ModifyGlanceablesTaskResult" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of use interaction with the tasks glanceables UI to modify a
    task. When the user clicks on a task title, the tasks glanceables UI
    displays a textfield that lets the user update the task title. This metric
    records whether the user changed the task title, initiating an API call to
    modify the task, or whether they dismissed it with no changes.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.TasksListChangeCount"
    units="int" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Tasks.UserAction"
    enum="TasksUserAction" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    User actions performed in the Time Management Glanceables bubble for Google
    Tasks
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.TasksCountInDefaultTaskList"
    units="tasks" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total number of tasks shown in the default (initially selected)
    task list.
  </summary>
</histogram>

<histogram
    name="Ash.Glanceables.TimeManagement.{GlanceableBubble}.ChangeListToLoadTime.{Status}"
    units="ms" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Glanceables.TimeManagement.{GlanceableBubble}.{ExpandState}.AnimationSmoothness"
    units="%" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The animation smoothness of the expand/collapse animation of the glanceables
    bubble. This occurs when the expand state changes which is usually triggered
    by clicking the expand button on the glanceables bubble view.
  </summary>
  <token key="GlanceableBubble">
    <variant name="Classroom"/>
    <variant name="Tasks"/>
  </token>
  <token key="ExpandState">
    <variant name="Collapse"/>
    <variant name="Expand"/>
  </token>
</histogram>

<histogram
    name="Ash.Glanceables.TimeManagement{GlanceableBubble}.TotalShowTime"
    units="ms" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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. Recorded when {GlanceableBubble} glanceables
    bubble is shown.
  </summary>
  <token key="GlanceableBubble">
    <variant name="" summary="either"/>
    <variant name=".Classroom" summary="Google Classroom"/>
    <variant name=".Tasks" summary="Google Tasks"/>
  </token>
</histogram>

<histogram name="Ash.Homescreen.AnimationSmoothness" units="%"
    expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Gestures supported by the in-app hotseat.</summary>
</histogram>

<histogram
    name="Ash.HotseatTransition.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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} Warning: this histogram was
    expired from 2023-09-06 to 2025-02-22; data may be missing.
  </summary>
  <token key="HotseatTransitionType" variants="HotseatTransitionType"/>
</histogram>

<histogram name="Ash.HotseatTransition.Drag.PresentationTime" units="ms"
    expires_after="2025-08-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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. Warning: this histogram
    was expired from 2023-10-25 to 2025-02-22; data may be missing.
  </summary>
</histogram>

<histogram
    name="Ash.HotseatWidgetAnimation.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2025-05-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-18">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-18">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-18">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-18">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.KcerPkcs12Migration.Events"
    enum="KcerPkcs12MigrationEvent" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks events related the migration of PKCS#12 certs from the NSS public
    slot into the private slot provided by Chaps.
  </summary>
</histogram>

<histogram name="Ash.KcerRollbackHelper.Events"
    enum="NssDbClientCertsRollbackEvent" expires_after="2025-03-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks events related to the rollback of double written keys and users
    certificates from the software backed Chaps storage to the NSS DB.
  </summary>
</histogram>

<histogram name="Ash.Lacros.Launch.Mode" enum="LacrosLaunchMode"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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.LacrosMigrationStatus2" enum="LacrosMigrationStatus"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.

    This metric gets emitted once when a new session is started.
  </summary>
</histogram>

<histogram name="Ash.LacrosMigrationStatus2.Daily" enum="LacrosMigrationStatus"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.LacrosMigrationStatus2&quot; but it is emitted at
    least once a day. 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.

    This metric gets emitted at least once a day.
  </summary>
</histogram>

<histogram name="Ash.Login.ArcUiAvailableAfterLogin.Duration" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    ARC boot completion..
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.AuthMethod.Switched"
    enum="AuthMethodSwitchType" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.UserClicks" enum="LockScreenUserClickTarget"
    expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.LoggedInStateChanged" units="ms"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time from the OnAuthSuccess Chrome OS cryptohome login event and
    LoggedInStateChanged event.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.AuthMethod.Switched"
    enum="AuthMethodSwitchType" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The count of auth method switching actions on ChromeOS login screen.

    Warning: this histogram was expired from 2024-01-14 to 2024-04-24; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.AuthMethod.Used.ClamShellMode"
    enum="AuthMethod" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the cryptohome migration banner was shown on the Chrome OS login
    screen.

    Warning: this histogram was expired from 2024-02-04 to 2024-04-24; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Login.Login.UserClicks" enum="LoginScreenUserClickTarget"
    expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>What shelf buttons or trays are clicked in the OOBE.</summary>
</histogram>

<histogram name="Ash.Login.PinAutosubmit.Backfill"
    enum="PinAutosubmitBackfillEvent" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-11-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.TotalFirstSessionDuration" units="minutes"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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 name="Ash.LoginAnimation.Duration2.{TabletOrClamshell}" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <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>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram base="true" name="Ash.LoginAnimation.Jank" units="%"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.LoginPerf.AutoRestore.AllBrowserWindowsCreated" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    creation of all expected restored browser windows.

    This metric is reported only if session is restored automatically.
  </summary>
</histogram>

<histogram name="Ash.LoginPerf.AutoRestore.AllBrowserWindowsPresented"
    units="ms" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of how long it took for all pixels of expected restored windows
    to be rendered after primary user logged in (i.e. a successful cryptohome
    mount).

    This metric is reported only if session is restored automatically.
  </summary>
</histogram>

<histogram name="Ash.LoginPerf.AutoRestore.AllBrowserWindowsShown" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    the full manifestation of all expected restored browser windows.

    This metric is reported only if session restore is automatic.
  </summary>
</histogram>

<histogram name="Ash.LoginPerf.{RestoreMode}.AllShelfIconsLoaded" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    the complete loading of all pinned button icons for restored windows.
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram name="Ash.LoginPerf.{RestoreMode}.ArcUiAvailableAfterLogin"
    units="ms" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    ARC boot completion..
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram
    name="Ash.LoginPerf.{RestoreMode}.PostLoginAnimation.Duration.{TabletOrClamshellMode}"
    units="ms" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <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>
  <token key="RestoreMode" variants="RestoreMode"/>
  <token key="TabletOrClamshellMode" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.LoginPerf.{RestoreMode}.PostLoginAnimation.Jank.{TabletOrClamshellMode}"
    units="%" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Jank metrics of all animations applied during the login process. This
    represents how often the frame update rate changed during animation.
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
  <token key="TabletOrClamshellMode" variants="DisplayModes"/>
</histogram>

<histogram
    name="Ash.LoginPerf.{RestoreMode}.PostLoginAnimation.Smoothness.{TabletOrClamshellMode}"
    units="%" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Relative smoothness of all animations applied during the login process. 100%
    represents the ideal smoothness for 60 frames per second.
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
  <token key="TabletOrClamshellMode" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.LoginPerf.{RestoreMode}.ShelfLoginAnimationEnd" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of how long it took to load all the shelf icons of restored
    windows after primary user logged in (i.e. a successful cryptohome mount).
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram name="Ash.LoginPerf.{RestoreMode}.TotalDuration" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between when sign-in authentication is started and when post login
    animation finishes. This metric corresponds to BootTime.Login2.
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram name="Ash.LoginSessionRestore.AllBrowserWindowsCreated" units="ms"
    expires_after="2024-10-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    creation of all expected restored browser windows.
  </summary>
</histogram>

<histogram name="Ash.LoginSessionRestore.AllBrowserWindowsPresented" units="ms"
    expires_after="2024-10-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of how long it took for all pixels of expected restored windows
    to be rendered after primary user logged in (i.e. a successful cryptohome
    mount).
  </summary>
</histogram>

<histogram name="Ash.LoginSessionRestore.AllBrowserWindowsShown" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    the full manifestation of all expected restored browser windows.
  </summary>
</histogram>

<histogram name="Ash.LoginSessionRestore.AllShelfIconsLoaded" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time between primary user logged in (i.e. a successful cryptohome mount) and
    the complete loading of all pinned button icons for restored windows.
  </summary>
</histogram>

<histogram name="Ash.LoginSessionRestore.ShelfLoginAnimationEnd" units="ms"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of how long it took to load all the shelf icons of restored
    windows after primary user logged in (i.e. a successful cryptohome mount).
  </summary>
</histogram>

<histogram name="Ash.MagicBoost.DisclaimerView.{OptInFeatures}"
    enum="DisclaimerViewAction" expires_after="2025-07-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the actions in the magic boost disclaimer view, which is triggered by
    the {OptInFeatures}. Recorded when the magic boost disclaimer view is shown
    or any button in the view is clicked.
  </summary>
  <token key="OptInFeatures">
    <variant name="HmrOnly" summary="only HMR feature"/>
    <variant name="OrcaAndHmr" summary="both Orca and HMR"/>
    <variant name="Total"
        summary="no filter is added, records the total number"/>
  </token>
</histogram>

<histogram name="Ash.Mahi.ButtonClicked" enum="PanelButton"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when any button in the web Mahi Penel widget is activated.
  </summary>
</histogram>

<histogram name="Ash.Mahi.Feedback" enum="BooleanThumbsUp"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the type of feedback that a user has for the Mahi feature. Emitted
    when users click the thumbs up or thumbs down button in the panel.
  </summary>
</histogram>

<histogram name="Ash.Mahi.QuestionAnswer.LoadingTime" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the time it takes to answer the question inside the Mahi panel.
    Emitted when an answer text is fully loaded and shows up.
  </summary>
</histogram>

<histogram name="Ash.Mahi.QuestionCountPerMahiSession" units="count"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the count of questions in each Mahi session. Emitted when a Mahi
    session ends, including: 1. Content is refreshed. 2. Mahi UI is closed.
  </summary>
</histogram>

<histogram name="Ash.Mahi.QuestionSource" enum="MahiQuestionSource"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the sources of questions sent to the Mahi backend. Emitted when a
    question is posted.
  </summary>
</histogram>

<histogram name="Ash.Mahi.Summary.LoadingTime" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the time it takes to load the summary inside the Mahi panel. Emitted
    when summary text is fully loaded and shows up.
  </summary>
</histogram>

<histogram name="Ash.Mahi.TimesPanelOpenedPerSession" units="count"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the times the Mahi panel was opened in a session. The metric is
    emitted once per session when the session is no longer active, either
    through a session state change or on shutdown.
  </summary>
</histogram>

<histogram name="Ash.Mahi.UserJourneyTime" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records time user spent in Mahi Panel. Starts measuring time whenever the
    MahiPanelView is constructed, and records metric when the view is destroyed.
  </summary>
</histogram>

<histogram name="Ash.MantaService.{MantaMetricType}.StatusCode"
    enum="MantaStatusCode" expires_after="2025-06-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Record the status code of {MantaMetricType} requests.</summary>
  <token key="MantaMetricType" variants="MantaMetricType"/>
</histogram>

<histogram name="Ash.MantaService.{MantaMetricType}.TimeCost" units="ms"
    expires_after="2025-06-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the time cost of successful {MantaMetricType} requests.
  </summary>
  <token key="MantaMetricType" variants="MantaMetricType"/>
</histogram>

<histogram name="Ash.Media.CameraPrivacySwitch.Event"
    enum="CameraPrivacySwitchEvent" expires_after="2023-09-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the connection to mojo service manager is lost before during ash
    running.
  </summary>
</histogram>

<histogram name="Ash.MultiDisplay.WindowsMovedAfterRemap.DisplayRotated"
    enum="Boolean" expires_after="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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"
    enum="Boolean" expires_after="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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-05-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.ScheduleType.Initial"
    enum="AshNightLightScheduleType" expires_after="2025-06-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The selected Night Light schedule type. Emitted on login.</summary>
</histogram>

<histogram name="Ash.NightLight.Temperature"
    enum="AshNightLightTemperatureRanges" expires_after="2022-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.NightLight.Temperature.Initial" units="%"
    expires_after="2025-06-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The current Night Light color temperature. Low temperatures are cooler,
    higher temperature are warmer. Emitted on login.
  </summary>
</histogram>

<histogram name="Ash.Notification.ClearAllStacked.AnimationSmoothness"
    units="%" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.ImageMemorySizeInKB" units="KB"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the memory size in KB of notification images on the 1.0 scale factor.
    Emitted when setting a notification's image.
  </summary>
</histogram>

<histogram name="Ash.Notification.MoveDown.AnimationSmoothness" units="%"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.RemovedByLimitEnforcement"
    units="notification removed" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when a notification is removed due to the number of notifications
    reaching the limit.
  </summary>
</histogram>

<histogram name="Ash.Notification.SmallImageMemorySizeInKB" units="KB"
    expires_after="2024-09-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the memory size in KB of notification small images on the 1.0 scale
    factor. Emitted when setting a notification's small image.
  </summary>
</histogram>

<histogram name="Ash.Notification.SwipeControl.FadeIn.AnimationSmoothness"
    units="%" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.NotificationResource.ActionIconSizeInKB" units="KB"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the memory size in KB of notification source action icons on the 1.0
    scale factor. Emitted when applying an action icon to a notification built
    from a notification resource.
  </summary>
</histogram>

<histogram name="Ash.NotificationResource.BadgeMemorySizeInKB" units="KB"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the memory size in KB of notification source badges on the 1.0 scale
    factor. Emitted when applying a badge to a notification built from a
    notification resource.
  </summary>
</histogram>

<histogram name="Ash.NotificationResource.IconMemorySizeInKB" units="KB"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the memory size in KB of notification source icons on the 1.0 scale
    factor. Emitted when applying an icon to a notification built from a
    notification resource.
  </summary>
</histogram>

<histogram name="Ash.NotificationResource.ImageMemorySizeInKB" units="KB"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the memory size in KB of notification source images on the 1.0 scale
    factor. Emitted when applying an image to a notification built from a
    notification resource.
  </summary>
</histogram>

<histogram
    name="Ash.NotificationView.ConvertSingleToGroup.{Animation}.AnimationSmoothness"
    units="%" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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 `TimeRange` buckets if the user
    performs the nudge's suggested action. These buckets are all exclusive.
  </summary>
  <token key="TimeRange">
    <variant name="Within1h"/>
    <variant name="Within1m"/>
    <variant name="WithinSession"/>
  </token>
</histogram>

<histogram name="Ash.NotifierFramework.Nudge.{PrimaryOrSecondary}ButtonPressed"
    enum="NudgeCatalogName" expires_after="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the nudge catalog name when a user presses one of the nudge's
    buttons.
  </summary>
  <token key="PrimaryOrSecondary">
    <variant name="Primary"/>
    <variant name="Secondary"/>
  </token>
</histogram>

<histogram
    name="Ash.NotifierFramework.PinnedSystemNotification.ShownWithoutIcon"
    enum="NotificationCatalogName" expires_after="2025-02-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records a `catalog_name` whenever a pinned notification is shown without
    having provided a `vector_small_image` through its `Notification` object.
    All pinned notifications must have an icon, so the metric will be used to
    track misbehaving notifications.
  </summary>
</histogram>

<histogram
    name="Ash.NotifierFramework.PinnedSystemNotification.ShownWithoutTitle"
    enum="NotificationCatalogName" expires_after="2025-02-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records a `catalog_name` whenever a pinned notification is shown without
    having provided a `title` through its `Notification` object. All pinned
    notifications must have a title, so the metric will be used to track
    misbehaving notifications.
  </summary>
</histogram>

<histogram name="Ash.NotifierFramework.Toast.Dismissed.{TimeRange}"
    enum="ToastCatalogName" expires_after="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="ms"
    expires_after="2025-05-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.ClickedActionButton.{ButtonIndex}"
    enum="NotificationCatalogName" expires_after="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks action button presses on system notifications. Records the
    notification catalog name in one of the button index buckets.
  </summary>
  <token key="UnpinnedOrPinned">
    <variant name=""/>
    <variant name="Pinned"/>
  </token>
  <token key="ButtonIndex">
    <variant name="1"/>
    <variant name="2"/>
    <variant name="3"/>
    <variant name="4"/>
  </token>
</histogram>

<histogram
    name="Ash.NotifierFramework.{UnpinnedOrPinned}SystemNotification.Popup.Dismissed.{TimeRange}"
    enum="NotificationCatalogName" expires_after="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="ms" expires_after="2025-01-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.AuthFactorMigrationResult.{AuthFactorMigrationName}"
    enum="AuthFactorMigrationResult" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of {AuthFactorMigrationName} migration. Reported on each login
    after the migrations are run.
  </summary>
  <token key="AuthFactorMigrationName">
    <variant name="KnowledgeFactorHashInfoMigration"/>
    <variant name="RecoveryFactorHsmPubkeyMigration"/>
  </token>
</histogram>

<histogram name="Ash.OSAuth.Login.ConfiguredAuthFactors.{AuthFactor}"
    enum="Boolean" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="LocalPassword"/>
    <variant name="Recovery"/>
    <variant name="SmartCard"/>
  </token>
</histogram>

<histogram name="Ash.OSAuth.Login.Times.{LoginStage}" units="ms"
    expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Time spent during particular stages of login process. Recorded upon
    successful login.
  </summary>
  <token key="LoginStage">
    <variant name="EarlyPrefsParse"/>
    <variant name="EarlyPrefsRead"/>
    <variant name="FactorConfigTotal"
        summary="Includes EarlyPrefsRead/Parse, FactorMigrations,
                 PolicyEnforcement"/>
    <variant name="FactorMigrations"/>
    <variant name="PolicyEnforcement"/>
  </token>
</histogram>

<histogram
    name="Ash.OSAuth.{AuthenticationSurface}.NbPasswordAttempts.{AuthenticationOutcome}"
    units="attempts" expires_after="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-06-21">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Relative smoothness of animations when exiting overview mode, recorded when
    the animation completes. 100% represents ideally smooth 60 frames per
    second. {OverviewAnimationMode}. Warning: this histogram was expired from
    2024-02-07 to 2024-07-25; data may be missing.
  </summary>
  <token key="OverviewAnimationMode" variants="OverviewAnimationMode"/>
</histogram>

<histogram name="Ash.Overview.ArrowKeyPresses" units="units"
    expires_after="2025-06-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.DelayedDeskBar.PresentationTime" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the enter-overview animation has finished/the desk bar is opened
    to when the next frame is shown to the user. Note this metric is only
    recorded in cases where the desk bar is opened after the enter-overview
    animation completes; it's not recorded in overview sessions where the desk
    bar opens immediately at the beginning of the session. In the latter case,
    the time to open the desk bar is incorporated into
    Ash.Overview.Enter.PresentationTime.
  </summary>
</histogram>

<histogram name="Ash.Overview.DeskBarInitLatency" units="ms"
    expires_after="2025-02-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the amount of time it takes to initialize the desk bar widget when
    entering overview mode. Recorded each time overview mode is entered.
  </summary>
</histogram>

<histogram name="Ash.Overview.DeskBarNumLayersMirrored" units="units"
    expires_after="2025-02-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of ui/compositor layers that were mirrored when rendering
    the desk bar as part of overview mode. More specifically, these are the
    layers mirrored to create the &quot;mini views&quot; of each desk within the
    desk bar. Recorded once per overview mode session in which the desk bar was
    present; if the mirrored layers are rebuilt after the first rendering, this
    is not counted. Not recorded for overview mode sessions without the desk
    bar.
  </summary>
</histogram>

<histogram name="Ash.Overview.DeskBarVisibility" enum="DeskBarVisibility"
    expires_after="2025-02-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks whether the desk bar was opened during an overview mode session, and
    if so, when it was opened (within or after the first frame). Recorded once
    per overview session.
  </summary>
</histogram>

<histogram name="Ash.Overview.DeskCount" units="units"
    expires_after="2025-02-07">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of desks open when entering overview mode. Recorded each time
    overview mode is entered. This does not take into account the user creating
    new desks while in overview mode afterwards.
  </summary>
</histogram>

<histogram name="Ash.Overview.EndAction" enum="OverviewEndAction"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when exiting overview mode. Recording the reasons for ending
    overview mode. E.g, pressing the overview button at status area.

    Note: M130 has a fix. When exiting overview mode for the &quot;informed
    restore&quot; dialog after login (prompting the user whether they want to
    restore windows from the previous session), this was being logged as
    &quot;Pressing shortcut F5&quot;. This has been fixed to be logged under
    &quot;&quot;After user login, close dialog ...&quot;.
  </summary>
</histogram>

<histogram name="Ash.Overview.Enter.PresentationTime" units="ms"
    expires_after="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Enter.PresentationTime.WithDeskBarAndNumWindows{NumWindows}"
    units="ms" expires_after="2025-02-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</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. Recorded once per overview
    session in which a) there are {NumWindows} windows open across all desks b)
    the desk bar is rendered immediately in the very first overview mode frame
    c) the desk bar contains previews of each desk's contents. All other
    overview sessions that do not meet these criteria are not recorded.
  </summary>
  <token key="NumWindows" variants="NumWindows"/>
</histogram>

<histogram name="Ash.Overview.Exit.PresentationTime" units="ms"
    expires_after="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Exit.PresentationTime.WithDeskBarAndNumWindows{NumWindows}"
    units="ms" expires_after="2025-02-14">
  <owner>[email protected]</owner>
  <owner>[email protected]</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. Recorded once per overview session
    in which a) there are {NumWindows} windows open across all desks b) the desk
    bar was rendered at some point during the overview session c) the desk bar
    contains previews of each desk's contents. All other overview sessions that
    do not meet these criteria are not recorded.
  </summary>
  <token key="NumWindows" variants="NumWindows"/>
</histogram>

<histogram name="Ash.Overview.Items" units="units" expires_after="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when entering overview mode. Recording the reasons for starting
    overview mode. E.g, pressing the overview button at status area.

    Note: M130 has a fix. When overview mode was started for the &quot;informed
    restore&quot; dialog after login (prompting the user whether they want to
    restore windows from the previous session), this was being logged as
    &quot;Pressing shortcut F5&quot;. This has been fixed to be logged under
    &quot;&quot;After user login, if full restore...&quot;.
  </summary>
</histogram>

<histogram name="Ash.Overview.TimeBetweenActiveWindowChanges" units="seconds"
    expires_after="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-11">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-11">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Overview.WindowOcclusionCalculator.EnterLatency"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the amount of time window occlusion calculations take when entering
    overview mode. The window occlusion calculations are used to optimize the
    desk bar that appears as part of overview mode. Recorded every time overview
    mode is opened and the DeskBarWindowOcclusionOptimizationEnabled experiment
    flag is enabled.
  </summary>
</histogram>

<histogram name="Ash.Overview.WindowOcclusionCalculator.ExitLatency" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the amount of time window occlusion calculations take when exiting
    overview mode. The window occlusion calculations are used to optimize the
    desk bar that appears as part of overview mode. Recorded every time overview
    mode is closed and the DeskBarWindowOcclusionOptimizationEnabled experiment
    flag is enabled.
  </summary>
</histogram>

<histogram name="Ash.Peripheral.ConnectivityResults"
    enum="PeripheralConnectivityResult" expires_after="2024-08-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-07-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-04-28">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Ambient.LinkToGooglePhotosClicked"
    enum="BooleanHit" expires_after="2025-06-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted whenever the user clicks the hyperlink to config Google Photos from
    the ambient UI albums selection subpage.
  </summary>
</histogram>

<histogram name="Ash.Personalization.AmbientMode.AlbumsPath"
    enum="AmbientModeTopicSource" expires_after="2025-01-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when a user navigates to the ambient mode albums selection page in
    the Personalization Hub. Record the type of albums the user visits.
  </summary>
</histogram>

<histogram name="Ash.Personalization.AmbientMode.AnimationTheme2"
    enum="AmbientModeAnimationTheme" expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-11-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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"
    enum="BooleanHit" expires_after="2024-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Valid2"
    enum="BooleanValid" expires_after="2024-07-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-15">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Picker.Search.{Provider}Provider.QueryTime" units="ms"
    expires_after="2025-01-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay from when a search request was sent to the {Provider} provider,
    commonly when &quot;start search&quot; is called on the provider, to when
    the search results are received from the provider, commonly when the
    provider calls our provided callback for search results. If a request is
    cancelled before a search result is returned, this histogram is not
    recorded.
  </summary>
  <token key="Provider">
    <variant name="Category"/>
    <variant name="Clipboard"/>
    <variant name="Date"/>
    <variant name="Drive"/>
    <variant name="Editor"/>
    <variant name="Emoji"/>
    <variant name="File"/>
    <variant name="Math"/>
    <variant name="Omnibox"/>
  </token>
</histogram>

<histogram name="Ash.Picker.Session.InputReadyLatency" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay from when the user triggered the picker to when the picker search
    field is focused for the first time. If the picker is triggered by an
    accelerator, the start time is calculated as the event timestamp of the
    accelerator. Recorded when the picker search field receives focus for the
    first time.
  </summary>
</histogram>

<histogram name="Ash.Picker.Session.Outcome" enum="PickerSessionOutcome"
    expires_after="2025-01-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The outcome of a Picker session to record how a user finished a session.
    Recorded when the Picker widget is destroyed.
  </summary>
</histogram>

<histogram name="Ash.Picker.Session.PresentationLatency.SearchField" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay from when the search field content changes to when the next frame
    in the widget is presented to the screen. If multiple content changes result
    in the same frame being presented, the delay is calculated from the first
    content change. Recorded whenever the picker search field contents changes
    and a frame is successfully presented to the screen.
  </summary>
</histogram>

<histogram name="Ash.Picker.Session.PresentationLatency.SearchResults"
    units="ms" expires_after="2025-01-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay from when the search results are updated to when the next frame in
    the widget is presented to the screen. If multiple content changes result in
    the same frame being presented, the delay is calculated from the first
    content change. Recorded whenever the picker publishes search results and a
    frame is successfully presented to the screen.
  </summary>
</histogram>

<histogram name="Ash.Picker.Session.SearchLatency" units="ms"
    expires_after="2025-01-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The delay from when the search field content changes to when the search
    results are received. If multiple content changes happen before search
    results are received, the time is calculated from the latest content change.
    Recorded whenever search results are received and there was a content change
    before that.
  </summary>
</histogram>

<histogram name="Ash.Picker.TimeToFirstGifFrame" units="ms"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The time it takes to download and decode the first frame of a GIF in Picker.
    Recorded starting at when the download request is issued, ending at when a
    ImageView is set with the first frame (of either a preview thumbnail or the
    full GIF).
  </summary>
</histogram>

<histogram name="Ash.Pine.DialogClosed" enum="ClosePineDialogType"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted whenever the informed restore dialog closes.</summary>
</histogram>

<histogram name="Ash.Pine.DialogScreenshotVisibility" enum="Boolean"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits true if the informed restore dialog is shown with a shutdown
    screenshot inside. Emits false if the informed restore dialog is shown with
    the app lists view inside.
  </summary>
</histogram>

<histogram name="Ash.Pine.OnboardingDialog.TurnRestoreOn" enum="Boolean"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The action taken by the user when the onboarding dialog is shown and the
    user had Restore off. Emits true if the user accepted the dialog and turned
    Restore to 'Ask every time', false otherwise.
  </summary>
</histogram>

<histogram name="Ash.Pine.ScreenshotDecodeDuration" units="ms"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time it took to fetch the shutdown screenshot from the disk
    and decode it.
  </summary>
</histogram>

<histogram name="Ash.Pine.ScreenshotEncodeAndSaveDuration" units="ms"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time it took to encode and save the screenshot to the disk
    that we captured on shutdown.
  </summary>
</histogram>

<histogram name="Ash.Pine.ScreenshotOnShutdownStatus"
    enum="ScreenshotOnShutdownStatus" expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded the status on taking the screenshot on shutdown. The recorded enum
    indicates it succeededs or failed with specific reason.
  </summary>
</histogram>

<histogram name="Ash.Pine.ScreenshotTakenDuration" units="ms"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time it took to capture a screenshot of the active desk on
    shutdown. This screenshot will only be taken if there are windows opened in
    the desk.
  </summary>
</histogram>

<histogram name="Ash.Pine.TimeToAction.{PineContentsType}" units="ms"
    expires_after="2025-04-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The amount of time in ms that user takes from when they see the pine
    contents view begin to fade in, to when they click the restore or cancel
    buttons.
  </summary>
  <token key="PineContentsType">
    <variant name="Listview"/>
    <variant name="Screenshot"/>
  </token>
</histogram>

<histogram name="Ash.Pip.AndroidPipUseTime" units="ms"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.PostLoginGlanceables.HypotheticalFetchEvent.{Delay}"
    enum="DataFetchEventSource" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded any time a code path is triggered which would require post login
    glanceable data to be fetched and/or displayed to the user. This histogram
    is meant to be used for estimating how often we would typically want to
    fetch and then show this data.

    This histogram is split by different variants. The &quot;No Delay&quot;
    variant is the raw query rate, while the other delay variants are to
    experiment with throttling, where the metric will not be recorded more than
    once within any single 15/30 second or 5/15/30 minute time span.
  </summary>
  <token key="Delay">
    <variant name="5MinuteDelay" summary="5 Minute Delay"/>
    <variant name="15MinuteDelay" summary="15 Minute Delay"/>
    <variant name="15SecondDelay" summary="15 Second Delay"/>
    <variant name="30MinuteDelay" summary="30 Minute Delay"/>
    <variant name="30SecondDelay" summary="30 Second Delay"/>
    <variant name="NoDelay" summary="No Delay"/>
  </token>
</histogram>

<histogram name="Ash.PowerNotification.CriticalNotificationOutcome"
    enum="CriticalNotificationOutcome" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the outcome after a critical battery notification appears.
  </summary>
</histogram>

<histogram
    name="Ash.PowerNotification.CriticalNotificationToOutcomeDuration.{Outcome}"
    units="seconds" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the time interval from when a critical battery notification appears
    to when an outcome such as plugging in, user-initiated shutdown, automatic
    shutdown due to low battery, suspension or crash occurs.
  </summary>
  <token key="Outcome" variants="CriticalNotificationOutcome"/>
</histogram>

<histogram name="Ash.PowerNotification.TimeToEmptyForCritialState"
    units="seconds" expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the remaining battery time when the status changes to critical and
    the corresponding notification is displayed. This metric is recorded only
    once per transition to critical state.
  </summary>
</histogram>

<histogram name="Ash.PowerNotification.TimeToEmptyPluggedIn" units="seconds"
    expires_after="2025-05-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the remaining battery time when the device transitions from a
    critical state to charging state upon connecting the charger. Fires at the
    moment charger is connected.
  </summary>
</histogram>

<histogram name="Ash.PowerSoundsController.PluggedInBatteryLevel" units="%"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.SpeechRecognitionEndState.{Location}"
    enum="SpeechRecognitionEndState" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</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;.
  </summary>
  <token key="DeviceMode">
    <variant name="Clamshell" summary="Regular mode"/>
    <variant name="Tablet" summary="Tablet mode"/>
  </token>
</histogram>

<histogram name="Ash.Report.InitializerState" enum="ReportState"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded after browser startup for each state that the report initializer
    enters. Each state in the initializer is a precondition check, such as
    device settings being owned, start up delay wait, oobe being completed, and
    device policies being trusted. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.IsActivateDateSet" enum="BooleanSuccess"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record whether the ActivateDate was read from VPD and parsed successfully.
    This histogram is recorded after browser start up, when the device attempts
    to report the churn monthly cohort use case. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.IsLastPowerwashTimeRead" enum="BooleanSuccess"
    expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record success when the last powerwash time file is read successfully. This
    histogram is recorded after browser start up, while checking the
    preconditions of whether to initialize the ReportController. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.IsOobeCompleted" enum="BooleanSuccess"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record success when the oobe completed file was created more than 1 minute
    from when the oobe file stat is read. This histogram is recorded after
    browser start up, while checking the preconditions of whether to initialize
    the ReportController. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.IsPsmSecretSet" enum="BooleanSuccess"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record whether the Psm Secret key is successfully read and parsed from VPD.
    This histogram is recorded after browser start up, while checking the
    preconditions of whether to initialize the ReportController. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.IsPsm{PsmUseCase}OprfResponseBodySet"
    enum="BooleanSuccess" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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.IsSystemClockSynced" enum="BooleanSuccess"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded if the system clock is synced successfully. This histogram is
    recorded after browser start up and after ReportController is initialized
    and connected to the network. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.IsTestDevice" enum="Boolean"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded as true if the ChromeOS device is a VM or in Cros Debug mode. This
    histogram is recorded after browser start up, while checking the
    preconditions of whether to initialize the ReportController. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.MarketSegment" enum="ReportMarketSegment"
    expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the market segment assigned to the ChromeOS device after oobe is
    completed. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.PreservedFileReadAndParsed" enum="BooleanSuccess"
    expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.StartupDelay" units="minutes"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time delay before Fresnel reporting should start, based on the
    first chrome run time. Reporting starts if the device has been running for
    greater than 1 hour. A 1 hour threshold is used to give the device enough
    time to avoid spurious check membership requests to the PSM server after
    device powerwash. ChromeOS Only.
  </summary>
</histogram>

<histogram name="Ash.Report.TrustedStatus" enum="ReportTrustedStatus"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the device policy trusted status assigned to the ChromeOS device.
    This is recorded after browser startup and after the oobe completed file was
    written for at least 1 minute. ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.Report.{PsmUseCase}.IsDevicePingRequired" enum="Boolean"
    expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record true if the {PsmUseCase} triggers a ping on a specific day. This
    happens when the device has not sent a ping within the reporting window, as
    the device only pings once per period. For instance, in the 1DA use case,
    this histogram is recorded once per day to avoid duplicate pings. This
    histogram is recorded after browser start depending on the last ping
    timestamp of the Chromebook. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
</histogram>

<histogram name="Ash.Report.{PsmUseCase}CheckMembershipCases"
    enum="ReportCheckMembershipResponseCases" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-03-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.SeaPen.Api.Thumbnails.Count" units="count"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of thumbnails received. Only recorded if API status code
    is kOk.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Api.Wallpaper.HasImage" enum="Boolean"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if an image is received. Only recorded if API status code is kOk.
    Recorded for SeaPen Wallpaper.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Api.{Type}.Latency" units="ms"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    API latency after clicking Create or Inspire Me button in VC Background or
    SeaPen Wallpaper. Only recorded if thumbnails were successfully retrieved.
  </summary>
  <token key="Type" variants="SeaPenApiType"/>
</histogram>

<histogram name="Ash.SeaPen.Api.{Type}.MantaStatusCode" enum="MantaStatusCode"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the returned Manta status code for thumbnails or wallpaper. Only
    recorded if the request completed before the enforced timeout.
  </summary>
  <token key="Type" variants="SeaPenApiType"/>
</histogram>

<histogram name="Ash.SeaPen.Api.{Type}.Timeout" enum="Boolean"
    expires_after="2025-03-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records if the request hits the enforced timeout.</summary>
  <token key="Type" variants="SeaPenApiType"/>
</histogram>

<histogram name="Ash.SeaPen.CreateButton" enum="SeaPenTemplateId"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the user's selected template when they create SeaPen thumbnails.
    Record for both SeaPen VC Background and Wallpaper.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Api.Thumbnails.Count" units="count"
    expires_after="2025-05-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of thumbnails received for a freeform query. Only
    recorded if API status code is kOk.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Api.Wallpaper.HasImage" enum="Boolean"
    expires_after="2025-05-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if an image is received for a freeform query. Only recorded if API
    status code is kOk. Recorded for SeaPen Wallpaper.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Api.{Type}.Latency" units="ms"
    expires_after="2025-05-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    API latency after clicking Create or Inspire Me button in VC Background or
    SeaPen Wallpaper for a freeform query. Only recorded if thumbnails were
    successfully retrieved.
  </summary>
  <token key="Type" variants="SeaPenApiType"/>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Api.{Type}.MantaStatusCode"
    enum="MantaStatusCode" expires_after="2025-05-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the returned Manta status code for thumbnails or wallpaper for a
    freeform query. Only recorded if the request completed before the enforced
    timeout.
  </summary>
  <token key="Type" variants="SeaPenApiType"/>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Api.{Type}.Timeout" enum="Boolean"
    expires_after="2025-05-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records if the request for a freeform query hits the enforced timeout.
  </summary>
  <token key="Type" variants="SeaPenApiType"/>
</histogram>

<histogram name="Ash.SeaPen.Freeform.SamplePrompt.Clicked"
    enum="BooleanClicked" expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emmitted when the user clicks a sample prompt for a freeform query.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.SamplePrompt.Shuffle.Clicked"
    enum="BooleanClicked" expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emmitted when the user shuffles the sample prompts for a freeform query.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Suggestion.Clicked" enum="BooleanClicked"
    expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emmitted when the user clicks a suggestion for a freeform query.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Suggestion.Shuffle.Clicked"
    enum="BooleanClicked" expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emmitted when the user shuffles the suggestions for a freeform query.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.Tab.Clicked" enum="SeaPenFreeformTab"
    expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Emitted when the user clicks on a freeform tab.</summary>
</histogram>

<histogram name="Ash.SeaPen.Freeform.{AppName}.RecentImage.ActionMenu"
    enum="SeaPenActionMenuItem" expires_after="2025-06-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the action menu item click for SeaPen recent image generated from
    free text query of each {AppName} from the user.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
</histogram>

<histogram name="Ash.SeaPen.Freeform.{AppName}.Visited" enum="BooleanHit"
    expires_after="2025-07-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when a user navigates to the Freeform SeaPen page in the {AppName}
    App.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
</histogram>

<histogram name="Ash.SeaPen.Freeform.{AppName}.{Source}.ImageSet"
    enum="BooleanHit" expires_after="2025-06-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emmitted when the user sets a {Source} SeaPen image that generated from free
    text query as {AppName}.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
  <token key="Source" variants="SeaPenImageSource"/>
</histogram>

<histogram name="Ash.SeaPen.MigrationStatus"
    enum="SeaPenWallpaperManagerMigrationStatus" expires_after="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records result of migrating user SeaPen files to new directory.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Template" enum="SeaPenTemplateId"
    expires_after="2025-03-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the user's selected template when they navigates to the template
    subpage.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.ThumbnailClicked" enum="SeaPenTemplateId"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the template ID of the image when the user clicks a thumbnail to set
    it as their VC Background or Wallpaper.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.WordCount" units="int" expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of words in the SeaPen text query when the user clicks
    the create button.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.{AppName}.RecentImage.ActionMenu"
    enum="SeaPenActionMenuItem" expires_after="2025-03-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the action menu item click for SeaPen recent image of each {AppName}
    from the user.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
</histogram>

<histogram name="Ash.SeaPen.{AppName}.Visited" enum="BooleanHit"
    expires_after="2025-03-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when a user navigates to the SeaPen page in the {AppName} App. This
    metric is not emitted for the freeform page -- the freeform page emits
    `Ash.SeaPen.Freeform.{AppName}.Visited`.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
</histogram>

<histogram name="Ash.SeaPen.{AppName}.{Source}.ImageSet" enum="BooleanHit"
    expires_after="2025-03-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emmitted when the user sets a {Source} SeaPen image as {AppName}.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
  <token key="Source" variants="SeaPenImageSource"/>
</histogram>

<histogram name="Ash.SeaPen.{TemplateName}.UserFeedback" enum="Boolean"
    expires_after="2024-12-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the thumbs up/thumbs down feedback for SeaPen template {TemplateName}
    from the user. Emits true if the feedback is positive, false otherwise.
    Recorded for both SeaPen VC Background and Wallpaper.
  </summary>
  <token key="TemplateName" variants="SeaPenTemplateName"/>
</histogram>

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

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.DurationOnError.{SearchType}"
    units="ms" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of failed local Drive FS search when generating file
    suggestions based on recent drive activity. The suggestions are generated on
    demand when the user opens a supported UI surface - e.g. continue section in
    the launcher. The suggestions are generated by performing multiple queries
    on Drive FS. {SearchType} describes the type of query the search is
    handling.
  </summary>
  <token key="SearchType" variants="DriveFsSearchType"/>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.DurationOnSuccess.{SearchType}"
    units="ms" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The duration of successful local Drive FS search when generating file
    suggestions based on recent drive activity. The suggestions are generated on
    demand when the user opens a supported UI surface - e.g. continue section in
    the launcher. The suggestions are generated by performing multiple queries
    on Drive FS. {SearchType} describes the type of query the search is
    handling. &quot;Total&quot; variant records the total time needed to
    generate file suggestions.
  </summary>
  <token key="SearchType" variants="DriveFsSearchType"/>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.FirstSharedSuggestionIndex"
    units="int" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The index of the first file suggested because it was shared with user in the
    ordered list of drive file suggestions based on the local Drive FS search.
    The suggestions are, for example, displayed in Launcher Continue Section.
  </summary>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.FolderCount.{SearchType}"
    units="int" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of folder items returned by local Drive FS search while
    generating file suggestions based on recent drive activity. The suggestions
    are generated on demand when the user opens a supported UI surface - e.g.
    continue section in the launcher. The suggestions are generated by
    performing multiple queries on Drive FS. {SearchType} describes the type of
    query the search is handling.
  </summary>
  <token key="SearchType" variants="DriveFsSearchType"/>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.ItemCount.{SearchType}"
    units="int" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of items returned by local Drive FS search while generating file
    suggestions based on recent drive activity. The suggestions are generated on
    demand when the user opens a supported UI surface - e.g. continue section in
    the launcher. The suggestions are generated by performing multiple queries
    on Drive FS. {SearchType} describes the type of query the search is
    handling. &quot;Total&quot; variant records the total number of generated
    suggestions.
  </summary>
  <token key="SearchType" variants="DriveFsSearchType"/>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.ModifyingUserMetadataPresent"
    enum="Boolean" expires_after="2024-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether a drive file returned by local drive FS search while generating file
    suggestions based on recent drive activity (used for example in launcher
    continue section) contains last modifying user metadata. Recorded while
    generating file suggestions for each file suggestion that's surfaced because
    it's been recently modified, in which case the suggestion justification
    string depends on last modifying user metadata.
  </summary>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.QueryResult.{SearchType}"
    enum="DriveFileError" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The result of a local Drive FS query operation performed while generating
    file suggestions based on recent drive activity. The suggestions are
    generated on demand when the user opens a supported UI surface - e.g.
    continue section in the launcher. The suggestions are generated by
    performing multiple queries on Drive FS.
  </summary>
  <token key="SearchType" variants="DriveFsSearchType"/>
</histogram>

<histogram name="Ash.SearchModelUpdateTime.{TabletOrClamshell}" units="ms"
    expires_after="2023-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.DefaultApps.Pinned" enum="DefaultAppName"
    expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the default apps that are pinned to the shelf. This metric is
    recorded with every UMA log upload.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Menu.NumItemsEnabledUponSelection" units="Count"
    expires_after="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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. Warning:
    this histogram was expired from 2023-08-13 to 2025-02-22; data may be
    missing.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Menu.SelectedMenuItemIndex" units="Index"
    expires_after="2025-08-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The number of unpinned icons in the shelf. This metric is recorded every 30
    minutes.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.InLaserPointerMode" units="ms"
    expires_after="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the number of times a palette mode is explicitly cancelled or
    switched out of.
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Usage" enum="PaletteTrayOptions"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded every time that the palette option has been selected from the
    palette that has been opened manually (not via a stylus eject event).
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Usage.AutoOpened" enum="PaletteTrayOptions"
    expires_after="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded every time that the palette option has been selected from the
    palette that has been opened automatically (by a stylus eject event).
  </summary>
</histogram>

<histogram name="Ash.Shelf.Palette.Usage.Shortcut" enum="PaletteTrayOptions"
    expires_after="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded every time that the palette option has been selected by means other
    that the palette menu (e.g. stylus barrel button or a keyboard accelerator).
  </summary>
</histogram>

<histogram name="Ash.Shelf.ShowStackedHotseat" enum="Boolean"
    expires_after="2024-09-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.

    Warning: this histogram was expired from 2023-09-10 to 2024-04-24; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Shelf.TimeBetweenWindowMinimizedAndActivatedActions"
    units="ms" expires_after="2020-06-28">
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record which accelerator is added by the user for {ActionName}. This metric
    also includes accelerators added from editing an accelerator. 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.AddAcceleratorSubactions"
    enum="ShortcutCustomizationSubactions" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the subactions that can occur when the user attempts to add a custom
    accelerator.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.CustomizationAction"
    enum="ShortcutCustomizationAction" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.CustomizationsBeforeResetAll"
    units="count" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the number of customizations before the user resets their shortcuts
    to default.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.CustomizationsLoadedOnStartup"
    units="count" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the number of customized accelerator modifications on startup.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.EditAcceleratorSubactions"
    enum="ShortcutCustomizationSubactions" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the subactions that can occur when the user attempts to edit an
    accelerator.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.EditDialogCompletedActions"
    enum="ShortcutCustomizationEditDialogCompletedActions"
    expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the actions done in the accelerator edit dialog before it was closed.
    If an action has been done at least once it will count towards the
    appropriate enum. Enums are formatted such that they are ordered in a
    bitwise manner. 0000: no action, 0001: Add, 0010: Edit, 0100: Remove, 1000:
    Reset.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.MainCategoryNavigation"
    enum="ShortcutCustomizationMainCategory" expires_after="2024-12-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the number of times a user navigates to a main category in the side
    panel of the Key Shortcuts app.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.ModifyType.{ActionName}"
    enum="ShortcutCustomizationModificationType" expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record what modification actions that were done for {ActionName}.
  </summary>
  <token key="ActionName" variants="AcceleratorActionName"/>
</histogram>

<histogram
    name="Ash.ShortcutCustomization.RemoveDefaultAccelerator.{ActionName}"
    units="Shortcuts" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Snap.CloseTwoWindowsDuration" units="seconds"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The elapsed time between a first snapped window getting closed and a second
    snapped window getting closed. Starts recording when a snapped window is
    closed. Ends recording when a snapped window on the opposite side is closed,
    or if a snapped window on the opposite side is unsnapped, records the
    maximum value of 50 hours (18000 seconds).
  </summary>
</histogram>

<histogram name="Ash.Snap.MinimizeTwoWindowsDuration" units="seconds"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.SnapGroups.SnapGroupActualDuration" units="seconds"
    expires_after="2025-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the duration of a Snap Group where the two snapped windows remain
    unchanged throughout its existence.
  </summary>
</histogram>

<histogram name="Ash.SnapGroups.SnapGroupExitPoint" enum="SnapGroupExitPoint"
    expires_after="2025-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records the exit point of a Snap Group.</summary>
</histogram>

<histogram name="Ash.SnapGroups.SnapGroupPersistenceDuration" units="seconds"
    expires_after="2025-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the duration of a Snap Group where one of the windows remains in the
    Snap Group even after the other window is replaced using 'Snap to Replace'.
  </summary>
</histogram>

<histogram name="Ash.SnapGroups.SnapGroupsCount" units="int"
    expires_after="2025-05-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when there's a change in the number of snap groups, i.e. a group is
    added or removed. Specifies the number of available snap groups.
  </summary>
</histogram>

<histogram name="Ash.SnapWindowSuggestions.{SnapSource}" enum="Boolean"
    expires_after="2025-02-09">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded at the time a window is snapped via a snap action source that can
    start faster split view. Emits true if faster split view is enabled, false
    otherwise.
  </summary>
  <token key="SnapSource" variants="SnapActionSource"/>
</histogram>

<histogram name="Ash.SpeechRecognitionSessionLength.{Location}" units="ms"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-03-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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). Warning: this histogram was expired from 2023-11-12 to 2024-03-11;
    data may be missing.
  </summary>
</histogram>

<histogram name="Ash.SplitView.ResizeWindowCount.{DeviceUIMode}" units="count"
    expires_after="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.TimeInMultiDisplaySplitView" units="ms"
    expires_after="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.SplitViewOverviewSession.SelectedWindowIndex" units="int"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the index of the selected window in partial overview. Starts
    indexing at 0.
  </summary>
</histogram>

<histogram
    name="Ash.SplitViewOverviewSession.WindowLayoutCompleteOnSessionExit.{TabletOrClamshell}"
    enum="Boolean" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded at the exit point of the split view overview session in
    {TabletOrClamshell}. Emits true if the window layout setup is complete,
    false otherwise.
  </summary>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.SplitViewOverviewSession.WindowListSize" units="int"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the total number of windows in partial overview when a window is
    selected.
  </summary>
</histogram>

<histogram
    name="Ash.SplitViewOverviewSession.{SnapSource}.ExitPoint.{TabletOrClamshell}"
    enum="SplitViewOverviewSessionExitPoint" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded at the exit point of the split view overview session in
    {TabletOrClamshell}. The recorded enum indicates the reason that triggers
    the split view overview session exit.
  </summary>
  <token key="SnapSource" variants="SnapActionSource"/>
  <token key="TabletOrClamshell" variants="DisplayModes"/>
</histogram>

<histogram name="Ash.SplitViewResize.AnimationSmoothness.DividerAnimation"
    units="%" expires_after="2024-10-06">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-19">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Presentation time while resizing one or two split view windows.
    {SplitViewResizeModes}
  </summary>
  <token key="SplitViewResizeModes" variants="SplitViewResizeModes"/>
</histogram>

<histogram name="Ash.StateKeysPresent2" enum="BooleanPresent"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-13">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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.SwipeHomeToOverviewGesture"
    enum="SwipeHomeToOverviewResult" expires_after="2024-09-22">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-28">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-28">
<!-- Name completed by histogram_suffixes
     name="TabletOrClamshellMode" -->

  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-02">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-04">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The distance between touch-move events.</summary>
</histogram>

<histogram name="Ash.TouchStartAfterEnd" units="ms" expires_after="M77">
  <owner>[email protected]</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-04-28">
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The length of time that TouchView is active, for each activation.
  </summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActivePercentage" units="%"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The proportion of time spent in TouchView during a session.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActiveTotal" units="minutes"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>The total time that TouchView is active during a session.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewInactive" units="ms"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The length of time between TouchView activations. Warning: this histogram
    was expired from 2023-03-19 to 2023-11-06; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewInactiveTotal" units="minutes"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The total time that TouchView is not active during a session. Warning: this
    histogram was expired from 2023-03-19 to 2023-11-06; data may be missing.
  </summary>
</histogram>

<histogram base="true" name="Ash.UnlockAnimation.Smoothness" units="%"
    expires_after="2025-01-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the initial state of background blur when the Video Conference Panel
    is shown.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.BackgroundImageButton.Click"
    enum="BooleanOpened" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the background image button in video conference tray is
    clicked to apply background image replace.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.CreateWithAiButton.Click"
    enum="BooleanOpened" expires_after="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the &quot;Create with AI&quot; button in video conference tray
    is clicked to open VcBackgroundApp.
  </summary>
</histogram>

<histogram name="Ash.VideoConferenceTray.StopScreenShareButton.Click"
    enum="BooleanClicked" expires_after="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="StudioMic" summary="Studio mic"/>
    <variant name="TestEffect" summary="Test Effect"/>
  </token>
</histogram>

<histogram name="Ash.VideoConferenceTray.{EffectName}.InitialState"
    enum="BooleanEnabled" expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="StudioMic" summary="Studio mic"/>
    <variant name="TestEffect" summary="Test Effect"/>
  </token>
</histogram>

<histogram name="Ash.Wallpaper.Collection" enum="WallpaperCollection"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Collection.Settled" enum="WallpaperCollection"
    expires_after="2025-01-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The wallpaper collection of the online image currently set as the active
    wallpaper. Emitted once for every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.CustomLayout" enum="WallpaperLayout"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.DecodedSizeMB" units="MB"
    expires_after="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the size of the decoded wallpaper that is cached in memory for the
    entire duration of the ChromeOS session. This applies to all wallpaper types
    and layouts. It's recorded every time a wallpaper is loaded (ex: on boot),
    and every time the wallpaper changes. Kilobyte granularity is unnecessary as
    this metric is solely to validate a theory that the wallpaper typically only
    occupies several megabytes of memory, rather than something on the order of
    20-40. After this theory is validated, this metric can be removed. It has a
    50 MB maximum.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.GooglePhotos.Api.{Api}.RefreshCount"
    units="count" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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.Source2"
    enum="WallpaperGooglePhotosSource" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.Image.Settled" enum="WallpaperImage"
    expires_after="2025-01-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The online image currently set as the active wallpaper. Emitted once for
    every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Image.Settled.HasCollectionId" enum="Boolean"
    expires_after="2025-01-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the current online image currently set as the active wallpaper has
    the collection_id field. Older versions of ChromeOS (pre M107) did not set
    this field, so this metric tracks how many users selected an older online
    wallpaper and have not updated it since. Emitted once for every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Image.Settled.HasUnitId" enum="Boolean"
    expires_after="2025-01-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Whether the current online image currently set as the active wallpaper has
    the unit_id field. Older versions of ChromeOS (pre M107) did not set this
    field, so this metric tracks how many users selected an older online
    wallpaper and have not updated it since.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.IsSetToTimeOfDayAfterOobe" enum="Boolean"
    expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.MigrationFailureReason"
    enum="WallpaperMigrationFailureReason" expires_after="2025-05-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the reason for the versioned wallpaper migration failure. Recorded
    when the migration fails on user's login.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Online.Result" enum="SetWallpaperResult"
    expires_after="2023-08-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>
</histogram>

<histogram name="Ash.Wallpaper.Preview.Show" enum="BooleanHit"
    expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the preview mode usage for wallpaper. Recorded each time the
    wallpaper image is previewed.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.SeaPen.Template.Settled" enum="SeaPenTemplateId"
    expires_after="2025-04-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    The template of the Sea Pen image currently set as the active wallpaper.
    Emitted once for every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.Source2" enum="WallpaperType"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.{Type}.MigrationLatency" units="ms"
    expires_after="2025-05-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the latency of migration for wallpaper info of type {Type}. Recorded
    after the migration is completed on user's login.
  </summary>
  <token key="Type" variants="WallpaperType"/>
</histogram>

<histogram name="Ash.Wallpaper.{Type}.MigrationStatus"
    enum="WallpaperMigrationStatus" expires_after="2025-05-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the status of migration for wallpaper info of type {Type}. Recorded
    after the migration is completed on user's login.
  </summary>
  <token key="Type" variants="WallpaperType"/>
</histogram>

<histogram name="Ash.Wallpaper.{Type}.Result2" enum="SetWallpaperResult"
    expires_after="2025-02-23">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Tracks the result of user's attempt to set a wallpaper of type {Type}.
    Replaces the previous Result histogram where there is a misreport of online
    wallpapers. Recorded when a user selects a {Type} wallpaper from the
    personalization hub.
  </summary>
  <token key="Type" variants="WallpaperType"/>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.CrossFade" units="%"
    expires_after="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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-10-16">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-04-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-08-12">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-01-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-07-03">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-10">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-02-27">
  <owner>[email protected]</owner>
  <owner>[email protected]</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>[email protected]</owner>
  <owner>[email protected]</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="2025-04-24">
  <owner>[email protected]</owner>
  <owner>[email protected]</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 and
    from 2023-08-13 till 2024-04-24.
  </summary>
</histogram>

<histogram name="Ash.WindowManager.Lock.Timeout" units="ms"
    expires_after="2024-12-01">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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="2025-05-21">
  <owner>[email protected]</owner>
  <owner>[email protected]</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.WindowLayoutState.ActiveWindowAppType"
    enum="WindowAppType" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of the active
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.ActiveWindowSize"
    enum="WindowSizeRange" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of the active
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.ActiveWindowState"
    enum="WindowStateType" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of the active
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.AllAppTypes" enum="WindowAppType"
    expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of all opened
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.AllWindowSizes"
    enum="WindowSizeRange" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of all opened
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.AllWindowStates"
    enum="WindowStateType" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of all opened
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.FreeformedWindowSizes"
    enum="WindowSizeRange" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of freeformed
    application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.WindowNumbers" units="int"
    expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the number of opened application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateActiveWindowAppType"
    enum="WindowAppType" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of the active
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateActiveWindowSize"
    enum="WindowSizeRange" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of the active
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateActiveWindowState"
    enum="WindowStateType" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of the active
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateAllAppTypes" enum="WindowAppType"
    expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of all opened
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateAllWindowSizes" enum="WindowSizeRange"
    expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of all opened
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateAllWindowStates"
    enum="WindowStateType" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window states type of all opened
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateFreeformedWindowSizes"
    enum="WindowSizeRange" expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of freeformed
    application windows. This metrics should be removed after M127 stable is
    released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutStateWindowNumbers" units="int"
    expires_after="2025-02-26">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emits every 30 minutes to report the number of opened application windows.
    This metrics should be removed after M127 stable is released.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSnapActionSource2" enum="WindowSnapActionSource"
    expires_after="2025-03-11">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Emitted when a window is to be snapped. Records different ways for a user to
    snap a window.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.DragDuration.PerNoSplit" units="ms"
    expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration a user spends dragging when a window is not split.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.DragDuration.PerSplit" units="ms"
    expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the time duration a user spends dragging when a window is split.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.DragType"
    enum="WindowSplittingDragType" expires_after="2024-12-08">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of times a window drag results in a window split compared
    to other outcomes.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.PreviewsShownCount.PerNoSplit"
    units="previews" expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of times the preview is shown when a window is not split.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.PreviewsShownCount.PerSplit"
    units="previews" expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the number of times the preview is shown when a window is split.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.SplitRegion"
    enum="WindowSplittingSplitRegion" expires_after="2024-09-29">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>Records the window region where a window is split.</summary>
</histogram>

</histograms>

</histogram-configuration>