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

<!--
Copyright 2023 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 histograms for
functionality in CrosAudioConfig.

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

Prefer owners from the OWNERS file in this directory. If you need a metrics
reviewer, please send CLs to [email protected] rather than to
specific individuals. These CLs will be automatically reassigned to a reviewer
within about 5 minutes. This approach helps the metrics team to load-balance
incoming reviews. Googlers can read more about this at go/gwsq-gerrit.
-->

<histogram-configuration>

<histograms>

<histogram name="ChromeOS.AudioSelection" enum="AudioSelectionEvents"
    expires_after="2025-03-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when audio selection events described in AudioSelectionEvents
    happen. For example, the system switches or does not switch active audio
    device after the device is added or removed, the user overrides the system
    switching or not switching decision, etc. The user-override metrics are only
    recorded if they occur within the first hour after the system decision was
    made. Do not record if there is no alternative available audio device.
  </summary>
</histogram>

<histogram name="ChromeOS.AudioSelection.ExceptionRulesMet"
    enum="AudioSelectionExceptionRules" expires_after="2025-03-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when audio selection exception rules are met. Exception rules are
    detailed in enum AudioSelectionExceptionRules.
  </summary>
</histogram>

<histogram name="ChromeOS.AudioSelection.Notification"
    enum="AudioSelectionNotificationEvents" expires_after="2025-03-31">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when audio selection notification events described in
    AudioSelectionNotificationEvents happen. For example, when a new input
    device is connected for the first time, a notification with a switch button
    shows up and allows users to quickly activate this input device.
  </summary>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.ConsecutiveDevicesChangeTimeElapsed.{ChangeType}"
    units="seconds" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when {AudioType} audio devices have changed, including
    {ChangeType}. Record the time elaspsed between two consecutive devices
    change event.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="ChangeType">
    <variant name="Add" summary="devices added"/>
    <variant name="Any" summary="devices added/removed and devices changed"/>
  </token>
</histogram>

