<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<!--
This file is used to generate a comprehensive list of Ash histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<variants name="AcceleratorActionName">
  <variant name="AccessibilityAction"/>
  <variant name="BrightnessDown"/>
  <variant name="BrightnessUp"/>
  <variant name="CycleBackwardMru"/>
  <variant name="CycleForwardMru"/>
  <variant name="CycleSameAppWindowsBackward"/>
  <variant name="CycleSameAppWindowsForward"/>
  <variant name="DebugKeyboardBacklightToggle"/>
  <variant name="DebugMicrophoneMuteToggle"/>
  <variant name="DebugPrintLayerHierarchy"/>
  <variant name="DebugPrintViewHierarchy"/>
  <variant name="DebugPrintWindowHierarchy"/>
  <variant name="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="ResizePipWindow"/>
  <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="StartSunfishSession"/>
  <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="ToggleCameraAllowed"/>
  <variant name="ToggleCapsLock"/>
  <variant name="ToggleClipboardHistory"/>
  <variant name="ToggleDictation"/>
  <variant name="ToggleDockedMagnifier"/>
  <variant name="ToggleDoNotDisturb"/>
  <variant name="ToggleFloating"/>
  <variant name="ToggleFullscreen"/>
  <variant name="ToggleFullscreenMagnifier"/>
  <variant name="ToggleGameDashboard"/>
  <variant name="ToggleGeminiApp"/>
  <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="ToggleSnapGroup"/>
  <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.Jupiter" summary="Jupiter 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>

<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="EventLatencyCoreEventType">
  <variant name="KeyPressed"/>
  <variant name="KeyReleased"/>
  <variant name="MouseDragged"/>
  <variant name="MousePressed"/>
  <variant name="MouseReleased"/>
</variants>

<variants name="EventLatencyEventType">
  <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="InertialGestureScrollEnd"/>
  <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"/>
</variants>

<variants name="EventLatencyFps">
  <variant name="30Fps"/>
  <variant name="60Fps"/>
  <variant name="120Fps"/>
  <variant name="OtherFps"/>
  <variant name="UnsetFps"/>
</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.Elucidation"
      summary="Request from Mahi provider for elucidation"/>
  <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="ScannerProvider" summary="Request from Scanner provider"/>
  <variant name="SnapperProvider" summary="Request from Snapper provider"/>
  <variant name="WalrusProvider" summary="Request from Walrus provider"/>
</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="OverviewStartReason">
  <variant name="InformedRestore"
      summary="Not user initiated. Overview is shown automatically after
               login in a dialogue asking if windows should be restored."/>
  <variant name="Other"
      summary="Debugging and other use cases that shouldn't have much traffic
               in production."/>
  <variant name="UserInitiatedClamshell"
      summary="User provided some input that suggests they explicitly want to
               see overview while in clamshell mode."/>
  <variant name="UserInitiatedTablet"
      summary="User provided some input that suggests they explicitly want to
               see overview while in tablet mode."/>
</variants>

<variants name="PowerStatus">
  <variant name="RealBattery" summary="Real battery status"/>
  <variant name="RealPower" summary="Real power status"/>
  <variant name="SimulatedBattery"
      summary="Simulated battery status (even when on AC power)"/>
</variants>

<variants name="PreferenceChangeType">
  <variant name=".Changed"
      summary="Preference value when changed by the user."/>
  <variant name=".Started" summary="Preference value upon startup."/>
</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>

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

<variants name="TabletOrClamshellMode">
  <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="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="2027-02-07">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record which shortcuts are being used for an action. Fires when the use
    perform an action using a keyboard shortcut. A shortcut is encoded as an int
    where the high 16 bits represent all the modifiers used, and the 0-15 bits
    represent which key is used.
  </summary>
  <token key="ActionName" variants="AcceleratorActionName"/>
</histogram>

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

    Warning: this histogram was expired from 2026-05-11 to 2026-08-06; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Accelerators.OverviewBasedScreenshot.{ActionName}"
    enum="OverviewBasedScreenshotKeyboardType" expires_after="2027-05-11">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record which type of keyboard activates a given screenshot action utilizing
    the overview key. The options are [Non-ChromeOS Keyboard, ChromeOS Keyboard
    with a screenshot key, or ChromeOS Keyboard without a screesnhot key].

    Warning: this histogram was expired from 2026-05-11 to 2026-08-06; data may
    be missing.
  </summary>
  <token key="ActionName">
    <variant name="TakePartialScreenshot"/>
    <variant name="TakeScreenshot"/>
    <variant name="TakeWindowScreenshot"/>
  </token>
</histogram>

<histogram name="Ash.Accelerators.TogglePicker.Action"
    enum="TogglePickerAction" expires_after="2027-05-11">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Action triggered by pressing toggle picker accelerator.

    Warning: this histogram was expired from 2026-05-11 to 2026-08-06; data may
    be missing.
  </summary>
</histogram>

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

<histogram name="Ash.AmbientMode.AnimationSmoothness.PhotoTransition" units="%"
    expires_after="2026-09-06">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2025-08-31">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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.{TabletOrClamshellMode}"
    units="ms" expires_after="2026-05-10">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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>
</histogram>

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

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

<histogram name="Ash.AmbientMode.TopicSource" enum="AmbientModeTopicSource"
    expires_after="2026-01-25">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2025-06-30">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Among eligible users with ambient mode enabled, records the total number of
    personal photo albums. Recorded once only when users make a selection on the
    personal photo albums on Settings page.
  </summary>
</histogram>

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

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

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

<histogram name="Ash.Auth.ActiveSessionAuthClosedDuringAuth" enum="Boolean"
    expires_after="2026-06-28">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-06-28">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-06-28">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-11-25">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The number of fingerprint attempts while the active session auth dialog was
    opened. Recorded when the active session auth dialog closes.

    Warning: this histogram was expired from 2025-10-05 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthNotAvailable"
    enum="ActiveSessionAuthControllerReason" expires_after="2026-12-11">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Records the reason for an authentication request when no authentication
    factors were available. Recorded when the active session authentication
    dialog is triggered, but cryptohome reports no configured authentication
    factors.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionAuthOpenDuration" units="ms"
    expires_after="2026-06-28">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-06-28">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-10-26">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-07-12">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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="2026-07-12">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Records the authentication input type when authentication succeeded.
    Recorded when the active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionPasswordlessAuthClosedWithSuccess"
    units="attempts" expires_after="2026-10-30">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Records successful passwordless user authentications. Recorded when the
    active session auth dialog closes.
  </summary>
</histogram>

<histogram name="Ash.Auth.ActiveSessionShowReason"
    enum="ActiveSessionAuthControllerReason" expires_after="2026-06-28">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</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.BatterySaver.BatteryPercent{BatteryPercentWhen}" units="%"
    expires_after="2027-02-14">
  <owner>cwd@google.com</owner>
  <owner>ckwyee@google.com</owner>
  <summary>The battery charge percent when {BatteryPercentWhen}</summary>
  <token key="BatteryPercentWhen">
    <variant name=".Disabled" summary="disabled."/>
    <variant name=".DisabledSettings"
        summary="disabled via the device settings page."/>
    <variant name=".Enabled" summary="enabled."/>
    <variant name=".EnabledSettings"
        summary="enabled via the device settings page."/>
  </token>
</histogram>

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

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

<histogram name="Ash.Birch.Bar.Activate" units="count"
    expires_after="2027-01-17">
  <owner>jamescook@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2027-01-17">
  <owner>jamescook@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2027-01-17">
  <owner>jamescook@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2026-11-15">
  <owner>jamescook@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2026-11-15">
  <owner>jamescook@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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.Impression" enum="BirchItemType"
    expires_after="2027-01-17">
  <owner>jamescook@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2027-01-17">
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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.Coral.Action" enum="CoralActionType"
    expires_after="2026-05-31">
  <owner>zxdan@chromium.org</owner>
  <owner>cros-coral@google.com</owner>
  <summary>
    Recorded when a coral cluster is restored, launched to a new desk, and saved
    as a desk templated.
  </summary>
</histogram>

<histogram name="Ash.Birch.Coral.ClusterCount" units="count"
    expires_after="2025-10-10">
  <owner>zxdan@chromium.org</owner>
  <owner>cros-coral@google.com</owner>
  <summary>
    The number of coral items shown in the birch bar when the user enters
    overview.
  </summary>
</histogram>

<histogram name="Ash.Birch.Coral.ClusterExpanded" enum="Boolean"
    expires_after="2026-04-19">
  <owner>zxdan@chromium.org</owner>
  <owner>cros-coral@google.com</owner>
  <summary>
    Recorded whenever a user expands a coral BirchChipButton. Can be recorded
    multiple times during the lifetime of the BirchChipButton.
  </summary>
</histogram>

<histogram name="Ash.Birch.Coral.ClusterItemRemoved" units="count"
    expires_after="2026-04-19">
  <owner>zxdan@chromium.org</owner>
  <owner>cros-coral@google.com</owner>
  <summary>
    The number of coral items removed by user from the chevron expanded menu.
  </summary>
</histogram>

<histogram name="Ash.Birch.Coral.UserFeedback" enum="Boolean"
    expires_after="2025-10-10">
  <owner>conniekxu@chromium.org</owner>
  <owner>cros-coral@google.com</owner>
  <summary>
    Record the thumbs up/thumbs down feedback for coral grouping suggestion from
    the user. Emits true if the feedback is positive, false otherwise.
  </summary>
</histogram>

<histogram name="Ash.Birch.Coral.{TabOrApp}InfoWithEmptyTitle"
    enum="CoralSource" expires_after="2026-02-01">
  <owner>zxdan@chromium.org</owner>
  <owner>cros-coral@google.com</owner>
  <summary>The number of {TabOrApp} info with an empty title.</summary>
  <token key="TabOrApp">
    <variant name="App" summary="app entity"/>
    <variant name="Tab" summary="tab entity"/>
  </token>
</histogram>

<histogram name="Ash.Birch.ResultsReturned{Type}" units="count"
    expires_after="2027-01-17">
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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.Boca.Babelorca.ReceivingStoppedReason"
    enum="BabelOrcaReceivingStoppedReason" expires_after="2027-02-10">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records why receiving captions was turned off at the consumer, whether this
    was by the user turning off captions, or ending the session or because of a
    request error that needs user manual retry.
  </summary>
</histogram>

<histogram name="Ash.Boca.Babelorca.SendingStoppedReason"
    enum="BabelOrcaSendingStoppedReason" expires_after="2027-02-10">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records why sending captions was turned off at the producer, whether this
    was by the user turning off captions, or ending the session or because of a
    request error that needs user manual retry.
  </summary>
</histogram>

<histogram name="Ash.Boca.Babelorca.StreamEndReason"
    enum="BabelOrcaStreamEndReason" expires_after="2027-02-10">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>Records why the captions receiving stream was ended.</summary>
</histogram>

<histogram name="Ash.Boca.Babelorca.{Request}.HttpResponseCodeOrNetError"
    enum="CombinedHttpResponseAndNetErrorCode" expires_after="2027-02-10">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the net error or HTTP response code of the {Request} request needed
    to send/receive captions in a Class Tools session.
  </summary>
  <token key="Request">
    <variant name="JoinGroup"/>
    <variant name="ReceiveMessages"/>
    <variant name="SendMessage"/>
    <variant name="SigninGaia"/>
  </token>
</histogram>

<histogram name="Ash.Boca.Babelorca.{Scope}.OAuthFetchError"
    enum="GoogleServiceAuthError" expires_after="2027-02-10">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the OAuth token fetch result for BabelOrca requests.
  </summary>
  <token key="Scope">
    <variant name="SchoolTools"/>
    <variant name="Tachyon"/>
  </token>
</histogram>

<histogram name="Ash.Boca.NumberOfActiveStudentsWhenSessionEnded"
    units="students" expires_after="2027-07-20">
  <owner>caott@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the number of active students left when the session ends.
  </summary>
</histogram>

<histogram name="Ash.Boca.NumberOfStudentsJoinedViaCodeDuringSession"
    units="students" expires_after="2027-07-20">
  <owner>caott@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the number of students joined via code throughout a session.
  </summary>
</histogram>

<histogram name="Ash.Boca.OnTask.MaxNumberOfTabsDuringSession" units="tabs"
    expires_after="2027-07-20">
  <owner>caott@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the maximum number of tabs shared by the provider throughout a
    session.
  </summary>
</histogram>

<histogram name="Ash.Boca.OnTask.NumberOfTabsWhenSessionEnded" units="tabs"
    expires_after="2027-07-20">
  <owner>caott@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the number of tabs shared by the provider when the session ends.
  </summary>
</histogram>

<histogram name="Ash.Boca.OnTask.OAuthTriggered" enum="Boolean"
    expires_after="2027-07-20">
  <owner>aprilzhou@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records when an OAuth flow is triggered during the OnTask session.
  </summary>
</histogram>

<histogram name="Ash.Boca.OnTask.{State}SessionDurationPercentage"
    units="% of session" expires_after="2027-07-20">
  <owner>aprilzhou@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the percentage of the duration the session was in {State}.
  </summary>
  <token key="State">
    <variant name="Locked" summary="locked mode"/>
    <variant name="Unlocked" summary="unlocked mode"/>
  </token>
</histogram>

<histogram name="Ash.Boca.PollingResult" enum="BocaPollingResult"
    expires_after="2027-07-20">
  <owner>aprilzhou@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records scheduled boca session polling result from out of and in-session.
  </summary>
</histogram>

<histogram name="Ash.Boca.ScreenShare.PresentStudentScreen.FailureReason"
    enum="BocaPresentStudentScreenFailureReason" expires_after="2027-04-25">
  <owner>bzielinski@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the reason that attempting to start a screen share presentation of
    type PresentStudentScreen failed. Recorded once per failed screen share
    attempt.

    Warning: this histogram was expired from 2026-04-25 to 2026-07-22; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Boca.ScreenShare.{PresentOwnScreenType}.FailureReason"
    enum="BocaPresentOwnScreenFailureReason" expires_after="2027-04-25">
  <owner>bzielinski@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the reason that attempting to start a screen share presentation of
    type {PresentOwnScreenType} failed. Recorded once per failed screen share
    attempt.

    Warning: this histogram was expired from 2026-04-25 to 2026-07-22; data may
    be missing.
  </summary>
  <token key="PresentOwnScreenType">
    <variant name="PresentOwnScreenInSession"/>
    <variant name="PresentOwnScreenOutOfSession"/>
  </token>
</histogram>

<histogram name="Ash.Boca.ScreenShare.{ScreenShareType}.Result"
    enum="BooleanSuccess" expires_after="2027-04-25">
  <owner>bzielinski@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the result of attempting to start a screen share presentation of
    type {ScreenShareType}. Recorded once per screen share attempt.

    Warning: this histogram was expired from 2026-04-25 to 2026-07-22; data may
    be missing.
  </summary>
  <token key="ScreenShareType">
    <variant name="PresentOwnScreenInSession"/>
    <variant name="PresentOwnScreenOutOfSession"/>
    <variant name="PresentStudentScreen"/>
  </token>
</histogram>

<histogram name="Ash.Boca.Spotlight.{Request}.ErrorCode" enum="ApiErrorCode"
    expires_after="2027-07-20">
  <owner>caott@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records HTTP response code of the {Request} request needed to register host
    for view screen in a Class Tools session.
  </summary>
  <token key="Request">
    <variant name="EndViewStudentScreen"/>
    <variant name="RegisterScreen"/>
    <variant name="SetViewScreenSessionActive"/>
    <variant name="ViewStudentScreen"/>
  </token>
</histogram>

<histogram name="Ash.Boca.StudentGeminiStatus.Enabled" enum="BooleanEnabled"
    expires_after="2027-05-27">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records whether Gemini status is enabled or disabled for the student.
    Recorded once per session when the student joins.
  </summary>
</histogram>

<histogram name="Ash.Boca.TeacherGetGeminiStatus.Enabled" enum="BooleanEnabled"
    expires_after="2027-05-27">
  <owner>anasr@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records whether Gemini status is enabled or disabled. Recorded when the
    teacher requests the Gemini status.
  </summary>
</histogram>

<histogram name="Ash.Boca.TokenRetrievalIsValidation" enum="Boolean"
    expires_after="2027-04-28">
  <owner>aprilzhou@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records the number of validation and non-validation token Retrievals.

    Warning: this histogram was expired from 2026-04-28 to 2026-07-22; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Boca.{Request}.ErrorCode" enum="ApiErrorCode"
    expires_after="2027-07-20">
  <owner>aprilzhou@google.com</owner>
  <owner>cros-edu-eng@google.com</owner>
  <summary>
    Records HTTP response code of the {Request} request needed to send/receive
    captions in a Class Tools.
  </summary>
  <token key="Request">
    <variant name="AddStudents"/>
    <variant name="CreateSession"/>
    <variant name="EndSession"/>
    <variant name="GetSession"/>
    <variant name="JoinSessionViaAccessCode"/>
    <variant name="ListCourses"/>
    <variant name="ListCourseWorkMaterials"/>
    <variant name="ListCourseWorks"/>
    <variant name="ListStudents"/>
    <variant name="RemoveStudent"/>
    <variant name="StudentHeartbeat"/>
    <variant name="UpdateCaption"/>
    <variant name="UpdateSession"/>
    <variant name="UpdateStudentActivities"/>
    <variant name="UploadToken"/>
  </token>
</histogram>

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

<histogram
    name="Ash.BrowserContext.UnexpectedGet{UserType}UserProfile.{Timing}.Location"
    enum="ProfileManagerCallersCodeLocation" expires_after="2026-12-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <summary>
    Identify any of the callers that use
    ProfileManager::Get{UserType}UserProfile() APIs at unexpected timing. The
    recorded data is the hash of the caller location. Because there're too many
    possible callers but we expect the number of actual callers is small, we do
    not list all possible callers as enum, but will process it separately later
    offline. Thus, the dashboard will show just the hash number.
  </summary>
  <token key="UserType">
    <variant name="Active"/>
    <variant name="Primary"/>
  </token>
  <token key="Timing">
    <variant name="InSession"/>
    <variant name="LoginScreen"/>
  </token>
</histogram>

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

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

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

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

<histogram name="Ash.Calendar.FetchCalendars.TotalSelectedCalendars"
    units="int" expires_after="2025-11-02">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</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.SingleMonthSize" units="bytes"
    expires_after="2025-09-02">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2025-09-02">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar is closed. The total number of months cached for
    calendar events while it was open.
  </summary>
</histogram>

<histogram name="Ash.Calendar.FetchEvents.TotalFetchDuration" units="ms"
    expires_after="2025-09-02">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2026-01-04">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</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-11-02">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2025-09-02">
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</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-09-02">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the maximum absolute distance from today that a user has browsed in
    the calendar. Recorded when the calendar is closed.
  </summary>
</histogram>

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

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

<histogram name="Ash.Calendar.ShowSource.{ViewShowSource}"
    enum="CalendarEventSource" expires_after="2025-11-02">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar view is shown from the {ViewShowSource}.
  </summary>
  <token key="ViewShowSource">
    <variant name="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-09-02">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Measures the time from open of CalendarView, to CalendarDateCellView
    representing today receives events. Recorded once per lifetime of
    CalendarViewController (once per show), when todays CalendarDateCellView
    receives event data.
  </summary>
</histogram>

<histogram name="Ash.Calendar.TimeToSeeTodaysEventDotsForMultiCalendar"
    units="ms" expires_after="2025-11-02">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Measures the time from open of CalendarView, to CalendarDateCellView
    representing today receives events 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-09-02">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the number of currently visible upcoming events shown to the user
    when the Calendar &quot;Up next&quot; view displays. i.e. the user opens the
    sys tray calendar, &quot;Up next&quot; displays 2 upcoming events, this
    metric will track a count of 2.
  </summary>
</histogram>

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

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

<histogram name="Ash.Calendar.UserAction" enum="CalendarUserAction"
    expires_after="2026-05-17">
  <owner>jiamingc@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>cros-status-area-eng@google.com</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-09-02">
  <owner>jiamingc@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2025-09-02">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the calendar view is destroyed, records the lifetime of the
    CalendarView object, which corresponds with the user journey time of the
    calendar.
  </summary>
  <token key="EventLaunchState">
    <variant name="EventLaunched" summary="event launched"/>
    <variant name="EventNotLaunched" summary="event not launched"/>
  </token>
</histogram>

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

<histogram
    name="Ash.CalendarView.CloseEventList.{CalendarChildView}.AnimationSmoothness"
    units="%" expires_after="2025-09-02">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>Recorded when the close event list animation is finished.</summary>
  <token key="CalendarChildView">
    <variant name="CalendarSlidingSurface"
        summary="calendar sliding surface container for event list and up
                 next"/>
    <variant name="EventListItem" summary="event list item"/>
  </token>
</histogram>

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

<histogram name="Ash.CalendarView.FadeInUpNextView.AnimationSmoothness"
    units="%" expires_after="2025-09-02">
  <owner>newcomer@google.com</owner>
  <owner>samcackett@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness recorded when the up next view 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="2025-09-02">
  <owner>newcomer@google.com</owner>
  <owner>sylvieliu@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2025-09-02">
  <owner>newcomer@google.com</owner>
  <owner>jiamingc@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>Recorded when the on month changed animation is finished.</summary>
</histogram>

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

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

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