<histogram name="ChromeOS.AudioSelection.{AudioType}.SystemSwitchAudio"
    enum="BooleanSwitched" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the system switches or does not switch {AudioType} audio after
    device is added or removed. Do not record if there is no alternative
    available {AudioType} audio device.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.SystemSwitchAudio.{IsChromeRestarts}"
    enum="BooleanSwitched" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to ChromeOS.AudioSelection.{AudioType}.SystemSwitchAudio but only
    recorded in cases of {IsChromeRestarts}.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="IsChromeRestarts">
    <variant name="ChromeRestarts" summary="chrome restarts"/>
    <variant name="NonChromeRestarts" summary="non chrome restarts"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.AudioDeviceCount"
    units="counts" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record the number of audio devices when the system {SwitchDecision}
    {AudioType} audio after device is added or removed. Recorded right after
    ChromeOS.AudioSelection.{AudioType}.SystemSwitchAudio is recorded.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.AudioDeviceCount.{IsChromeRestarts}"
    units="counts" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to
    ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.AudioDeviceCount
    but only recorded in cases of {IsChromeRestarts}.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
  <token key="IsChromeRestarts">
    <variant name="ChromeRestarts" summary="chrome restarts"/>
    <variant name="NonChromeRestarts" summary="non chrome restarts"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.AudioDeviceSet"
    units="counts" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record all the connected audio device types when the system {SwitchDecision}
    {AudioType} audio after device is added or removed. Recorded right after
    ChromeOS.AudioSelection.{AudioType}.SystemSwitchAudio is recorded.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.AudioDeviceSet.{IsChromeRestarts}"
    units="counts" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to
    ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.AudioDeviceSet
    but only recorded in cases of {IsChromeRestarts}.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
  <token key="IsChromeRestarts">
    <variant name="ChromeRestarts" summary="chrome restarts"/>
    <variant name="NonChromeRestarts" summary="non chrome restarts"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.BeforeAndAfterAudioDeviceSet"
    enum="AudioSelectionBeforeAndAfterDeviceSet" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record all the connected audio device types when the system {SwitchDecision}
    {AudioType} audio after device is added or removed. Record both before and
    after condition of audio device set. Recorded right after
    ChromeOS.AudioSelection.{AudioType}.SystemSwitchAudio is recorded.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.BeforeAndAfterAudioDeviceSet.{IsChromeRestarts}"
    enum="AudioSelectionBeforeAndAfterDeviceSet" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to
    ChromeOS.AudioSelection.{AudioType}.System{SwitchDecision}Audio.BeforeAndAfterAudioDeviceSet
    but only recorded in cases of {IsChromeRestarts}.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
  <token key="IsChromeRestarts">
    <variant name="ChromeRestarts" summary="chrome restarts"/>
    <variant name="NonChromeRestarts" summary="non chrome restarts"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.UserOverrideSystem{SwitchDecision}Audio.BeforeAndAfterAudioDeviceSet"
    enum="AudioSelectionBeforeAndAfterDeviceSet" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Record all the connected audio device types when users override the system
    decision of {SwitchDecision} {AudioType} audio devices. Record both before
    and after condition of audio device set.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.UserOverrideSystem{SwitchDecision}TimeElapsed"
    units="minutes" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when user overrides the {AudioType} audio device selection right
    after the event of system makes the decision of {SwitchDecision} active
    audio device. Records the time delta between user overrides and the system
    decision. The shorter time delta, the more confidence we can conclude that
    user overrides due to bad system decision.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.AudioSelection.{AudioType}.UserOverrideSystem{SwitchDecision}TimeElapsed.{IsChromeRestarts}"
    units="minutes" expires_after="2025-02-25">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Similar to
    ChromeOS.AudioSelection.{AudioType}.UserOverrideSystem{SwitchDecision}TimeElapsed
    but only recorded in cases of {IsChromeRestarts}.
  </summary>
  <token key="AudioType">
    <variant name="Input" summary="input"/>
    <variant name="Output" summary="output"/>
  </token>
  <token key="SwitchDecision">
    <variant name="NotSwitch" summary="not switching"/>
    <variant name="Switch" summary="switching"/>
  </token>
  <token key="IsChromeRestarts">
    <variant name="ChromeRestarts" summary="chrome restarts"/>
    <variant name="NonChromeRestarts" summary="non chrome restarts"/>
  </token>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.DeviceChange"
    enum="AudioDeviceChange" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user changes either the input or output audio device from
    a WebUI, such as the OS Audio Settings page. Not recorded when the audio
    device is programmatically changed.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.InputDeviceTypeChangedTo"
    enum="AudioDeviceType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of device selected when the user changes the input audio
    device from a WebUI, such as the OS Audio Settings page. Not recorded when
    the audio device is programmatically changed.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.InputGainSetTo" units="%"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the input gain set by the user from a WebUI, such as the OS Audio
    Settings page. To account for changes via a UI slider, the histogram is only
    recorded after the user stops changing the gain for a predetermined amount
    of seconds.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.InputMuteStateChange"
    enum="AudioMuteButtonAction" expires_after="2024-12-30">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user changes the input audio mute state from a WebUI, such
    as the OS Audio Settings page.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.NoiseCancellationEnabled"
    enum="BooleanEnabled" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user enables/disables noise cancellation from a WebUI,
    such as the OS Audio Settings page.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.OutputDeviceTypeChangedTo"
    enum="AudioDeviceType" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the type of device selected when the user changes the output audio
    device from a WebUI, such as the OS Audio Settings page. Not recorded when
    the audio device is programmatically changed.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.OutputMuteStateChange"
    enum="AudioMuteButtonAction" expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Recorded when the user changes the output audio mute state from a WebUI,
    such as the OS Audio Settings page.
  </summary>
</histogram>

<histogram name="ChromeOS.CrosAudioConfig.OutputVolumeSetTo" units="%"
    expires_after="2025-01-05">
  <owner>[email protected]</owner>
  <owner>[email protected]</owner>
  <summary>
    Records the output volume set by the user from a WebUI, such as the OS Audio
    Settings page. To account for changes via a UI slider, the histogram is only
    recorded after the user stops changing the volume for a predetermined amount
    of seconds.
  </summary>
</histogram>

</histograms>

</histogram-configuration>