<histogram
    name="Ash.CaptureModeController.AudioRecordingMode.{TabletOrClamshellMode}"
    enum="AudioRecordingMode" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded at the end of a capture mode session in {TabletOrClamshellMode} to
    report the user's audio recording mode setting, only if video recording was
    selected, and the recording type supports audio recording.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.BarButtons.{TabletOrClamshellMode}"
    enum="CaptureModeBarButtonType" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever a button from the bar widget displayed in Capture mode is
    pressed in {TabletOrClamshellMode}. The recorded enum value indicates the
    type of the button pressed.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.CameraDisconnectionsDuringRecordings.{TabletOrClamshellMode}"
    units="camera disconnections" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the number of camera disconnections in {TabletOrClamshellMode}
    during recording.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.CameraReconnectDuration.{TabletOrClamshellMode}"
    units="seconds" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records how many seconds it takes a camera that got disconnected to get
    reconnected again within the grace period in {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.CaptureConfiguration.{TabletOrClamshellMode}"
    enum="CaptureModeConfiguration" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever a user performs a screen capture in
    {TabletOrClamshellMode}. The recorded enum indicates the configuration used
    for the capture. I.e. the capture source and the capture type.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.CaptureRegionAdjusted.{TabletOrClamshellMode}"
    units="adjustments" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever a user is in a region capture session in
    {TabletOrClamshellMode} 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.
    Warning: this histogram was expired from 2025-02-23 to 2025-04-08; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.ConsecutiveScreenshots"
    units="consecutive screenshots" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the number of consecutive screenshots the user takes within 5s of
    each other, regardless of capture options.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.DemoToolsEnabledOnRecordingStart.{TabletOrClamshellMode}"
    enum="BooleanEnabled" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records whether a capture mode video recording starts with demo tools
    feature enabled or not in {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.EndRecordingReason.{TabletOrClamshellMode}"
    enum="EndRecordingReason" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever capture mode screen recording is ended in
    {TabletOrClamshellMode}. The recorded enum value indicates the reason that
    lead to ending the screen recording.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.EntryPoint.{TabletOrClamshellMode}"
    enum="CaptureModeEntryType" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever Capture mode is entered from {TabletOrClamshellMode}. The
    recorded enum value indicates the method used to enter Capture mode.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.GameDashboard.SaveLocation.{TabletOrClamshellMode}"
    enum="CaptureModeSaveToLocation" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever the screen capture is saved in {TabletOrClamshellMode}
    when captured by the Game Dashboard intiated capture session. The recorded
    enum value indicates the location that the screen capture is saved.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.GameDashboard.ScreenRecordingFileSize.{TabletOrClamshellMode}"
    units="KB" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the size of the successfully recorded WebM file by the Game Dahboard
    initiated capture mode in {TabletOrClamshellMode}. This metric will not be
    recorded if a file was not successfully saved.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.GIFRecordingFileSize.{TabletOrClamshellMode}"
    units="KB" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the size of the successfully recorded GIF file by capture mode in
    {TabletOrClamshellMode}. This metric will not be recorded if a file was not
    successfully saved.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.GIFRecordingLength.{TabletOrClamshellMode}"
    units="seconds" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the time of a successful GIF recording in capture mode in
    {TabletOrClamshellMode}. This metric will not be recorded if a file was not
    successfully saved. The upper limit of this histogram is 3 hours.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.GIFRecordingRegionToScreenRatio.{TabletOrClamshellMode}"
    units="% of fullscreen area" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the percent ratio between the area of the user selected region for
    GIF recording to the area of the full screen in {TabletOrClamshellMode}.
    Emitted only when GIF recording is about to start.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.ImageSearchResult.{TabletOrClamshellMode}"
    enum="CaptureModeImageSearchResult" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever an image search completes using Sunfish. The recorded enum
    value indicates success or various failures.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.NumberOfConnectedCameras"
    units="connected cameras" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the number of connected cameras to the device whenever it changes.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.Projector.CaptureRegionAdjusted.{TabletOrClamshellMode}"
    units="adjustments" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever a user is in a region capture session in
    {TabletOrClamshellMode} 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>
</histogram>

<histogram name="Ash.CaptureModeController.QuickAction"
    enum="CaptureQuickAction" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Track all quick actions on screenshot notification. Including: Edit in
    backlight, Go to Files, Delete File.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.RecordingCameraPositionOnStart.{TabletOrClamshellMode}"
    enum="CameraPreviewSnapPosition" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the camera preview position when the recording is started in
    {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.RecordingCameraSizeOnStart.{TabletOrClamshellMode}"
    enum="CaptureModeCameraSize" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the camera size when the recording is started in
    {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.RecordingStartsWithCamera.{TabletOrClamshellMode}"
    enum="BooleanEnabled" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records whether a capture mode video recording starts with camera or not in
    {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SaveLocation.{TabletOrClamshellMode}"
    enum="CaptureModeSaveToLocation" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever screen capture is saved in {TabletOrClamshellMode}. The
    recorded enum value indicates the location that the screen capture is saved.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.ScreenRecordingFileSize.{TabletOrClamshellMode}"
    units="KB" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the size of the successfully recorded WebM file by capture mode in
    {TabletOrClamshellMode}. This metric will not be recorded if a file was not
    successfully saved, or if it was recorded for Projector.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.ScreenRecordingLength.{TabletOrClamshellMode}"
    units="seconds" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the time of a successful video recording in capture mode in
    {TabletOrClamshellMode}. This metric will not be recorded if a file was not
    successfully saved. The upper limit of this histogram is 3 hours.
  </summary>
</histogram>

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

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

<histogram
    name="Ash.CaptureModeController.SearchButtonPressed.{TabletOrClamshellMode}"
    enum="Boolean" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded each time the Search button is pressed in a default capture session
    in {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SearchButtonShown.{TabletOrClamshellMode}"
    enum="Boolean" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded each time the Search button is shown to a user in a default capture
    session in {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SearchResultClicked.{TabletOrClamshellMode}"
    enum="Boolean" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded each time a search result URL was clicked in the search results
    panel in {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SearchResultsPanelEntryPoint.{TabletOrClamshellMode}"
    enum="SearchResultsPanelEntryType" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever the search results panel is created during a capture
    session, either due to selecting a region (without an existing panel) in a
    Sunfish session, or clicking the search button in a default session. The
    recorded enum value indicates the entry point.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SearchResultsPanelShown.{TabletOrClamshellMode}"
    enum="Boolean" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded each time the search results panel was shown, including panel
    creation, region adjustment, and region reselection, in
    {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram name="Ash.CaptureModeController.SwitchesFromInitialCaptureMode"
    enum="Boolean" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits true if a user has switched capture modes (fullscreen, region, window)
    while in a capture mode session, false otherwise.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.SwitchToDefaultReason.{TabletOrClamshellMode}"
    enum="CaptureModeSwitchToDefaultReason" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever the capture folder is switched to default downloads folder
    in {TabletOrClamshellMode}. The recorded enum value indicates the reason
    that leads to the switching.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.TextDetectionResult.{TabletOrClamshellMode}"
    enum="CaptureModeTextDetectionResult" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever text detection completes using Sunfish. The recorded enum
    value indicates success with no text detected, success with text detected,
    or various failures.
  </summary>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.AudioRecordingMode.{TabletOrClamshellMode}"
    enum="AudioRecordingMode" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded at the end of a {Client}-initiated capture mode session in
    {TabletOrClamshellMode} 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="Client" variants="ScreenCaptureClient"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.CaptureConfiguration.{TabletOrClamshellMode}"
    enum="CaptureModeConfiguration" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded whenever a {Client}-initiated a screen capture is performed in
    {TabletOrClamshellMode}. 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"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.DemoToolsEnabledOnRecordingStart.{TabletOrClamshellMode}"
    enum="BooleanEnabled" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records whether a {Client}-initiated recording starts with demo tools
    feature enabled or not in {TabletOrClamshellMode}.
  </summary>
  <token key="Client" variants="ScreenCaptureClient"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.RecordingStartsWithCamera.{TabletOrClamshellMode}"
    enum="BooleanEnabled" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records whether a {Client}-initiated recording starts with camera on or not
    in {TabletOrClamshellMode}.
  </summary>
  <token key="Client" variants="ScreenCaptureClient"/>
</histogram>

<histogram
    name="Ash.CaptureModeController.{Client}.ScreenRecordingLength.{TabletOrClamshellMode}"
    units="seconds" expires_after="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the time of a successful video recording in capture mode entered
    from the client session in {TabletOrClamshellMode}. 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"/>
</histogram>

<histogram name="Ash.ContentTransfer.AuthenticationResult"
    enum="ContentTransferAuthenticationResult" expires_after="2027-04-07">
  <owner>longbowei@google.com</owner>
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-families-eng@google.com</owner>
  <summary>
    Records the outcome of webview authentication when it finishes. Allows for
    tracking the authentication success rate. Recorded for ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.ContentTransfer.FlowState" enum="ContentTransferFlowState"
    expires_after="2027-01-17">
  <owner>longbowei@google.com</owner>
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-families-eng@google.com</owner>
  <summary>
    Records the state at which the Content Transfer app was exited by the user.
    Allows for tracking the drop rate at different stages of the flow. Recorded
    for ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.ContentTransfer.ShowNudgeFailed"
    enum="ContentTransferShowNudgeFailureReason" expires_after="2027-04-07">
  <owner>longbowei@google.com</owner>
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-families-eng@google.com</owner>
  <summary>
    Recorded when showing the Content Transfer app nudge to a user has failed.
    Recorded for ChromeOS only.
  </summary>
</histogram>

<histogram name="Ash.ContextualGoogleIntegrations.{IntegrationName}.Status"
    enum="ContextualGoogleIntegrationStatus" expires_after="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2026-03-29">
  <owner>minch@chromium.org</owner>
  <owner>changmar@chromium.org</owner>
  <summary>
    Emitted true when the user switched to dark mode through toggling the (Dark
    theme) feature pod button inside system tray menu. Emitted false if the user
    switched to light mode through toggling this button. ChromeOS only.
  </summary>
</histogram>

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

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

<histogram name="Ash.Desks.AnimationSmoothness.DeskActivation" units="%"
    expires_after="2027-07-31">
  <owner>tclaiborne@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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="2027-07-31">
  <owner>xdai@chromium.org</owner>
  <owner>tclaiborne@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>tclaiborne@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>aprilzhou@google.com</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>aprilzhou@google.com</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emitted after a virtual desk being removed with close all option and undo
    toast being clicked. Warning: this histogram was expired from 2025-02-10 to
    2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Desks.ConsecutiveDailyVisits" units="days"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the desk button desk bar enter event was received and successfully
    processed to when the next frame is shown to the user.
  </summary>
</histogram>

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

<histogram name="Ash.Desks.DeskButton.HiddenByUser" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emitted when a user decides to hide the desk button to specify how often
    users are deliberately choosing to hide the button.
  </summary>
</histogram>

<histogram name="Ash.Desks.DeskButton.Presses" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emitted when a user presses on the central button on the desk button to
    specify how often users are using the center button to open or close the
    desk bar.
  </summary>
</histogram>

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

<histogram name="Ash.Desks.DesksCount3" units="units"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emitted when a starting or ending screenshot succeeded or failed.
  </summary>
</histogram>

<histogram name="Ash.Desks.MoveWindowFromActiveDesk"
    enum="DesksMoveWindowFromActiveDeskSource" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>tclaiborne@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>tclaiborne@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>aprilzhou@google.com</owner>
  <owner>chromeos-wm@google.com</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.
    Warning: this histogram was expired from 2024-07-21 to 2025-07-21; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Desks.WeeklyActiveDesks" units="active desks"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emitted when a user {BarAction} using the {EntryPoint} desk bar to specify
    how often users are using the {EntryPoint} desk bar to perform these
    actions.
  </summary>
  <token key="EntryPoint">
    <variant name="DeskButton" summary="desk button"/>
    <variant name="Overview" summary="overview"/>
  </token>
  <token key="BarAction">
    <variant name="ActivateDesk"
        summary="activates a desk (via the desk preview button)"/>
    <variant name="CloseDesk" summary="closes a desk with its windows"/>
    <variant name="CombineDesks" summary="combines a desk with another desk"/>
    <variant name="NewDesk" summary="creates a new desk"/>
    <variant name="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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Emitted when an admin template is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.AddOrUpdateTemplateStatus"
    enum="DeskModelAddOrUpdateEntryStatus" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded when a Save and Recall saved desk is manually deleted.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.DeleteTemplate" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Recorded when desk templates are deleted, is never false.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceTabCount" units="tabs"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Records the number of tabs in a Floating Workspace desk when it is saved.

    Warning: this histogram was expired from 2024-09-27 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceWindowAndTabCount"
    units="windows and tabs" expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Records the number of windows and tabs in a Floating Workspace desk when it
    is saved.

    Warning: this histogram was expired from 2024-09-27 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.FloatingWorkspaceWindowCount" units="windows"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Records the number of windows in a Floating Workspace desk when it is saved.

    Warning: this histogram was expired from 2024-09-27 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.LaunchFloatingWorkspace" enum="BooleanHit"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Emitted when a Floating Workspace desk is launched.

    Warning: this histogram was expired from 2024-09-27 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.LaunchFromTemplate" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Emitted when a Save and Recall desk is launched.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.LoadTemplateGrid" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded when a user opens the template grid, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.NewSaveAndRecall" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Recorded when a new Save and Recall desk is created.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.NewTemplate" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded when a user creates a desk template, is never false.
  </summary>
</histogram>

<histogram name="Ash.DeskTemplate.ReplaceSaveAndRecall" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Recorded when the user replaces a Save and Recall desk.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.ReplaceTemplate" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Recorded when a Save and Recall desk cannot be parsed.</summary>
</histogram>

<histogram name="Ash.DeskTemplate.SaveAndRecallTabCount" units="count"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>oshima@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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="2027-02-07">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</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.DozeMode.RealPower.DurationPercentage" units="%"
    expires_after="2027-07-31">
  <owner>vincentchiang@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    The percentage of RealPower status duration over the total duration.
    Recorded daily.
  </summary>
</histogram>

<histogram name="Ash.DozeMode.{PowerStatus}.Duration" units="ms"
    expires_after="2027-07-31">
  <owner>vincentchiang@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    The accumulated duration in ms of doze mode power scheduler has sent
    {PowerStatus} to arcvm. Recorded daily.
  </summary>
  <token key="PowerStatus" variants="PowerStatus"/>
</histogram>

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

    Warning: this histogram was expired from 2024-09-01 to 2025-07-21; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.DragWindowFromShelf.PresentationTime.MaxLatency"
    units="ms" expires_after="2027-05-21">
  <owner>tbarzic@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Maximum latency of the presentation time in ms when a window is dragged from
    the bottom of the shelf. Recorded when the drag action is finished. Warning:
    this histogram was expired from 2023-05-30 to 2025-07-21; data may be
    missing.
  </summary>
</histogram>

<histogram name="Ash.EssentialSearch.Status" enum="EssentialSearchStatus"
    expires_after="2025-08-31">
  <owner>mohammedabdon@chromium.org</owner>
  <owner>cros-3pidp@google.com</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.TotalLatency" units="ms"
    expires_after="2027-07-31">
  <owner>vincentchiang@chromium.org</owner>
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Similar to &quot;Ash.EventLatency.TotalLatency&quot; but tracks total
    latency of 5 core events
    (MouseDragged/MousePressed/MouseReleased/KeyPressed/KeyReleased) for ash UI,
    from when the user input causing the event is generated until the frame
    caused by the event is submitted by the GPU service and presented
    successfully on the screen.

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

<histogram name="Ash.EventLatency.Core.{CoreEventType}.{Fps}.TotalLatency"
    units="microseconds" expires_after="2027-07-31">
  <owner>vincentchiang@chromium.org</owner>
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Records the latency of an input event, from when it was created to when its
    corresponding frame was presented on the screen, broken down by event type
    and display refresh rate.

    This metrics is recorded for core event {CoreEventType} under {Fps}.

    This histogram only records metrics on machines with high-resolution clocks.
  </summary>
  <token key="CoreEventType" variants="EventLatencyCoreEventType"/>
  <token key="Fps" variants="EventLatencyFps"/>
</histogram>

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

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

<histogram name="Ash.EventLatency.{EventType}.TotalLatency"
    units="microseconds" expires_after="2027-07-31">
  <owner>vincentchiang@chromium.org</owner>
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <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" variants="EventLatencyEventType"/>
</histogram>

<histogram name="Ash.EventLatency.{EventType}.TotalLatency.1MinAfterResume"
    units="microseconds" expires_after="2027-01-03">
  <owner>kawasin@google.com</owner>
  <owner>baseos-perf@google.com</owner>
  <summary>
    Tracks total latency of {EventType} for ash UI, from when the user input
    causing the event is generated until the frame caused by the event is
    submitted by the GPU service and presented successfully on the screen.

    This histogram only records metrics on machines with high-resolution clocks.

    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="2027-02-07">
  <owner>aluh@chromium.org</owner>
  <owner>vsavu@google.com</owner>
  <owner>chromeos-consumer-extended-updates-team@google.com</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="2026-09-07">
  <owner>aluh@chromium.org</owner>
  <owner>vsavu@google.com</owner>
  <owner>chromeos-consumer-extended-updates-team@google.com</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="2027-07-31">
  <owner>vincentchiang@google.com</owner>
  <owner>zoraiznaeem@google.com</owner>
  <owner>cros-sw-perf@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    The amount of time a user keeps a floating window open and visible. Open and
    visible means the window is in float state and is on the active desk. If a
    window is floated and moved to an inactive desk we stop recording. The timer
    starts when we float a window and we record the histogram when the window is
    unfloated. The recording can also happen if a floated window is moved to an
    inactive desk, or the desk changes; we treat this as unfloated.
  </summary>
</histogram>

<histogram name="Ash.Float.FloatWindowMoveToAnotherDeskCounts" units="windows"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    The counts of how many times floated windows moved to another desk per
    session, which is from the time a user logs in to the time they log off.
  </summary>
</histogram>

<histogram name="Ash.Float.MultitaskMenuActionType.{TabletOrClamshellMode}"
    enum="MultitaskMenuActionType" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Recorded whatever action is taken on the {TabletOrClamshellMode} multitask
    menu.
  </summary>
</histogram>

<histogram name="Ash.Float.MultitaskMenuEntryType.{TabletOrClamshellMode}"
    enum="MultitaskMenuEntryType" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Recorded whenever the multitask menu is opened from {TabletOrClamshellMode}.
    The recorded enum value indicates the method used to open the menu.
  </summary>
</histogram>

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

    Warning: this histogram was expired from 2024-08-23 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.StartupUiClosureReason"
    enum="FloatingWorkspaceStartupUiClosureReason" expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Record if Floating Workspace startup UI was closed manually or automatically
    (once the template was restored).
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateLaunchFailureStatus"
    enum="FloatingWorkspaceV2LaunchTemplateFailureType"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Recorded the reason for template launch failures.

    Warning: this histogram was expired from 2024-02-08 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateLoadTime" units="seconds"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Indicate the time to download and launch a floating workspace template.

    Warning: this histogram was expired from 2024-02-08 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

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

    Warning: this histogram was expired from 2024-08-23 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateSize" units="B"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Record the size of an uploaded floating workspace template.

    Warning: this histogram was expired from 2024-02-08 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.FloatingWorkspace.TemplateUploadStatus"
    enum="FloatingWorkspaceV2UploadTemplateStatusType"
    expires_after="2027-05-23">
  <owner>andreydav@google.com</owner>
  <owner>slutskii@google.com</owner>
  <summary>
    Record the floating workspace template upload status.

    Warning: this histogram was expired from 2024-02-08 to 2025-05-23; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.FocusMode.Api.{Method}.Latency" units="ms"
    expires_after="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded API latency of the requests sent by Focus Mode. The recorded value
    indicates the time to receive the response.
  </summary>
  <token key="Method">
    <variant name="FocusSounds.FetchConfiguration"/>
    <variant name="ImageDownload.PlaylistThumbnail"/>
    <variant name="Tasks.AddTask"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
    <variant name="Tasks.UpdateTask"/>
    <variant name="YouTubeMusic.GetMusicSection"/>
    <variant name="YouTubeMusic.GetPlaylist"/>
    <variant name="YouTubeMusic.PlaybackQueueNext"/>
    <variant name="YouTubeMusic.PlaybackQueuePrepare"/>
    <variant name="YouTubeMusic.ReportPlayback"/>
  </token>
</histogram>

<histogram name="Ash.FocusMode.Api.{Method}.Result" enum="BooleanHit"
    expires_after="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded API result of the requests sent by Focus Mode. The recorded value
    indicates whether the request succeeds with retry.
  </summary>
  <token key="Method">
    <variant name="FocusSounds.FetchConfiguration"/>
    <variant name="ImageDownload.PlaylistThumbnail"/>
    <variant name="Tasks.AddTask"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
    <variant name="Tasks.UpdateTask"/>
    <variant name="YouTubeMusic.GetMusicSection"/>
    <variant name="YouTubeMusic.GetPlaylist"/>
    <variant name="YouTubeMusic.PlaybackQueueNext"/>
    <variant name="YouTubeMusic.PlaybackQueuePrepare"/>
    <variant name="YouTubeMusic.ReportPlayback"/>
  </token>
</histogram>

<histogram name="Ash.FocusMode.Api.{Method}.RetryCount" units="count"
    expires_after="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded API result of the requests sent by Focus Mode. The recorded value
    indicates whether the request succeeds with retry.
  </summary>
  <token key="Method">
    <variant name="ImageDownload.PlaylistThumbnail"/>
    <variant name="Tasks.AddTask"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
    <variant name="Tasks.UpdateTask"/>
    <variant name="YouTubeMusic.GetMusicSection"/>
    <variant name="YouTubeMusic.GetPlaylist"/>
    <variant name="YouTubeMusic.PlaybackQueueNext"/>
    <variant name="YouTubeMusic.PlaybackQueuePrepare"/>
    <variant name="YouTubeMusic.ReportPlayback"/>
  </token>
</histogram>

<histogram name="Ash.FocusMode.Api.{Method}.Status" enum="ApiErrorCode"
    expires_after="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded API status of the requests sent by Focus Mode. The recorded enum
    value indicates the HTTP status code of response.
  </summary>
  <token key="Method">
    <variant name="Tasks.AddTask"/>
    <variant name="Tasks.GetTaskLists"/>
    <variant name="Tasks.GetTasks"/>
    <variant name="Tasks.UpdateTask"/>
    <variant name="YouTubeMusic.GetMusicSection"/>
    <variant name="YouTubeMusic.GetPlaylist"/>
    <variant name="YouTubeMusic.PlaybackQueueNext"/>
    <variant name="YouTubeMusic.PlaybackQueuePrepare"/>
    <variant name="YouTubeMusic.ReportPlayback"/>
  </token>
</histogram>

<histogram name="Ash.FocusMode.DNDStateOnFocusEnd"
    enum="DNDStateOnFocusEndType" expires_after="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Record the reason for the ending moment bubble closed.</summary>
</histogram>

<histogram name="Ash.FocusMode.MusicPausedSessionCount" units="count"
    expires_after="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>hongyulong@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>hongyulong@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Records the playlist which starts playing during a session.</summary>
</histogram>

<histogram name="Ash.FocusMode.PlaylistsDuringSession" units="count"
    expires_after="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>hongyulong@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-01-24">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</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.InitialDuration" units="minutes"
    expires_after="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>hongyulong@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>hongyulong@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>richui@chromium.org</owner>
  <owner>skau@chromium.org</owner>
  <owner>chromeos-wm@google.com</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.FullRestore.Browser.FirstInputDelay" units="ms"
    expires_after="2027-01-17">
  <owner>vincentchiang@chromium.org</owner>
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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.ShowInformedRestoreDialog" enum="BooleanHit"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Emmited every time the informed restore dialog shows up.</summary>
</histogram>

<histogram name="Ash.GameDashboard.ControlsFeatureToggleState"
    enum="BooleanEnabled" expires_after="2027-01-03">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</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="2026-02-22">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</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.FunctionTriggered"
    enum="GameDashboardFunction" expires_after="2027-01-03">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</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="2027-01-17">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    Records where the recording starts from, main menu or toolbar.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.ScreenshotTakeSource"
    enum="GameDashboardMenu" expires_after="2027-01-17">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</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="2026-11-29">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</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="2027-01-03">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    Records whether the tool bar is toggled to expanded or collapsed.
  </summary>
</histogram>

<histogram name="Ash.GameDashboard.ToolbarNewLocation"
    enum="GameDashboardToolbarSnapLocation" expires_after="2027-01-03">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>Records where the toolbar is repositioned.</summary>
</histogram>

<histogram name="Ash.GameDashboard.ToolbarToggleState" enum="BooleanEnabled"
    expires_after="2027-01-17">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>Records whether the tool bar is toggled on or off.</summary>
</histogram>

<histogram name="Ash.GameDashboard.WelcomeDialogNotificationToggleState"
    enum="BooleanEnabled" expires_after="2027-01-03">
  <owner>phshah@chromium.org</owner>
  <owner>arc-gaming@google.com</owner>
  <summary>
    Records whether the welcome notification is toggled on or off.
  </summary>
</histogram>

<histogram name="Ash.GeminiApp.Page.Visit" enum="GeminiAppPage"
    expires_after="2026-10-26">
  <owner>dmblack@google.com</owner>
  <owner>xiaohuic@chromium.org</owner>
  <summary>
    Records visits to Gemini app related pages. Emitted when the browser tab
    performing the visit has started navigation to the recorded page.
  </summary>
</histogram>

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

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

<histogram name="Ash.Glanceables.Api.Classroom.StudentCoursesCount"
    units="courses" expires_after="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Recorded whenever glanceables UI fetches data from Google Classroom API. The
    recorded value indicates the total number of active courses returned for the
    user. This number serves as a multiplier for futher requests to get course
    work items and student submissions.
  </summary>
</histogram>

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

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

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

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

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

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

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

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

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

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

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

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

<histogram name="Ash.Glanceables.TimeManagement.Classroom.UserAction"
    enum="ClassroomUserAction" expires_after="2026-05-03">
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time that the user spent between login and opening the
    glanceables time management bubble. The time is measured from the moment the
    user logs in and the time the glanceables bubble is created.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.AddedTasks.{Emptiness}"
    units="int" expires_after="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>wcwang@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>amitrokhin@google.com</owner>
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>mmourgos@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Records the total number of times the selected tasks list is changed. The
    total count is recorded when the glanceable bubble is closed.
  </summary>
</histogram>

<histogram name="Ash.Glanceables.TimeManagement.Tasks.UserAction"
    enum="TasksUserAction" expires_after="2026-03-01">
  <owner>tbarzic@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2026-03-01">
  <owner>amitrokhin@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Records the total number of tasks shown in the default (initially selected)
    task list.
  </summary>
</histogram>

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

<histogram
    name="Ash.Glanceables.TimeManagement.{GlanceableBubble}.OpenToInitialLoadTime.{Occurrence}"
    units="ms" expires_after="2025-12-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time in ms that the glanceables bubble takes to load up the
    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="2026-08-02">
  <owner>wcwang@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2026-05-03">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    The amount of time that the user kept the glanceables time management bubble
    open. The time is measured from the moment the glanceables bubble is created
    until said bubble is destroyed. 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.HotseatTransition.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2025-12-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</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>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Presentation time in ms of the hotseat when it changes between the hidden
    and the extended state as a result of a drag action. Recorded when the drag
    action is in progress.
  </summary>
</histogram>

<histogram name="Ash.HotseatTransition.Drag.PresentationTime.MaxLatency"
    units="ms" expires_after="2025-12-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</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>anasalazar@chromium.org</owner>
  <owner>newcomer@chromium.org</owner>
  <summary>
    Tracks the animation smoothness for the bounds animation of the hotseat
    widget's elements during transitions of the hotseat to shown, extended, and
    hidden hotseat states. Check Ash.HotseatTransition.AnimationSmoothness for
    smoothness of the shelf's animating background. {HotseatTransitionType}
  </summary>
  <token key="HotseatTransitionType" variants="HotseatTransitionType"/>
</histogram>

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

<histogram name="Ash.InteractiveWindowResize.TimeToPresent" units="ms"
    expires_after="2027-07-31">
  <owner>oshima@chromium.org</owner>
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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="2025-11-18">
  <owner>oshima@chromium.org</owner>
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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="2027-01-17">
  <owner>miersh@google.com</owner>
  <owner>olsa@google.com</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.Lobster.State" enum="LobsterState"
    expires_after="2027-01-03">
  <owner>hdchuong@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    The histogram captures user interactions with Lobster feature, providing a
    funnel view from the beginning to end of the user journey.

    This metric is recorded at different times, depending on the event being
    recorded. For example, consent screen impression event is recorded at the
    time when the consent screen is shown to the user.
  </summary>
</histogram>

<histogram name="Ash.Login.ArcUiAvailableAfterLogin.Duration" units="ms"
    expires_after="2027-02-01">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.com</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="2026-11-25">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The count of auth method switching actions on ChromeOS lock screen.

    Warning: this histogram was expired from 2025-08-31 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

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

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

    Warning: this histogram was expired from 2025-08-31 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Login.Lock.SessionStateChange" enum="SessionLockEvent"
    expires_after="2026-12-27">
  <owner>mslus@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>Records all session lock and unlock events.</summary>
</histogram>

<histogram name="Ash.Login.Lock.UserClicks" enum="LockScreenUserClickTarget"
    expires_after="2026-07-04">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The numbers of times that users click on the shelf buttons, trays and lock
    screen note on the ChromeOS lock screen. Warning: this histogram was expired
    from 2026-01-04 to 2026-03-19; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Login.LoggedInStateChanged" units="ms"
    expires_after="2027-02-01">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.com</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="2026-07-12">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</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="2027-01-24">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The usage of different auth methods (PIN / Password / Smartlock /
    Fingerprint / Challenge response) on Chromebooks in clamshell mode and on
    other form-factors.

    Warning: this histogram was expired from 2025-06-29 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

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

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

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

    Warning: this histogram was expired from 2025-10-24 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

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

    Warning: this histogram was expired from 2025-06-29 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

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

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

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

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

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

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

<histogram name="Ash.LoginAnimation.Duration2.{TabletOrClamshellMode}"
    units="ms" expires_after="2027-07-31">
  <owner>oshima@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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>
</histogram>

<histogram name="Ash.LoginAnimation.Jank.{TabletOrClamshellMode}" units="%"
    expires_after="2027-07-31">
  <owner>oshima@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Jank metrics of all animations applied during the login process. This
    represents how often the frame update rate changed during animation.
    {TabletOrClamshellMode}
  </summary>
</histogram>

<histogram name="Ash.LoginAnimation.Smoothness.{TabletOrClamshellMode}"
    units="%" expires_after="2027-07-31">
  <owner>oshima@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Relative smoothness of all animations applied during the login process. 100%
    represents the ideal smoothness for 60 frames per second.
    {TabletOrClamshellMode}
  </summary>
</histogram>

<histogram name="Ash.LoginPerf.AutoRestore.AllBrowserWindowsCreated" units="ms"
    expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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.ManualRestore.{UIFlow}.TotalDuration" units="ms"
    expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Time from the moment sign in authentication is started until the post login
    animation finishes. (Chrome OS).

    Different UI flows can have longer expected times due to extra compositor
    animations. For this flow, {UIFlow}.
  </summary>
  <token key="UIFlow">
    <variant name="GlanceablesHidden"
        summary="the post login UI is shown and animated, but the glanceables
                 bar is hidden due to user pref"/>
    <variant name="GlanceablesShown"
        summary="the post login UI is shown and animated, and the glanceables
                 bar is shown. There is a loading animation on the bar that
                 may take up to 3s"/>
    <variant name="NoLoginUI"
        summary="no post login UI is shown. The user has full restore turned
                 set to always or never, or there were no windows from the
                 previous session"/>
  </token>
</histogram>

<histogram name="Ash.LoginPerf.{RestoreMode}.AllShelfIconsLoaded" units="ms"
    expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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}.DeferredTasksStarted" units="ms"
    expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</owner>
  <summary>
    The duration between primary user is logged in and when deferred task runner
    is triggered.
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram
    name="Ash.LoginPerf.{RestoreMode}.PostLoginAnimation.Duration.{TabletOrClamshellMode}"
    units="ms" expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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. {TabletOrClamshellMode}
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram
    name="Ash.LoginPerf.{RestoreMode}.PostLoginAnimation.Jank.{TabletOrClamshellMode}"
    units="%" expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</owner>
  <summary>
    Jank metrics of all animations applied during the login process. This
    represents how often the frame update rate changed during animation.
    {TabletOrClamshellMode}
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram
    name="Ash.LoginPerf.{RestoreMode}.PostLoginAnimation.Smoothness.{TabletOrClamshellMode}"
    units="%" expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</owner>
  <summary>
    Relative smoothness of all animations applied during the login process. 100%
    represents the ideal smoothness for 60 frames per second.
    {TabletOrClamshellMode}
  </summary>
  <token key="RestoreMode" variants="RestoreMode"/>
</histogram>

<histogram name="Ash.LoginPerf.{RestoreMode}.ShelfLoginAnimationEnd" units="ms"
    expires_after="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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="2027-07-31">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.org</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.LoginReadahead.Result" enum="LoginReadaheadResult"
    expires_after="2026-10-11">
  <owner>hidehiko@chromium.org</owner>
  <owner>junis@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Records the result of the readahead request for CrOS login. Failure means
    readahead failed for some files. Succeeded means all expected files will be
    prefetched. Canceled means readahead is canceled because the session is
    started while readahead is ongoing.
  </summary>
</histogram>

<histogram name="Ash.MagicBoost.DisclaimerView.{OptInFeatures}"
    enum="DisclaimerViewAction" expires_after="2026-11-29">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2026-06-28">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when any button in the web Mahi Penel widget is activated.
  </summary>
</histogram>

<histogram name="Ash.Mahi.Elucidation.LoadingTime" units="ms"
    expires_after="2026-05-24">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Record the time it takes to load the elucidation inside the Mahi panel.
    Emitted when elucidation text is fully loaded and shows up.
  </summary>
</histogram>

<histogram name="Ash.Mahi.Feedback" enum="BooleanThumbsUp"
    expires_after="2026-03-15">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-07-14">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-05-17">
  <owner>andrewxu@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-05-17">
  <owner>andrewxu@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-05-17">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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-10-12">
  <owner>kradtke@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-06-28">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-11-29">
  <owner>amoylan@chromium.org</owner>
  <owner>cros-manta-team@google.com</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="2027-02-01">
  <owner>amoylan@chromium.org</owner>
  <owner>cros-manta-team@google.com</owner>
  <summary>
    Record the time cost of successful {MantaMetricType} requests.
  </summary>
  <token key="MantaMetricType" variants="MantaMetricType"/>
</histogram>

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

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

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

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

<histogram
    name="Ash.NavigationWidget.AnimationSmoothness{HotseatTransitionType}"
    units="%" expires_after="2025-12-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</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-12-31">
  <owner>anasalazar@google.com</owner>
  <owner>chromeos-launcher@google.com</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="2026-10-08">
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Emitted when the Auto Night Light notification is shown. Warning: this
    histogram was expired from 2022-01-30 to 2025-04-08; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.NightLight.AutoNightLightNotificationState"
    enum="AshAutoNightLightNotificationState" expires_after="2026-10-08">
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</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.
    Warning: this histogram was expired from 2023-07-02 to 2025-04-08; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.NightLight.ScheduleType" enum="AshNightLightScheduleType"
    expires_after="2026-10-08">
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    The selected Night Light schedule type. Emitted when the user changes the
    Night Light schedule type from the Display System Settings. Warning: this
    histogram was expired from 2024-05-19 to 2025-04-08; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.NightLight.ScheduleType.Initial"
    enum="AshNightLightScheduleType" expires_after="2026-10-08">
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>The selected Night Light schedule type. Emitted on login.</summary>
</histogram>

<histogram name="Ash.NightLight.Temperature"
    enum="AshNightLightTemperatureRanges" expires_after="2026-10-08">
  <owner>cambickel@google.com</owner>
  <owner>cros-device-enablement@google.com</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. Warning: this
    histogram was expired from 2022-02-01 to 2025-04-08; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.NightLight.Temperature.Initial" units="%"
    expires_after="2025-12-07">
  <owner>cambickel@google.com</owner>
  <owner>cros-device-enablement@google.com</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="2026-07-14">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the &quot;clear all&quot; animation in the CrOS
    message center. This occurs when the clear all button is pressed with
    notifications that are not visible on screen. Measured via a throughtput
    tracker.
  </summary>
</histogram>

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

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

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

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

<histogram name="Ash.Notification.ImageMemorySizeInKB" units="KB"
    expires_after="2026-05-24">
  <owner>andrewxu@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-08-30">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Animation smoothness of the &quot;move down&quot; animation in the CrOS
    message center. This occurs when a notification is removed and notifications
    above the deleted one animate downwards to fill in the space. Measured via a
    throughtput tracker.
  </summary>
</histogram>

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

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

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

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

<histogram name="Ash.NotificationResource.ImageMemorySizeInKB" units="KB"
    expires_after="2026-05-17">
  <owner>andrewxu@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</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="2026-02-01">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Relative smoothness of the {Animation} in notification view when converting
    from single to group notification. 100% represents ideally smooth 60 frames
    per second. Emitted when the animation is completed.
  </summary>
  <token key="Animation">
    <variant name="FadeIn"/>
    <variant name="FadeOut"/>
  </token>
</histogram>

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

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

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

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

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

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

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

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

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

<histogram name="Ash.NotifierFramework.Nudge.TimeToAction.{TimeRange}"
    enum="NudgeCatalogName" expires_after="2025-11-30">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the time from when a specific educational nudge is shown to when it's
    interacted with. Starts measuring time when the nudge is shown and records
    the Nudge catalog name in one of the `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>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the nudge catalog name when a user presses one of the nudge's
    buttons.
  </summary>
  <token key="PrimaryOrSecondary">
    <variant name="Primary"/>
    <variant name="Secondary"/>
  </token>
</histogram>

<histogram
    name="Ash.NotifierFramework.PinnedSystemNotification.ShownWithoutIcon"
    enum="NotificationCatalogName" expires_after="2025-02-15">
  <owner>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</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>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</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>kradtke@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the time a specific toast spends on screen before being dismissed by
    the user or system. Records the toast catalog name in one of the time
    buckets available when toast is dismissed either manually or by time out.
  </summary>
  <token key="TimeRange">
    <variant name="After7s"/>
    <variant name="Within2s"/>
    <variant name="Within7s"/>
  </token>
</histogram>

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

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

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

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

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

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

<histogram
    name="Ash.OSAuth.Login.AuthFactorMigrationResult.{AuthFactorMigrationName}"
    enum="AuthFactorMigrationResult" expires_after="2026-11-25">
  <owner>antrim@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The result of {AuthFactorMigrationName} migration. Reported on each login
    after the migrations are run.

    Warning: this histogram was expired from 2025-09-07 to 2025-11-25; data may
    be missing.
  </summary>
  <token key="AuthFactorMigrationName">
    <variant name="KnowledgeFactorHashInfoMigration"/>
    <variant name="RecoveryFactorHsmPubkeyMigration"/>
  </token>
</histogram>

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

<histogram name="Ash.OSAuth.Login.Times.{LoginStage}" units="ms"
    expires_after="2026-11-25">
  <owner>antrim@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Time spent during particular stages of login process. Recorded upon
    successful login.

    Warning: this histogram was expired from 2025-02-01 to 2025-11-25; data may
    be missing.
  </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.Passwordless" enum="Boolean"
    expires_after="2026-11-01">
  <owner>iscsi@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Whether the logged-in user does not have a password. Recorded upon
    successful login.
  </summary>
</histogram>

<histogram
    name="Ash.OSAuth.{AuthenticationSurface}.NbPasswordAttempts.{AuthenticationOutcome}"
    units="attempts" expires_after="2026-07-11">
  <owner>emaamari@google.com</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    The number of incorrect passwords entered in Chrome OS
    {AuthenticationSurface} screen until the &quot;{AuthenticationOutcome}&quot;
    outcome. For previous data (grouped for login and lock screen together) see
    &quot;Ash.Login.Lock.NbPasswordAttempts.*&quot;. Warning: this histogram was
    expired from 2026-01-11 to 2026-03-19; data may be missing.
  </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
    name="Ash.Overview.AnimationSmoothness.Close.{TabletOrClamshellMode}"
    units="%" expires_after="2027-07-31">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Relative smoothness of animations when closing a window, recorded when the
    animation completes. 100% represents ideally smooth 60 frames per second.
    {TabletOrClamshellMode}
  </summary>
</histogram>

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

<histogram name="Ash.Overview.AnimationSmoothness.Exit{OverviewAnimationMode}"
    units="%" expires_after="2027-07-31">
  <owner>achuith@chromium.org</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Relative smoothness of animations when exiting overview mode, recorded when
    the animation completes. 100% represents ideally smooth 60 frames per
    second. {OverviewAnimationMode}. 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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    The number of times the arrow keys are pressed in overview mode per session,
    i.e. between bringing up overview mode and ending it. This is only measured
    for the sessions that end by selecting a window with the enter key. Warning:
    this histogram was expired from 2025-06-21 to 2025-07-21; data may be
    missing.
  </summary>
</histogram>

<histogram name="Ash.Overview.DelayedDeskBar.PresentationTime" units="ms"
    expires_after="2027-05-21">
  <owner>esum@google.com</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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.DeskBarVisibility" enum="DeskBarVisibility"
    expires_after="2027-05-21">
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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="2027-05-21">
  <owner>zoraiznaeem@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>cros-sw-perf@google.com</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.PresentationTime2.{OverviewStartReason}"
    units="ms" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>esum@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the overview enter event was received and successfully processed
    to when the next frame is shown to the user. This is segmented by different
    broad reasons overview mode was started. Each reason has a different profile
    and performance characteristics and hence, should be analyzed separately.
  </summary>
  <token key="OverviewStartReason" variants="OverviewStartReason"/>
</histogram>

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

<histogram name="Ash.Overview.Items" units="units" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>tclaiborne@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Maximum latency of the presentation time for scrolling the overview grid in
    overview mode for a scrolling session.
  </summary>
</histogram>

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

<histogram name="Ash.Overview.SelectionDepth" units="items"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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
    name="Ash.Overview.WindowDrag.PresentationTime.MaxLatency.{TabletOrClamshellMode}"
    units="ms" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Maximum latency of the presentation time for dragging a window in overview
    mode. {TabletOrClamshellMode} Warning: this histogram was expired from
    2025-04-11 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram
    name="Ash.Overview.WindowDrag.PresentationTime.{TabletOrClamshellMode}"
    units="ms" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Presentation time for dragging a window in overview mode.
    {TabletOrClamshellMode} Warning: this histogram was expired from 2025-04-11
    to 2025-07-21; data may be missing.
  </summary>
</histogram>

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

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

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

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

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

<histogram name="Ash.Personalization.Ambient.LinkToGooglePhotosClicked"
    enum="BooleanHit" expires_after="2025-06-30">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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-08-31">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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-06-30">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Emitted when a user selects an animation theme in screensaver subpage or
    when screensaver is first enabled. In the latter case, the theme is recorded
    here even without the user explicitly selecting it in the screensaver
    subpage. The theme in this case will either be the default chosen by the
    system, or the theme that the user had selected when they last disabled
    screensaver.
  </summary>
</histogram>

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

<histogram name="Ash.Personalization.AmbientMode.ScreenSaverDuration"
    enum="AmbientModeDurationOption" expires_after="2025-06-30">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Emitted when a user selects a new screen saver duration option.
  </summary>
</histogram>

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

<histogram name="Ash.Personalization.DynamicColor.ColorScheme.Settled"
    enum="PersonalizationDynamicColorColorScheme" expires_after="2025-12-28">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Records the color scheme that the user has settled on. Emitted once for
    every UMA upload.
  </summary>
</histogram>

<histogram name="Ash.Personalization.DynamicColor.StaticColor.Settled"
    enum="PersonalizationDynamicColorStaticColor" expires_after="2025-12-28">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Records the static color that the user has settled on. Emitted once for
    every UMA upload.
  </summary>
</histogram>

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

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

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

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

<histogram name="Ash.Personalization.Path" enum="PersonalizationPath"
    expires_after="2025-05-11">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Emitted when a user navigates to a valid path in personalization hub.
  </summary>
</histogram>

<histogram name="Ash.Personalization.Theme.ColorMode"
    enum="PersonalizationThemeColorMode" expires_after="2025-03-09">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Emitted when a user selects a theme button in personalization hub.
  </summary>
</histogram>

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

<histogram name="Ash.Picker.Search.{Provider}Provider.QueryTime" units="ms"
    expires_after="2027-02-14">
  <owner>shend@chromium.org</owner>
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2026-07-05">
  <owner>shend@chromium.org</owner>
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2027-01-17">
  <owner>shend@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2026-03-01">
  <owner>shend@chromium.org</owner>
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2026-03-01">
  <owner>shend@chromium.org</owner>
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2027-01-17">
  <owner>shend@chromium.org</owner>
  <owner>jopalmer@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2025-12-31">
  <owner>shend@chromium.org</owner>
  <owner>michellegc@chromium.org</owner>
  <owner>essential-inputs-team@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emitted whenever the informed restore dialog closes. Warning: this histogram
    was expired from 2025-04-05 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Pine.DialogScreenshotVisibility" enum="Boolean"
    expires_after="2027-02-07">
  <owner>minch@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-02-07">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-02-07">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    The amount of time it took to encode and save the screenshot to the disk
    that we captured on shutdown. Warning: this histogram was expired from
    2025-04-05 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Pine.ScreenshotOnShutdownStatus"
    enum="ScreenshotOnShutdownStatus" expires_after="2027-02-07">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>chromeos-wm@google.com</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. Warning: this histogram was expired from 2025-04-05 to 2025-07-21;
    data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Pine.TimeToAction.{PineContentsType}" units="ms"
    expires_after="2027-02-07">
  <owner>minch@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@google.com</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-06-22">
  <owner>takise@chromium.org</owner>
  <owner>linben@chromium.org</owner>
  <summary>
    How long Android PIP was used for, upon ending the session.

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

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

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

<histogram name="Ash.PowerNotification.CriticalNotificationOutcome"
    enum="CriticalNotificationOutcome" expires_after="2027-01-17">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record the outcome after a critical battery notification appears.
  </summary>
</histogram>

<histogram
    name="Ash.PowerNotification.CriticalNotificationToOutcomeDuration.{Outcome}"
    units="seconds" expires_after="2027-01-05">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</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="2026-11-01">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</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="2026-11-01">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</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="2026-11-20">
  <owner>hongyulong@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Record the battery level when a charger is connected and the battery status
    is from discharging to charging.
  </summary>
</histogram>

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

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

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

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

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

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

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

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

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

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

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

<histogram name="Ash.Projector.CreationFlow.{TabletOrClamshellMode}"
    enum="ProjectorCreationFlow" expires_after="2027-01-15">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks how the user progresses through the creation flow in
    {TabletOrClamshellMode}, recorded each time the user starts or ends a
    screencast recording.
  </summary>
</histogram>

<histogram name="Ash.Projector.CreationFlowError.{TabletOrClamshellMode}"
    enum="ProjectorCreationFlowError" expires_after="2027-01-15">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks the most common errors during the screencast recording creation
    process in {TabletOrClamshellMode}, recorded each time an error occurs.
  </summary>
</histogram>

<histogram name="Ash.Projector.MarkerColor.{TabletOrClamshellMode}"
    enum="ProjectorMarkerColor" expires_after="2027-01-15">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Recorded whenever the user chooses a marker color on the Projector toolbar
    in {TabletOrClamshellMode}. This metric records when the user changes the
    color or when the annotator toggles on, to record the saved last used color.
  </summary>
</histogram>

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

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

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

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

<histogram name="Ash.Projector.Toolbar.{TabletOrClamshellMode}"
    enum="ProjectorToolbar" expires_after="2027-01-15">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Recorded whenever the user opens, closes, or presses a button the Projector
    toolbar in {TabletOrClamshellMode}.
  </summary>
</histogram>

<histogram name="Ash.Projector.TranscriptsCount.{TabletOrClamshellMode}"
    units="Number of transcripts" expires_after="2027-01-15">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Tracks the number of transcripts generated during a recording in
    {TabletOrClamshellMode}, recorded each time the metadata file saved
    successfully after a recording ends.
  </summary>
</histogram>

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

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

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

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

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

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

<histogram
    name="Ash.RefactoringHint.ProfilePolicyConnectorIsManaged.{PossibleCases}"
    units="hash" expires_after="2027-04-01">
  <owner>junis@google.com</owner>
  <owner>hidehiko@chromium.org</owner>
  <summary>
    As part of the ash refactoring effort, we are going to replace
    ProfilePolicyConnector::IsManaged() with user_manager::User::is_managed() as
    much as possible.

    This histogram records the location hash of callers to
    ProfilePolicyConnector::IsManaged() to find out cases where special
    consideration is required.

    Recorded for ChromeOS only.
  </summary>
  <token key="PossibleCases">
    <variant name="Consistent" summary="Both states are consistent."/>
    <variant name="DeviceLocalAccountUnexpected"
        summary="Called for a device local account, but the policy store and
                 user managed state are inconsistent."/>
    <variant name="NonUserProfile"
        summary="Called for a profile not associated with a user (e.g.,
                 sign-in screen or lock-screen app profile)."/>
    <variant name="RegularUserEarlyCallManaged"
        summary="Called for a managed regular user before the policy system
                 is fully initialized."/>
    <variant name="RegularUserEarlyCallUnmanaged"
        summary="Called for an unmanaged regular user before the policy
                 system is fully initialized."/>
    <variant name="RegularUserUnexpectedProfileIsManaged"
        summary="Called for an unmanaged regular user, but the profile
                 indicates it is managed."/>
    <variant name="RegularUserUnexpectedUserIsManaged"
        summary="Called for a managed regular user, but the profile indicates
                 it is unmanaged."/>
  </token>
</histogram>

<histogram name="Ash.Report.InitializerState" enum="ReportState"
    expires_after="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2027-02-14">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record success if the PSM OPRF response for {PsmUseCase} contains a value.
    This network request is called after browser start if the last ping
    timestamp of the Chromebook is not known. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
</histogram>

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

<histogram name="Ash.Report.IsSystemClockSynced" enum="BooleanSuccess"
    expires_after="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record whether the preserved file read and successfully parsed all known
    last active UTC dates. ChromeOS only.
  </summary>
</histogram>

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

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

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

<histogram name="Ash.Report.StartupDelay" units="minutes"
    expires_after="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>troywang@google.com</owner>
  <owner>chromeos-data-team@google.com</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="2025-09-01">
  <owner>qianwan@google.com</owner>
  <owner>chromeos-data-team@google.com</owner>
  <summary>
    Record the number of different failed/success cases for the {PsmUseCase}
    check membership process. ChromeOS only.
  </summary>
  <token key="PsmUseCase" variants="PsmUseCase"/>
</histogram>

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

<histogram name="Ash.ScannerFeature.Timer.{Type}" units="ms"
    expires_after="2027-02-14">
  <owner>jhtin@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    Measures the time between the start of a request for {Type} and when a
    response is recieved.
  </summary>
  <token key="Type">
    <variant name="ExecutePopulatedNewCalendarEventAction"
        summary="when a new calendar event action is executed"/>
    <variant name="ExecutePopulatedNewContactAction"
        summary="when new contact action is executed"/>
    <variant name="ExecutePopulatedNewCopyToClipboardAction"
        summary="when new copy to clipboard action is executed"/>
    <variant name="ExecutePopulatedNewGoogleDocAction"
        summary="when new Google Doc action is executed"/>
    <variant name="ExecutePopulatedNewGoogleSheetAction"
        summary="when new Google Sheet action is executed"/>
    <variant name="FetchActionsForImage"
        summary="when a image is sent to fetch actions via scanner server"/>
    <variant name="OnDeviceTextDetection"
        summary="when OCR is attempted for a screenshot on-device"/>
    <variant name="PopulateNewCalendarEventAction"
        summary="when new calendar action is sent to server to be populated"/>
    <variant name="PopulateNewContactAction"
        summary="when new contact action is sent to server to be populated"/>
    <variant name="PopulateNewCopyToClipboardAction"
        summary="when new copy to clipboard action is sent to server to be
                 populated"/>
    <variant name="PopulateNewGoogleDocAction"
        summary="when new Google Doc action is sent to server to be populated"/>
    <variant name="PopulateNewGoogleSheetAction"
        summary="When new Google Sheet action is sent to server to be
                 populated"/>
  </token>
</histogram>

<histogram name="Ash.ScannerFeature.UserState" enum="ScannerFeatureUserState"
    expires_after="2027-02-14">
  <owner>jhtin@google.com</owner>
  <owner>essential-inputs-team@google.com</owner>
  <summary>
    This histogram captures user interaction and states as a user uses the
    Scanner feature.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Api.Thumbnails.Count" units="count"
    expires_after="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Records the number of thumbnails received with a max count of 8. Only
    recorded if API status code is kOk. This histogram is only used when
    SeaPenTextInput is not enabled.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Api.Thumbnails.Count2" units="count"
    expires_after="2027-01-17">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Records the number of thumbnails received with a max count of 4. Only
    recorded if API status code is kOk. This histogram is only used when
    SeaPenTextInput is enabled.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Api.Wallpaper.HasImage" enum="Boolean"
    expires_after="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Records if an image is received. Only recorded if API status code is kOk.
    Recorded for SeaPen Wallpaper. Warning: this histogram was expired from
    2025-05-04 to 2025-06-04; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.SeaPen.Api.{Type}.Latency" units="ms"
    expires_after="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2027-01-17">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2027-02-07">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-11-29">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-11-29">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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.SampleClicked"
    enum="SeaPenSamplePromptId" expires_after="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2027-02-07">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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.Template" enum="SeaPenTemplateId"
    expires_after="2026-07-05">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>thuongphan@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Record the action menu item click for SeaPen recent image of each {AppName}
    from the user. Warning: this histogram was expired from 2025-03-03 to
    2025-06-04; data may be missing.
  </summary>
  <token key="AppName" variants="SeaPenAppName"/>
</histogram>

<histogram name="Ash.SeaPen.{AppName}.Visited" enum="BooleanHit"
    expires_after="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2027-02-07">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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="2026-07-05">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</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>andrewxu@chromium.org</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-12-31">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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-06-22">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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.
    Warning: this histogram was expired from 2024-10-01 to 2025-01-31; data may
    be missing.
  </summary>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.FolderCount.{SearchType}"
    units="int" expires_after="2025-12-31">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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-06-22">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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="2025-12-31">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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. Warning: this histogram was
    expired from 2024-10-01 to 2025-01-31; data may be missing.
  </summary>
</histogram>

<histogram
    name="Ash.Search.FileSuggestions.DriveRecents.QueryResult.{SearchType}"
    enum="DriveFileError" expires_after="2025-06-22">
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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.ServerBasedSpeechRecognition.AudioLengthLeftWhenAudioCaptureEnd"
    units="ms" expires_after="2026-11-29">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    Records the length of remaining un-transcribed audio when the audio capture
    stops.
  </summary>
</histogram>

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

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

<histogram name="Ash.Shelf.DefaultApps.Pinned" enum="DefaultAppName"
    expires_after="2027-01-01">
  <owner>dmblack@google.com</owner>
  <owner>tbarzic@chromium.org</owner>
  <owner>chromeos-launcher@google.com</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-08-31">
  <owner>anasalazar@google.com</owner>
  <owner>mmourgos@google.com</owner>
  <owner>chromeos-launcher@google.com</owner>
  <summary>
    Tracks the number of menu items that are enabled in a shelf item's secondary
    menu. This metric is only recorded when a menu item is selected. 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>anasalazar@chromium.org</owner>
  <owner>mmourgos@google.com</owner>
  <summary>
    Tracks the index of the selected menu item in a shelf item's secondary menu.
    This metric is only recorded when a menu item is selected.
  </summary>
</histogram>

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

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

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

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

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

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

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

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

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

<histogram name="Ash.ShortcutCustomization.AddAccelerator.{ActionName}"
    units="Shortcuts" expires_after="2026-12-16">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2026-10-13">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2027-06-21">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks the number of times a shortcut customization action has taken place
    from the Key Shortcuts App.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.CustomizationsBeforeResetAll"
    units="count" expires_after="2026-08-10">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2026-08-30">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record the number of customized accelerator modifications on startup.
  </summary>
</histogram>

<histogram name="Ash.ShortcutCustomization.EditAcceleratorSubactions"
    enum="ShortcutCustomizationSubactions" expires_after="2026-10-13">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2026-10-13">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2026-10-13">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2027-02-14">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</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="2027-06-21">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record which default accelerator is removed by the user for {ActionName}. A
    shortcut is encoded as an int where the high 16 bits represent all the
    modifiers used, and the 0-15 bits represent which key is used.
  </summary>
  <token key="ActionName" variants="AcceleratorActionName"/>
</histogram>

<histogram name="Ash.Snap.CloseTwoWindowsDuration" units="seconds"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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). Warning: this histogram was
    expired from 2025-01-26 to 2025-04-08; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Snap.MinimizeTwoWindowsDuration" units="seconds"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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). Warning: this histogram was expired from 2025-01-26 to 2025-04-08;
    data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Snap.SnapTwoWindowsDuration" units="seconds"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Records the exit point of a Snap Group.</summary>
</histogram>

<histogram name="Ash.SnapGroups.SnapGroupPersistenceDuration" units="seconds"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-01-15">
  <owner>dorianbrandon@google.com</owner>
  <owner>bzielinski@google.com</owner>
  <owner>cros-projector@google.com</owner>
  <summary>
    The length of the speech recognition session happening on {Location}. This
    histogram records the length at the end of the session.
  </summary>
  <token key="Location" variants="RecognizerLocation"/>
</histogram>

<histogram name="Ash.SplitView.DeviceOrientation.{DeviceUIMode}"
    enum="DeviceOrientation" expires_after="2026-11-29">
  <owner>zxdan@chromium.org</owner>
  <owner>fanafan@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Emitted at the entry point of split view mode, to report the device
    orientation is in landscape mode (left and right) or portrait mode (top and
    bottom). Warning: this histogram was expired from 2025-01-05 to 2025-07-21;
    data may be missing.
  </summary>
</histogram>

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

<histogram name="Ash.SplitView.OrientationInSplitView" enum="DeviceOrientation"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Emitted when device orientation changes in split view, to report the device
    orientation is in landscape mode (left and right) or portrait mode (top and
    bottom). Warning: this histogram was expired from 2025-03-11 to 2025-07-21;
    data may be missing.
  </summary>
</histogram>

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

<histogram name="Ash.SplitView.SwapWindowCount" units="count"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    The amount of time that the user spent in multi-display split view mode,
    meaning that split view is active on more than one display. The time is
    measured from when the number of displays in split view becomes more than
    one to when it drops back down to one. Warning: this histogram was expired
    from 2025-05-21 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.SplitView.TimeInSplitView" units="ms"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>zxdan@chromium.org</owner>
  <owner>fanafan@chromium.org</owner>
  <summary>
    Emitted at the end of split view mode or the point of switching between
    clamshell mode and tablet mode in split view, to report the engagement time
    of general split view and multi-display split view in both clamshell mode
    and tablet mode.
  </summary>
  <token key="EngagementTime">
    <variant name="TimeInMultiDisplaySplitScreen"/>
    <variant name="TimeInSplitScreen"/>
  </token>
  <token key="DeviceUIMode">
    <variant name="ClamshellMode"/>
    <variant name="TabletMode"/>
  </token>
</histogram>

<histogram name="Ash.SplitViewOverviewSession.SelectedWindowIndex" units="int"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the index of the selected window in partial overview. Starts
    indexing at 0.
  </summary>
</histogram>

<histogram
    name="Ash.SplitViewOverviewSession.WindowLayoutCompleteOnSessionExit.{TabletOrClamshellMode}"
    enum="Boolean" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded at the exit point of the split view overview session in
    {TabletOrClamshellMode}. Emits true if the window layout setup is complete,
    false otherwise.
  </summary>
</histogram>

<histogram name="Ash.SplitViewOverviewSession.WindowListSize" units="int"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the total number of windows in partial overview when a window is
    selected.
  </summary>
</histogram>

<histogram
    name="Ash.SplitViewOverviewSession.{SnapSource}.ExitPoint.{TabletOrClamshellMode}"
    enum="SplitViewOverviewSessionExitPoint" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Recorded at the exit point of the split view overview session in
    {TabletOrClamshellMode}. The recorded enum indicates the reason that
    triggers the split view overview session exit.
  </summary>
  <token key="SnapSource" variants="SnapActionSource"/>
</histogram>

<histogram name="Ash.SplitViewResize.AnimationSmoothness.DividerAnimation"
    units="%" expires_after="2027-07-31">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-07-31">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Maximum latency of the presentation time while resizing one or two split
    view windows. {SplitViewResizeModes}
  </summary>
  <token key="SplitViewResizeModes" variants="SplitViewResizeModes"/>
</histogram>

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

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

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

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

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

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

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

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

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

<histogram
    name="Ash.TabDrag.PresentationTime.MaxLatency.{TabletOrClamshellMode}"
    units="ms" expires_after="2027-03-02">
  <owner>yichenz@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Maximum presentation time recorded during a tab dragging session in both
    clamshell and tablet mode. {TabletOrClamshellMode}
  </summary>
</histogram>

<histogram name="Ash.TabDrag.PresentationTime.{TabletOrClamshellMode}"
    units="ms" expires_after="2027-03-02">
  <owner>yichenz@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Presentation time in ms when a tab is dragged. In clamshell mode, each time
    a tab is dragged within a display, the time it takes to present the new
    frame on screen is recorded. In tablet mode (with webui tab strip enable),
    dragging between displays is precluded, thus each time a tab is dragged, the
    time it takes to present the new frame to screen is recorded.
    {TabletOrClamshellMode}
  </summary>
</histogram>

<histogram name="Ash.TabletMode.AnimationSmoothness.Enter" units="%"
    expires_after="2027-05-21">
  <owner>oshima@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>oshima@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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.TouchView.LidAngle" units="degrees"
    expires_after="2027-05-21">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    The length of time that TouchView is active, for each activation.
  </summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActivePercentage" units="%"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>The proportion of time spent in TouchView during a session.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewActiveTotal" units="minutes"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>The total time that TouchView is active during a session.</summary>
</histogram>

<histogram name="Ash.TouchView.TouchViewInactive" units="ms"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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 name="Ash.UnlockAnimation.Smoothness.{TabletOrClamshellMode}"
    units="%" expires_after="2027-05-21">
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <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. {TabletOrClamshellMode}
  </summary>
</histogram>

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

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

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

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

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

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

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

<histogram name="Ash.VideoConferenceTray.BackgroundImageButton.Click"
    enum="BooleanOpened" expires_after="2026-11-01">
  <owner>amoylan@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2026-11-01">
  <owner>amoylan@google.com</owner>
  <owner>cros-status-area-eng@google.com</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="2026-02-01">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when the stop screen share button in video conference tray is
    clicked.
  </summary>
</histogram>

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

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

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

<histogram name="Ash.VideoConferenceTray.{EffectName}.InitialState"
    enum="BooleanEnabled" expires_after="2027-02-07">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records the initial state of {EffectName} when the Video Conference Panel is
    shown.
  </summary>
  <token key="EffectName">
    <variant name="CameraFraming" summary="Camera Framing"/>
    <variant name="FaceRetouch" summary="Face retouch"/>
    <variant name="LiveCaption" summary="Live Caption"/>
    <variant name="NoiseCancellation" summary="Noise cancellation"/>
    <variant name="PortraitRelighting" summary="Portrait Relighting"/>
    <variant name="StudioLook" summary="Studio Look"/>
    <variant name="StudioMic" summary="Studio mic"/>
    <variant name="TestEffect" summary="Test Effect"/>
  </token>
</histogram>

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

<histogram name="Ash.Wallpaper.Collection.Settled" enum="WallpaperCollection"
    expires_after="2025-11-30">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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="2025-12-08">
  <owner>xiaohuic@chromium.org</owner>
  <owner>cros-p13n-eng@chromium.org</owner>
  <summary>
    The custom wallpaper layout type. Recorded when the user sets a new custom
    wallpaper or changes the existing custom wallpaper's layout.
  </summary>
</histogram>

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

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

<histogram name="Ash.Wallpaper.Image.Settled" enum="WallpaperImage"
    expires_after="2026-02-01">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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-05-25">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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.Preview.Show" enum="BooleanHit"
    expires_after="2024-12-30">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Tracks the preview mode usage for wallpaper. Recorded each time the
    wallpaper image is previewed.
  </summary>
</histogram>

<histogram name="Ash.Wallpaper.SeaPen.Template.Settled" enum="SeaPenTemplateId"
    expires_after="2026-07-05">
  <owner>thuongphan@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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.SetTimeOfDayAfterOobe.{Type}" enum="Boolean"
    expires_after="2026-03-07">
  <owner>cowmoo@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    Tracks whether the time of day wallpaper is set to be the default wallpaper
    successfully on supported devices. Recorded each time the user goes through
    OOBE flow and they did not have any synced wallpaper on any of their
    previous devices.
  </summary>
  <token key="Type">
    <variant name="Alternate"
        summary="An alternate time of day wallpaper for specific devices"/>
    <variant name="Default"
        summary="The default time of day wallpaper for most devices"/>
  </token>
</histogram>

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

<histogram name="Ash.Wallpaper.Type" enum="WallpaperType"
    expires_after="2026-04-26">
  <owner>kuscher@google.com</owner>
  <owner>cros-p13n-eng@google.com</owner>
  <summary>
    The wallpaper type. Recorded at user login.

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

<histogram name="Ash.Wallpaper.{Type}.MigrationLatency" units="ms"
    expires_after="2025-05-30">
  <owner>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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>jasontt@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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="2026-02-22">
  <owner>thuongphan@chromium.org</owner>
  <owner>cros-p13n-eng@google.com</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="2027-07-31">
  <owner>wutao@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Relative smoothness of cross fade animation when setting window bounds. 100%
    represents ideally smooth 60 frames per second. 50% represents when only 30
    frames per second is achieved during the animations. 0% should not happen.
    This metric is recorded exactly once when SetBoundsDirectCrossFade is
    called, such as when window is maximized.
  </summary>
</histogram>

<histogram name="Ash.Window.AnimationSmoothness.CrossFade.DragMaximize"
    units="%" expires_after="2027-07-31">
  <owner>wutao@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-07-31">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-07-31">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Relative smoothness of minimizing window animation. 100% represents ideally
    smooth 60 frames per second. 50% represents when only 30 frames per second
    is achieved during the animations. 0% should not happen. This metric is
    recorded exactly once when AnimateHideWindow_Minimize is called, such as
    when window is minimized.
  </summary>
</histogram>

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

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

<histogram name="Ash.Window.DragMaximized.NumberOfMisTriggers" units="units"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Emitted when a window state is being destroyed. Records number of
    mis-triggers of the drag to maximize behavior for a window during its
    lifetime. Warning: this histogram was expired from 2025-04-01 to 2025-07-21;
    data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Window.DragMaximized.Valid" enum="Boolean"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    This boolean keeps tracking if a drag to maximize behavior is valid or not.
    Emits true if a window is dragged to maximized and stays maximized status
    over 5 seconds. If a window is dragged to maximized, but gets restored
    during 5 seconds, the drag to maximize behavior should be considered as
    invalid and a mis-trigger. Warning: this histogram was expired from
    2025-01-05 to 2025-07-21; data may be missing.
  </summary>
</histogram>

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

<histogram name="Ash.Window.Snap.DeviceOrientation" enum="DeviceOrientation"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Records the presentation time, which is the time in milliseconds it takes
    from when the window cycle event (alt+tab) was received to when the next
    frame is shown to the user. This does not include the 150ms delay for window
    cycle (for users who switch so fast they do not need the UI).
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.InitialMode" enum="AltTabMode"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    The number of windows in the Alt+Tab selector. Only recorded once when
    cycling starts, not every time when Tab is pressed without releasing Alt.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.ModeSwitchSource"
    enum="AltTabModeSwitchSource" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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. Warning: this histogram was expired from 2025-07-03 to
    2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.SameApp.IsSameApp" enum="Boolean"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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. Warning: this histogram was expired
    from 2025-07-03 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.WindowCycleController.SwitchMode" enum="AltTabMode"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>minch@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    The number of seconds between task switches triggered by the next window and
    previous window accelerator keys (ie Alt+Tab, Alt+Shift+Tab).
  </summary>
</histogram>

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

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

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

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

<histogram name="Ash.WindowDragFromShelfResult" enum="ShelfWindowDragResult"
    expires_after="2027-05-21">
  <owner>andrewxu@chromium.org</owner>
  <owner>tbarzic@chromium.org</owner>
  <summary>
    The final state after window drag gesture that started from the system shelf
    in tablet mode. Warning: this histogram was expired from 2023-10-08 to
    2025-07-21; data may be missing.
  </summary>
</histogram>

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

    Warning: this histogram was expired from 2025-08-31 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

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

    Warning: this histogram was expired from 2024-12-01 to 2025-11-25; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerClick" enum="Boolean"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits true if the resize widget is clicked to start the resizing while in
    mulit-window resizing mode. Warning: this histogram was expired from
    2025-05-21 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerClickTwoWindowsSnapped"
    enum="Boolean" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits true if the resize widget is clicked to start the resizing while in
    mulit-window resizing mode. Warning: this histogram was expired from
    2025-05-21 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerShow" enum="Boolean"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits true if the resize widget shows on mouse hover on the ResizeWindows.
    Warning: this histogram was expired from 2025-05-21 to 2025-07-21; data may
    be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.MultiWindowResizerShowTwoWindowsSnapped" enum="Boolean"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits true if the resize widget shows on mouse hover on the ResizeWindows
    and the two windows of the ResizeWindows are snapped. Warning: this
    histogram was expired from 2025-05-21 to 2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.ActiveWindowAppType"
    enum="WindowAppType" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits every 30 minutes to report the window states type of all opened
    application windows. Warning: this histogram was expired from 2025-06-29 to
    2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.AllWindowSizes"
    enum="WindowSizeRange" expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits every 30 minutes to report the window bounds type of freeformed
    application windows. Warning: this histogram was expired from 2025-06-29 to
    2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowLayoutState.WindowNumbers" units="int"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>
    Emits every 30 minutes to report the number of opened application windows.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSnapActionSource2" enum="WindowSnapActionSource"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@chromium.org</owner>
  <summary>
    Emitted when a window is to be snapped. Records different ways for a user to
    snap a window. Warning: this histogram was expired from 2025-03-11 to
    2025-07-21; data may be missing.
  </summary>
</histogram>

<histogram name="Ash.Wm.WindowSplitting.DragDuration.PerNoSplit" units="ms"
    expires_after="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</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="2027-05-21">
  <owner>xdai@chromium.org</owner>
  <owner>chromeos-wm@google.com</owner>
  <summary>Records the window region where a window is split.</summary>
</histogram>

<histogram name="DemoMode.ActiveApp" enum="DemoModeApp"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The currently active app or window. Sampled during demo sessions and
    reported while the user remains active.
  </summary>
</histogram>

<histogram name="DemoMode.AppLaunched" enum="DemoModeApp"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Records apps that have been launched by a user using the device during Demo
    mode. The sample is recorded when each app is launched. For any given app
    id, the metric is recorded only once per Demo Session.
  </summary>
</histogram>

<histogram name="DemoMode.AppLaunchSource" enum="DemoModeAppLaunchSource"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The source of app launches in demo mode, either the shelf, the app list, the
    demo mode app, or the search result in the app list.
  </summary>
</histogram>

<histogram name="DemoMode.AppUsageTime.{DemoModeAppName}" units="s"
    expires_after="2027-01-25">
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Records most popular apps usage time in Demo mode. The duration starts from
    app created and end on closed. Note apps could be closed by user or auto
    closed by program when idle time reaches.
  </summary>
  <token key="DemoModeAppName">
    <variant name="BeFunky"/>
    <variant name="Browser"/>
    <variant name="DemoModeApp"/>
    <variant name="FilesManager"/>
    <variant name="Gemini"/>
    <variant name="GoogleDocs"/>
    <variant name="GooglePhoto"/>
    <variant name="Minecraft"/>
    <variant name="OtherArcApp"/>
    <variant name="PlayStore"/>
    <variant name="Spotify"/>
    <variant name="StardewValley"/>
    <variant name="Sumo"/>
    <variant name="YouTubePwa"/>
    <variant name="Zoom"/>
  </token>
</histogram>

<histogram name="DemoMode.AttractLoop.Timestamp" units="ms"
    expires_after="2027-01-25">
  <owner>llin@google.com</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The timestamp (i.e. milliseconds from the beginning of the Attract Loop
    video) at which the user broke the Demo Mode Attract Loop.
  </summary>
</histogram>

<histogram name="DemoMode.DwellTime" units="seconds" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The duration the user spent interacting with the demo session, measured from
    the first user activity to the last user activity. This metric rounds the
    duration to the nearest second and uses exponential bucketing capped at 1
    hour. The value would be 0 when there is only one user activity in a demo
    session, i.e. the first user activity = the last user activity.
  </summary>
</histogram>

<histogram name="DemoMode.GMSCoreDialogShown" enum="Boolean"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Records whether a window associated with GMSCore has been created during the
    demo session.
  </summary>
</histogram>

<!-- Note: DemoMode.Highlights.* metrics are recorded via runtime-downloaded
  content that is not checked into Chromium. Please do not delete this code,
  even if it looks like there's no production references in Chromium, without
  first consulting the Demo Mode team. -->

<histogram
    name="DemoMode.Highlights.DetailsPageStayDuration.{HighlightsDetailsPageName}"
    units="ms" expires_after="2027-01-25">
  <owner>llin@google.com</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The duration a user spent on a given details page of the Highlights App.
    Only is recorded for Highlights App versions with the UI concept of a
    &quot;details&quot; page.
  </summary>
  <token key="HighlightsDetailsPageName">
    <variant name="AdobePage" summary="Highlights app Adobe detail page"/>
    <variant name="AIBackgroundPage"
        summary="Highlights app AI background detail page"/>
    <variant name="AIPremiumPlanPage"
        summary="Highlights app Google One AI Premium Plan detail page"/>
    <variant name="AutoUpdatePage" summary="Auto Update detail page"/>
    <variant name="BatteryPage" summary="Highlights app Battery detail page"/>
    <variant name="BetterTogetherPage"
        summary="Highlights app Better Together detail page"/>
    <variant name="BuiltInSecurityPage"
        summary="Highlights app Built In Security detail page"/>
    <variant name="ComparisonPage"
        summary="Highlights app Comparison detail page"/>
    <variant name="DisplayEntertainmentPage"
        summary="Highlights app Display (Entertainment) detail page"/>
    <variant name="DisplayPerformancePage"
        summary="Highlights app Display (Performance) detail page"/>
    <variant name="DriveIntegrationPage"
        summary="Highlights app Drive Integration detail page"/>
    <variant name="EasySetupPage" summary="Easy setup detail page"/>
    <variant name="EntertainmentAppsPage"
        summary="Highlights app Entertainment Apps detail page"/>
    <variant name="FastBootPage" summary="Fast boot detail page"/>
    <variant name="FileSyncPage"
        summary="Highlights app File Sync detail page"/>
    <variant name="GameDashboardPage"
        summary="Highlights app Game Dashboard detail page"/>
    <variant name="GeminiAdvancePage"
        summary="Highlights app Gemini Advance detail page"/>
    <variant name="GeminiForAllPage"
        summary="Highlights app Gemini for all detail page"/>
    <variant name="GeminiForWorkSpacePage"
        summary="Highlights app Gemini for Work space detail page"/>
    <variant name="GeminiPWAPage"
        summary="Highlights app Gemini PWA detail page"/>
    <variant name="GoogleAppsPage"
        summary="Highlights app Google Apps detail page"/>
    <variant name="GoogleToolsBuiltInPage"
        summary="Google tools built in detail page"/>
    <variant name="HelpMeReadPage"
        summary="Highlights app Help me read detail page"/>
    <variant name="HelpMeWritePage"
        summary="Highlights app Help me write detail page"/>
    <variant name="LauncherSearchPage"
        summary="Highlights app Launcher search detail page"/>
    <variant name="LiveTranslatePage"
        summary="Highlights app Live translate detail page"/>
    <variant name="LumaFusionPage"
        summary="Highlights app LumaFusion detail page"/>
    <variant name="MagicEditorPage"
        summary="Highlights app Magic Editor detail page"/>
    <variant name="MessagingPage"
        summary="Highlights app Messaging detail page"/>
    <variant name="MobileGamingPage"
        summary="Highlights app Mobile Gaming detail page"/>
    <variant name="MS365AppsPage"
        summary="Highlights app MS365 Apps detail page"/>
    <variant name="MSOfficePage" summary="Highlights app MSOffice detail page"/>
    <variant name="NearbySharePage"
        summary="Highlights app Nearby Share detail page"/>
    <variant name="OfflineModePage"
        summary="Highlights app Offline Mode detail page"/>
    <variant name="PCConsoleGamingPage"
        summary="Highlights app PC/Console Gaming detail page"/>
    <variant name="PhoneHubPage"
        summary="Highlights app Phone Hub detail page"/>
    <variant name="PhotosPage" summary="Highlights app Photos detail page"/>
    <variant name="PlayStorePage" summary="Play Store detail page"/>
    <variant name="ProcessorPage"
        summary="Highlights app Processor detail page"/>
    <variant name="ProductivityPage" summary="Productivity detail page"/>
    <variant name="QuickInsertPage"
        summary="Highlights app Quick Insert detail page"/>
    <variant name="SelectToSearchPage"
        summary="Highlights app Select To Search detail page"/>
    <variant name="StoragePage" summary="Highlights app Storage detail page"/>
    <variant name="SwitchingPage"
        summary="Highlights app Switching detail page"/>
    <variant name="SwitchToChromeBookPage"
        summary="Switch to ChromeBook detail page"/>
    <variant name="TitanC2Page" summary="Titan C2 details page"/>
    <variant name="VideoCallPage"
        summary="Highlights app Video Call detail page"/>
    <variant name="WebcamPage" summary="Highlights app Webcam detail page"/>
    <variant name="WelcomeRecapPage"
        summary="Highlights app Welcome Recap detail page"/>
  </token>
</histogram>

<histogram name="DemoMode.Highlights.Error" enum="DemoModeHighlightsError"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Unexpected Demo Mode Highlight app error. The metrics will be emitted when
    encounting an error.
  </summary>
</histogram>

<histogram name="DemoMode.Highlights.FirstInteraction"
    enum="DemoModeHighlightsAction" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The first interaction (button clicks) after entering the Highlights app. The
    metric will be emitted once the user clicks on a button in Hightlights app,
    e.g. pillar page button or the home button on the home page.
  </summary>
</histogram>

<histogram name="DemoMode.Highlights.PageStayDuration.{HighlightsPageName}"
    units="ms" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The time duration a user stays in each page of the Highlights app, e.g. the
    home page, each pillar page. The metric will be emitted when the user enters
    another page or exits the {HighlightsPageName}.
  </summary>
  <token key="HighlightsPageName">
    <variant name="AppsPage" summary="Highlights app Apps page"/>
    <variant name="ChromeOSPage" summary="Highlights app ChromeOS page"/>
    <variant name="DisplayPage" summary="Highlights app Display page"/>
    <variant name="EasyPage" summary="Highlights app Easy page"/>
    <variant name="EasyToUsePage" summary="Highlights app Easy to use page"/>
    <variant name="FastPage" summary="Highlights app Fast page"/>
    <variant name="GamePage" summary="Highlights app Game page"/>
    <variant name="GoogleAIPage" summary="Highlights app Google AI page"/>
    <variant name="GoogleBuiltInPage"
        summary="Highlights app Google built in page"/>
    <variant name="GraphicsPage" summary="Highlights app Graphics page"/>
    <variant name="HomePage" summary="Highlights app Home page"/>
    <variant name="KeyboardPage" summary="Highlights app Keyboard page"/>
    <variant name="PerformancePage" summary="Highlights app Performance page"/>
    <variant name="PeripheralsPage" summary="Highlights app Peripherals page"/>
    <variant name="PowerfulPage" summary="Highlights app Powerful page"/>
    <variant name="SecurePage" summary="Highlights app Secure page"/>
  </token>
</histogram>

<histogram name="DemoMode.IdleLogoutWarningEvent"
    enum="DemoModeIdleLogoutWarningEvent" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Tracks whether the idle logout warning was canceled or proceeded to logout.
    Note: the count of &quot;shown&quot; includes both cases, so the count of
    &quot;shown and proceeded&quot; is equal to &quot;shown&quot; minus
    &quot;canceled&quot;.
  </summary>
</histogram>

<histogram name="DemoMode.ResourcesRemoval.Reason"
    enum="DemoModeResourcesRemovalReason" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Tracks the reason for removal of pre-install demo resources. To support
    offline demo mode, factory Chrome OS devices will have a set of offline
    enabled demo mode apps pre-installed. These resources are removed once they
    are not needed anymore.
  </summary>
</histogram>

<histogram name="DemoMode.ResourcesRemoval.Result"
    enum="DemoModeResourcesRemovalResult" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Tracks the result of requests to remove pre-installed demo resources. To
    support offline demo mode, factory Chrome OS devices will have a set of
    offline enabled demo mode apps pre-installed. These resources are removed
    once they are not needed anymore. This will record only requests that
    attempted deleting pre-installed resources from disk. Requests that fail
    early will be ignored. For example, a request will fail early if the device
    is in demo mode, or the resources have already been removed.
  </summary>
</histogram>

<histogram name="DemoMode.SessionLength" units="minutes"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    A demo session starts when a user signs in using the policy-configured
    public account. It stops when the user signs out, either manually or after
    an idle timeout. Session length is the duration between the first user
    activity and the end of the session. It is recorded during signing out and
    reported on the next chrome run. This metric tracks the recorded session
    length rounded down to the nearest minute and is capped at 2 hours.
  </summary>
</histogram>

<histogram name="DemoMode.Setup.ComponentInitialLoadingResult"
    enum="DemoModeSetupComponentLoadingResult" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    This records the result of each component initial loading during the demo
    mode setup process. This setup process will only proceed if both the app and
    the resources components loading succeeds.
  </summary>
</histogram>

<histogram name="DemoMode.Setup.ComponentLoadingRetryResult"
    enum="DemoModeSetupComponentLoadingResult" expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    This records the result of each component loading retry during the demo mode
    setup process. The retry is manually initiated after the setup process has
    encountered an error during the loading screen and been required to retry
    setup. This setup process will only proceed if both the app and the
    resources components loading succeeds.
  </summary>
</histogram>

<histogram name="DemoMode.Setup.DownloadDuration" units="ms"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    This records the time taken to download the demo mode resources when demo
    mode is setup for the first time.
  </summary>
</histogram>

<histogram name="DemoMode.Setup.EnrollDuration" units="ms"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    This records the time taken to enterprise-enroll the device when demo mode
    is setup for the first time.
  </summary>
</histogram>

<histogram name="DemoMode.Setup.Error" enum="DemoModeSetupError"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The failure reason of the demo mode setup process. This includes both the
    intial and retry attemp, as well as both the component loading and
    enterprise enrollment process.
  </summary>
</histogram>

<histogram name="DemoMode.Setup.LoadingDuration" units="ms"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    When demo mode is setup for the first time, it must download the demo mode
    resources and enterprise-enroll the device. This records the time taken for
    these two steps to complete. (See DemoMode.Setup.DownloadDuration and
    DemoMode.Setup.EnrollDuration)
  </summary>
</histogram>

<histogram name="DemoMode.Setup.NumRetries" units="units"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Records the number of times an operator has encountered an error during the
    loading screen and been required to retry setup. This is only recorded after
    setup completes successfully.
  </summary>
</histogram>

<histogram name="DemoMode.SignedIn.MGSFallback.Shopper.DwellTime"
    units="seconds" expires_after="2027-01-25">
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The duration the user spent interacting with a demo mode signed-in
    experience managed guest session fallback shopper session, measured from the
    first user activity to the last user activity. This managed guest session
    fallback occurs when the device tries to sign in but encounters a failure.
    Note that the shopper session here is different from the Chrome OS session.
    A shopper session restarts after idling a period of time. A Chrome OS
    session can contain multiple shopper sessions. This metric rounds the
    duration to the nearest second and uses exponential bucketing capped at 1
    hour. The value would be 0 when there is only one user activity in a demo
    session, i.e. the first user activity = the last user activity.
  </summary>
</histogram>

<histogram name="DemoMode.SignedIn.Request.CleanupResult"
    enum="DemoModeSignedInAccountRequestResult" expires_after="2027-01-25">
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    This records the result of the account cleanup request in demo mode signed
    in experience. It can be success or one of the possible failure reasons,
    such as the network error. Please refer to the enum class
    DemoSessionMetricsRecorder::DemoAccountRequestResultCode for more
    information.
  </summary>
</histogram>

<histogram name="DemoMode.SignedIn.Request.SetupResult"
    enum="DemoModeSignedInAccountRequestResult" expires_after="2027-01-25">
  <owner>wanghaifan@google.com</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    This records the result of the account setup request in demo mode signed in
    experience. It can be success or one of the possible failure reasons, such
    as the network error. Please refer to the enum class
    DemoSessionMetricsRecorder::DemoAccountRequestResultCode for more
    information.
  </summary>
</histogram>

<histogram name="DemoMode.SignedIn.Shopper.DwellTime" units="seconds"
    expires_after="2027-01-25">
  <owner>wanghaifan@google.com</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    The duration the user spent interacting with a signed-in demo mode shopper
    session, measured from the first user activity to the last user activity.
    Note that the shopper session here is different from the Chrome OS session.
    A shopper session restarts after idling a period of time. A Chrome OS
    session can contain multiple shopper sessions. This metric rounds the
    duration to the nearest second and uses exponential bucketing capped at 1
    hour. The value would be 0 when there is only one user activity in a demo
    session, i.e. the first user activity = the last user activity.
  </summary>
</histogram>

<histogram name="DemoMode.UniqueAppsLaunched" units="units"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Records how many unique apps have been launched by a user using the device
    during Demo mode. The sample is recorded when the DemoMode session closes.
  </summary>
</histogram>

<histogram name="DemoMode.UserClicksAndPresses" units="clicks"
    expires_after="2027-01-25">
  <owner>llin@chromium.org</owner>
  <owner>xiqiruan@chromium.org</owner>
  <owner>cros-demo-mode-eng@google.com</owner>
  <summary>
    Records how many times the user clicks mouse and presses screen in the demo
    session. During one demo session, if a mouse click or screen press happens,
    increment this metric by one.
  </summary>
</histogram>

<histogram name="DisplayManager.InternalDisplayZoomPercentage" units="%"
    expires_after="2027-04-05">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    The zoom percentage that the user has set on the internal display and is
    actively using. This is emitted when the zoom factor has been updated in
    display manager and has not been changed for a while.
  </summary>
</histogram>

<histogram name="DisplayManager.MirroringImplementation"
    enum="DisplayMirroringImplementation" expires_after="2026-03-22">
  <owner>jshargo@chromium.org</owner>
  <owner>oshima@chromium.org</owner>
  <owner>chromeos-gfx-compositor@google.com</owner>
  <summary>
    The way in which mirroring is implemented, either in hardware or software.
    This is emitted once when mirroring is enabled through API call, or the
    display configuration changes ( e.g. adding or removing a display) when
    mirror mode is on.
  </summary>
</histogram>

<histogram name="DisplayManager.MirrorModeTypes" enum="DisplayMirrorModeTypes"
    expires_after="2026-02-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    The types of mirror mode in which the displays connected to the device are
    in. This is emitted once when the normal or mixed mirror mode is enabled
    through API call, or the display configuration changes ( e.g. adding or
    removing a display) when mirror mode is on.

    Warning: this histogram was expired from 2023-04-23 to 2024-11-16; data may
    be missing.
  </summary>
</histogram>

<histogram name="DisplayManager.MultiDisplayMode" enum="MultiDisplayModes"
    expires_after="2027-02-14">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    The mode in which the connected displays to the device are in. This is
    emitted once when displays are added or removed, or when the user changes
    the mode by e.g. enabling mirror or unified modes.
  </summary>
</histogram>

<histogram name="DisplayManager.UnifiedDesktopDisplayCountRange"
    enum="MultiDisplayModeDisplayCountRanges" expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    The number of displays connected to the device when Unified Desktop mode is
    on. This is emitted when Unified Desktop mode is turned on, or the displays
    are added or removed while in Unified Mode.
  </summary>
</histogram>

<histogram name="DisplayManager.UpdateDisplayConfigurationTask.Success"
    enum="BooleanSuccess" expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records whether or not the display configuration was successfully updated.
    Emitted when the update-display-configuration task finishes, successfully or
    not.

    Warning: this histogram was expired from M102 to M117; data may be missing.
  </summary>
</histogram>

<histogram name="Mouse.PointerSensitivity.Changed" enum="PointerSensitivity"
    expires_after="2026-11-03">
  <owner>zhangwenyu@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks mouse sensitivity setting changes by the user. This replaces the old
    Mouse.Sensitivity.Changed metric. Only reported on Chrome OS.
  </summary>
</histogram>

<histogram name="Mouse.PointerSensitivity.Started" enum="PointerSensitivity"
    expires_after="2026-11-03">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks mouse sensitivity setting on startup. This replaces the old
    Mouse.Sensitivity.Started metric. Only reported on Chrome OS.

    Expired from 2022-12-04 to M113. May be missing some data.
  </summary>
</histogram>

<histogram name="Mouse.ScrollAcceleration{PreferenceChangeType}"
    enum="BooleanEnabled" expires_after="2026-11-03">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Whether mouse scroll acceleration is enabled. Only reported on Chrome OS.

    Warning: this histogram was expired from 2025-12-01 to 2026-05-18; data may
    be missing. {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="Mouse.ScrollSensitivity{PreferenceChangeType}"
    enum="PointerSensitivity" expires_after="2026-11-03">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Mouse scroll sensitivity value. Only reported on Chrome OS.

    Warning: this histogram was expired from 2025-12-01 to 2026-05-18; data may
    be missing. {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="PointingStick.Acceleration{PreferenceChangeType}"
    enum="BooleanEnabled" expires_after="2026-06-11">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Acceleration setting for pointing sticks (typically TrackPoints, the
    miniature red joysticks found in some laptop keyboards). Only reported on
    Chrome OS.

    Expired from 2021-04-01 to M113. May be missing some data.
    {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="PointingStick.PointerSensitivity{PreferenceChangeType}"
    enum="PointerSensitivity" expires_after="2026-06-11">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Sensitivity value for pointing sticks (typically TrackPoints, the miniature
    red joysticks found in some laptop keyboards). Only reported on Chrome OS.

    Expired from 2021-04-01 to M113. May be missing some data.
    {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="PointingStick.PrimaryButtonRight{PreferenceChangeType}"
    enum="PointerPrimaryButton" expires_after="2026-06-11">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Setting for the primary button of pointing sticks (typically TrackPoints,
    the miniature red joysticks found in some laptop keyboards). Only reported
    on Chrome OS.

    Expired from 2021-04-01 to M113. May be missing some data.
    {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="Touchpad.HapticFeedback.Changed" enum="BooleanEnabled"
    expires_after="2027-09-01">
  <owner>gavinwill@google.com</owner>
  <owner>cros-device-enablement@chromium.org</owner>
  <summary>
    Tracks touchpad haptic feedback setting changes by the user. Only reported
    on Chrome OS.
  </summary>
</histogram>

<histogram name="Touchpad.HapticFeedback.Started" enum="BooleanEnabled"
    expires_after="2027-09-01">
  <owner>gavinwill@google.com</owner>
  <owner>cros-device-enablement@chromium.org</owner>
  <summary>
    Tracks touchpad haptic feedback setting on startup. Only reported on Chrome
    OS.
  </summary>
</histogram>

<histogram name="Touchpad.NaturalScroll.Changed" enum="BooleanEnabled"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad natural scroll setting changes by the user. Only reported on
    Chrome OS.

    Warning: this histogram was expired from 2022-06-15 to M105; data may be
    missing.
  </summary>
</histogram>

<histogram name="Touchpad.NaturalScroll.Started" enum="BooleanEnabled"
    expires_after="2026-11-29">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad natural scroll setting on startup. Only reported on Chrome
    OS.
  </summary>
</histogram>

<histogram name="Touchpad.PointerSensitivity.Changed" enum="PointerSensitivity"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad sensitivity setting changes by the user. This replaces the
    old Touchpad.Sensitivity.Changed metric. Only reported on Chrome OS.

    Warning: this histogram was expired from 2022-06-15 to M105; data may be
    missing.
  </summary>
</histogram>

<histogram name="Touchpad.PointerSensitivity.Started" enum="PointerSensitivity"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad sensitivity setting on startup. This replaces the old
    Touchpad.Sensitivity.Started metric. Only reported on Chrome OS.

    Warning: this histogram was expired from 2022-06-15 to M105; data may be
    missing.
  </summary>
</histogram>

<histogram name="Touchpad.ScrollAcceleration{PreferenceChangeType}"
    enum="BooleanEnabled" expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Whether touchpad scroll acceleration is enabled. Only reported on Chrome OS.

    Warning: this histogram was expired from 2020-12-01 to M105, 2023-12-10 to
    M123; data may be missing. {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="Touchpad.ScrollSensitivity{PreferenceChangeType}"
    enum="PointerSensitivity" expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Touchpad scroll sensitivity value. Only reported on Chrome OS.

    Warning: this histogram was expired from 2020-12-01 to M105, 2023-12-10 to
    M123; data may be missing. {PreferenceChangeType}
  </summary>
</histogram>

<histogram name="Touchpad.TapDragging.Changed" enum="BooleanEnabled"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad TapDragging setting changes by the user. Only reported on
    Chrome OS.

    Warning: this histogram was expired from 2022-06-15 to M105; data may be
    missing.
  </summary>
</histogram>

<histogram name="Touchpad.TapDragging.Started" enum="BooleanEnabled"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad TapDragging setting on startup. Only reported on Chrome OS.

    Warning: this histogram was expired from 2022-06-15 to M105; data may be
    missing.
  </summary>
</histogram>

<histogram name="Touchpad.TapToClick.Changed" enum="BooleanEnabled"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad TapToClick setting changes by the user. Only reported on
    Chrome OS.

    Warning: this histogram was expired from 2022-06-15 to M105; data may be
    missing.
  </summary>
</histogram>

<histogram name="Touchpad.TapToClick.Started" enum="BooleanEnabled"
    expires_after="2025-12-01">
  <owner>zhangwenyu@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Tracks touchpad TapToClick setting changes by the user. Only reported on
    Chrome OS.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
