<!--
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 Chrome OS 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

Prefer owners from the OWNERS file in this directory. If you need a metrics
reviewer, please send CLs to chromium-metrics-reviews@google.com 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>

<variants name="AllCertProvisioningProtocolVersions">
<!-- The variants are versions of the client certificate provisioning protocol.
They are used for the ChromeOS.CertProvisioning.* histograms to distinguish
between provisioning a client certificate using the "Static" and the "Dynamic"
  protocol versions. -->

  <variant name="" summary="Static"/>
  <variant name=".Dynamic" summary="Dynamic"/>
</variants>

<variants name="AllCertProvisioningScopes">
<!-- The variants are scopes for which a client certificate can be provisioned.
They are used for the ChromeOS.CertProvisioning.* histograms to distinguish
  between provisioning a device-wide and a user-specific client certificate. -->

  <variant name="Device"/>
  <variant name="User"/>
</variants>

<variants name="FeaturesLoggingUsageEvents">
<!-- The variants are names of Chrome OS features. These are used for the
  ChromeOS.FeatureUsage.* histograms to record different events related to the
  feature -->

  <variant name="ClamshellLauncher" summary="app launcher in clamshell mode">
    <owner>jamescook@chromium.org</owner>
    <owner>tbarzic@chromium.org</owner>
    <owner>chromeos-launcher@google.com</owner>
  </variant>
  <variant name="DiagnosticsUi" summary="CROS Diagnostics Application">
    <owner>byronlee@google.com</owner>
    <owner>lt-diagnostics@google.com</owner>
  </variant>
  <variant name="EnterpriseESim" summary="enterprise eSIM">
    <owner>chadduffin@chromium.org</owner>
    <owner>cros-device-enablement@google.com</owner>
  </variant>
  <variant name="ESim" summary="eSIM">
    <owner>hsuregan@chromium.org</owner>
    <owner>cros-device-enablement@google.com</owner>
  </variant>
  <variant name="FakeKeyboardHeuristic" summary="Fake Keyboard Heuristic">
    <owner>wmahon@chromium.org</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="FastPair" summary="Fast Pair">
    <owner>jackshira@google.com</owner>
    <owner>julietlevesque@google.com</owner>
    <owner>chromeos-cross-device-eng@google.com</owner>
  </variant>
  <variant name="Fingerprint" summary="fingerprint">
    <owner>tomhughes@chromium.org</owner>
    <owner>cros-oac@google.com</owner>
    <owner>chromeos-fingerprint@google.com</owner>
  </variant>
  <variant name="LockOnSuspend" summary="lock screen on device suspend">
    <owner>antrim@chromium.org</owner>
    <owner>cros-oac@google.com</owner>
  </variant>
  <variant name="NearbyShare" summary="Nearby Share">
    <owner>hansenmichael@google.com</owner>
    <owner>nearby-share-chromeos-eng@google.com</owner>
  </variant>
  <variant name="NearbyShareBackgroundScanning"
      summary="Background scanning for Nearby Share to detect and notify the
               user of devices nearby that are attempting to share">
    <owner>hansenmichael@google.com</owner>
    <owner>nearby-share-chromeos-eng@google.com</owner>
  </variant>
  <variant name="NumberpadDynamicActivations"
      summary="Turning on number pad mode for a dynamic numberpad.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadDynamicCancellations"
      summary="Turning off number pad mode for a dynamic numberpad, without
               having used a number-pad key.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadDynamicEnterKeystrokes"
      summary="Pressing enter on dynamic number pad.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadDynamicNonEnterKeystrokes"
      summary="Pressing key other than enter on dynamic number pad.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadExternalEnterKeystrokes"
      summary="Pressing number pad enter on external keyboard.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadExternalNonEnterKeystrokes"
      summary="Pressing number pad key other than enter on external keyboard.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadInternalEnterKeystrokes"
      summary="Pressing enter on number pad on internal keyboard.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="NumberpadInternalNonEnterKeystrokes"
      summary="Pressing number pad key other than enter on internal keyboard.">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="Picker" summary="Picker">
    <owner>shend@chromium.org</owner>
    <owner>e14s-eng@google.com</owner>
  </variant>
  <variant name="SmartLock" summary="Smart Lock">
    <owner>hansberry@chromium.org</owner>
    <owner>chromeos-cross-device-eng@google.com</owner>
  </variant>
  <variant name="StylusDetachedFromDockSession"
      summary="Time spent from stylus being undocked, to being re-docked">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="StylusDetachedFromGarageOrDockSession"
      summary="Time spent while either out of garage or un-docked">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="StylusDetachedFromGarageSession"
      summary="Time spent from stylus being removed from garage, to being
               replaced into garage">
    <owner>kenalba@google.com</owner>
    <owner>chromeos-tango@google.com</owner>
  </variant>
  <variant name="TabletLauncher" summary="app launcher in tablet mode">
    <owner>jamescook@chromium.org</owner>
    <owner>tbarzic@chromium.org</owner>
    <owner>chromeos-launcher@google.com</owner>
  </variant>
</variants>

<variants name="FirmwareUpdateUiDeviceRequestId">
<!-- These variants are the possible values for a DeviceRequestId -->

  <variant name="DoNotPowerOff"/>
  <variant name="PressUnlock"/>
  <variant name="RemoveReplug"/>
  <variant name="RemoveUSBCable"/>
  <variant name="ReplugInstall"/>
  <variant name="Unknown"/>
</variants>

<variants name="InputDeviceSettingsDeviceTypes">
<!-- The variants are the possible device types used with input device settings. -->

  <variant name="Keyboard"/>
  <variant name="Mouse"/>
  <variant name="PointingStick"/>
  <variant name="Touchpad"/>
</variants>

<variants name="InputDeviceSettingsUpdatedTimePeriods">
<!-- The variants are the possible time periods that the settings updated metrics will be published within. -->

  <variant name="OneDay"/>
  <variant name="OneHour"/>
  <variant name="OneWeek"/>
  <variant name="ThreeDays"/>
  <variant name="ThreeHours"/>
</variants>

<variants name="JpegProcessMethod">
  <variant name="Hardware" summary=""/>
  <variant name="Software" summary=""/>
</variants>

<variants name="JpegProcessType">
  <variant name="Decode" summary=""/>
  <variant name="Encode" summary=""/>
</variants>

<variants name="MachineStatistics">
<!-- The variants are the possible names of machine statistics loaded by `StatisticsProvider`.
They are defined as constants in chromeos/ash/components/system/statistics_provider.h
and mapped to the variant by `StatisticNameToMachineStatisticVariant()` -->

  <variant name="ActivateDate"/>
  <variant name="AttestedDeviceId"/>
  <variant name="BlockDevmode"/>
  <variant name="CheckEnrollment"/>
  <variant name="CustomizationId"/>
  <variant name="DevswBoot"/>
  <variant name="DisplayProfiles"/>
  <variant name="DockMac"/>
  <variant name="EthernetMac"/>
  <variant name="FlexId"/>
  <variant name="FlexProductName"/>
  <variant name="FlexProductVersion"/>
  <variant name="FlexSysVendor"/>
  <variant name="GbindAttribute"/>
  <variant name="HardwareClass"/>
  <variant name="InitialLocale"/>
  <variant name="InitialTimezone"/>
  <variant name="IsCrosDebug"/>
  <variant name="IsVm"/>
  <variant name="KeyboardLayout"/>
  <variant name="KeyboardMechanicalLayout"/>
  <variant name="LegacySerialNumber"/>
  <variant name="MainfwType"/>
  <variant name="MfgDate"/>
  <variant name="ModelName"/>
  <variant name="OemCanExitEnrollment"/>
  <variant name="OemDeviceRequisition"/>
  <variant name="OemEnterpriseManaged"/>
  <variant name="OemKeyboardDrivenOobe"/>
  <variant name="OemName"/>
  <variant name="Region"/>
  <variant name="RlzBrandCode"/>
  <variant name="RlzEmbargoEndDate"/>
  <variant name="SerialNumber"/>
  <variant name="ShouldSendRlzPing"/>
  <variant name="UbindAttribute"/>
  <variant name="WpswCur"/>
</variants>

<histogram name="ChromeOS.AnomalousProcCount.AttemptedMemfdExec"
    units="processes" expires_after="2027-08-09">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the number of unique processes on the system that attempted to
    execute a memory file descriptor.

    Processes are scanned for this anomaly every thirty seconds, but the metric
    is recorded every two hours on ChromeOS devices. If the metric is recorded
    successfully, the process count is reset. So the metric represents the
    number of anomalous processes found in a two-hour scan window or since the
    last successful recording event.
  </summary>
</histogram>

<histogram name="ChromeOS.AnomalousProcCount.ForbiddenIntersection.{Category}"
    units="processes" expires_after="2027-08-09">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the number of {Category} processes on the system that do not have
    the minimum sandboxing measures applied in order to avoid the forbidden
    intersection:
    https://chromium.googlesource.com/chromiumos/docs/+/HEAD/sandboxing.md#The-forbidden-intersection
    As a caveat, SELinux is not considered as only an enforcing domain provides
    meaningful coverage.

    Processes are scanned for this anomaly every thirty seconds, but the metric
    is only sent once per boot and only in the logged-in state.
  </summary>
  <token key="Category">
    <variant name="Comprehensive"/>
    <variant name="Filtered"/>
  </token>
</histogram>

<histogram name="ChromeOS.Apps.IntentPickerDestinationPlatform"
    enum="ArcIntentHandlerDestinationPlatform" expires_after="2026-09-14">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records the app platform shown as the result of link intent handling.
    Recorded when the user makes a choice in the Intent Picker dialog, and when
    the result of a previous user preference is applied during a link click.
  </summary>
</histogram>

<histogram name="ChromeOS.Attestation.AttestationFlowStatus"
    enum="AttestationFlowStatus" expires_after="2025-05-11">
  <owner>chingkang@google.com</owner>
  <owner>cros-hwsec+umas@chromium.org</owner>
  <summary>
    Records the status of attestation flow. The value represents 6 flags in 6
    rightmost bits; starting from more significant bits they mean: 1. Has proxy.
    2. Is System proxy active. 3. Run the default flow. 4. The default flow
    succeeds. 5. Run the fallback flow. 6. The fallback flow succeeds.
  </summary>
</histogram>

<histogram name="ChromeOS.Attestation.GetCertificateStatus"
    enum="AttestationStatus" expires_after="2025-04-13">
  <owner>chingkang@google.com</owner>
  <owner>cros-hwsec+umas@chromium.org</owner>
  <summary>
    Records the status of `AttesttionClient::GetCertificate()` called by
    `AttestationFlowIntegrated`. Warning: this histogram was expired from Oct 8,
    2022 to June 26, 2023; data may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.AutoFraming.AverageDetectionLatency"
    units="microseconds" expires_after="2027-02-10">
  <owner>kamesan@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average latency in running the detector during an Auto Framing
    enabled camera session. Emitted when the camera session is closed.

    This metric is reported on ChromeOS devices with Auto Framing enabled.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.AutoFraming.DetectionHitRate" units="%"
    expires_after="2027-02-10">
  <owner>kamesan@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the rate that the detector successfully detects a subject in the
    scene during an Auto Framing enabled camera session. Emitted when the camera
    session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.AutoFraming.EnabledCount" units="times"
    expires_after="2027-02-10">
  <owner>kamesan@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of times that Auto Framing is toggled from off to on by
    the user during a camera session. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.AutoFraming.EnabledTime" units="%"
    expires_after="2027-02-10">
  <owner>kamesan@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the percentage of time that Auto Framing is turned on during a
    camera session. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.AutoFraming.Error" enum="AutoFramingError"
    expires_after="2027-02-10">
  <owner>kamesan@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records errors in Auto Framing that can break camera functionality or cause
    frame drops. Emitted at most once for each error when the camera session is
    closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.AutoFraming.MedianZoomRatio" units="tenths"
    expires_after="2027-02-10">
  <owner>kamesan@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the median of sampled zoom ratios when Auto Framing zooms in camera
    frames to the subject during a camera session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.ConcurrentAccess" enum="Boolean"
    expires_after="2027-02-10">
  <owner>wtlee@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records when attempting to access a camera, whether Ash and Lacros are
    accessing the same camera or not.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Camera.ConfigureStreams.Output.Resolution.{StreamFormat}"
    units="pixels" expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the resolution of output stream that is configured by Chrome OS
    camera service. {StreamFormat}
  </summary>
  <token key="StreamFormat">
    <variant name="BGRA_8888" summary="Format HAL_PIXEL_FORMAT_BGRA_8888"/>
    <variant name="BLOB" summary="Format HAL_PIXEL_FORMAT_BLOB"/>
    <variant name="IMPLEMENTATION_DEFINED"
        summary="Format HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED"/>
    <variant name="RGBA_8888" summary="Format HAL_PIXEL_FORMAT_RGBA_8888"/>
    <variant name="RGBX_8888" summary="Format HAL_PIXEL_FORMAT_RGBX_8888"/>
    <variant name="YCbCr_420_888"
        summary="Format HAL_PIXEL_FORMAT_YCbCr_420_888"/>
    <variant name="YCbCr_422_I" summary="Format HAL_PIXEL_FORMAT_YCbCr_422_I"/>
    <variant name="YCrCb_420_SP"
        summary="Format HAL_PIXEL_FORMAT_YCrCb_420_SP"/>
    <variant name="YV12" summary="Format HAL_PIXEL_FORMAT_YV12"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.ConfigureStreamsLatency" units="microseconds"
    expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the process time of ConfigureStreams() method in Chrome OS camera
    service.

    This metric is reported for all users and will not cause abnormal
    distribution since the metric is Chrome OS specified.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.Error" enum="CameraEffectError"
    expires_after="2027-02-10">
  <owner>skyostil@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the first error encountered in a camera which uses effects.

    This metric is emitting once every hour if the camera session exceeds an
    hour, and once at the end of every session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.NpuToGpuFallbackEvent" enum="Boolean"
    expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records events when NPU was not ready in NPU enabled devices in
    EffectsStreamManipulator.

    This metric is emitting once at the end of every session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.NumConcurrentProcessedStreams"
    units="count" expires_after="2027-02-10">
  <owner>skyostil@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number streams that required rendering effects in a camera
    session which uses effects.

    This metric is emitting once every hour if the camera session exceeds an
    hour, and once at the end of every session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.NumConcurrentStreams" units="count"
    expires_after="2027-02-10">
  <owner>skyostil@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number streams in a camera session which uses effects.

    This metric is emitting once every hour if the camera session exceeds an
    hour, and once at the end of every session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.NumFramesDroppedAtStart" units="count"
    expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of frames dropped before effects pipeline was initialized
    in EffectsStreamManipulator.

    This metric is emitting once at the end of every session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.NumStillShotsTaken" units="captures"
    expires_after="2027-02-10">
  <owner>skyostil@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of still capture shots taken in a camera session which
    uses effects.

    This metric is emitting once every hour if the camera session exceeds an
    hour, and once at the end of every session.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Effects.SelectedEffect"
    enum="CameraEffectType" expires_after="2027-02-10">
  <owner>jmpollock@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records a user enabling a camera effect. Emitted at most once per camera
    effect chosen when the camera session is closed, or every hour if the
    session duration exceeds an hour (and then at the end of the session).
  </summary>
</histogram>

<histogram
    name="ChromeOS.Camera.Effects.{EffectType}.{StreamType}.AvgProcessedFrameInterval"
    units="microseconds" expires_after="2027-02-10">
  <owner>jmpollock@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records average wall time interval between successfully processed frames
    within the EffectsStreamManipulator for the different effect + stream type
    combinations.

    This metric is reported on ChromeOS devices with an effect applied that does
    not encounter an error during processing. It is emitted at the close of each
    camera session, or every hour if the session duration exceeds an hour (and
    then at the end of the session).
  </summary>
  <token key="EffectType">
    <variant name="Blur"
        summary="Average processed frame rate of the Blur effect"/>
    <variant name="BlurAndRelight"
        summary="Average processed frame rate of the Blur + Relight effect"/>
    <variant name="Relight"
        summary="Average processed frame rate of the Relight effect"/>
  </token>
  <token key="StreamType">
    <variant name="BLOB" summary="Processing time for BLOB (JPEG) streams"/>
    <variant name="YUV" summary="Processing time for YUV streams"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Camera.Effects.{EffectType}.{StreamType}.AvgProcessingLatency"
    units="microseconds" expires_after="2027-02-10">
  <owner>jmpollock@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the wall time taken to execute the EffectsStreamManipulator
    ProcessCaptureResult method for the different effect + stream type
    combinations. Calculated as the average processing time / latency over the
    camera session.

    This metric is reported on ChromeOS devices with an effect applied that does
    not encounter an error during processing. It is emitted at the close of each
    camera session, or every hour if the session duration exceeds an hour (and
    then at the end of the session).
  </summary>
  <token key="EffectType">
    <variant name="Blur"
        summary="EffectsStreamManipulator processing time of the Blur effect"/>
    <variant name="BlurAndRelight"
        summary="EffectsStreamManipulator processing time of the Blur +
                 Relight effect"/>
    <variant name="Relight"
        summary="EffectsStreamManipulator processing time of the Relight
                 effect"/>
  </token>
  <token key="StreamType">
    <variant name="BLOB" summary="Processing time for BLOB (JPEG) streams"/>
    <variant name="YUV" summary="Processing time for YUV streams"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.Effects.{StreamType}.MaxStreamSize"
    units="pixels" expires_after="2027-02-10">
  <owner>skyostil@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of pixels in one frame of the largest stream in a camera
    session which uses effects.

    This metric is emitting once every hour if the camera session exceeds an
    hour, and once at the end of every session.
  </summary>
  <token key="StreamType">
    <variant name="BLOB" summary="Maximum stream size for BLOB (JPEG) streams"/>
    <variant name="YUV" summary="Maximum stream size for YUV streams"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.Effects.{StreamType}.MinStreamSize"
    units="pixels" expires_after="2027-02-10">
  <owner>skyostil@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of pixels in one frame of the smallest stream in a camera
    session which uses effects.

    This metric is emitting once every hour if the camera session exceeds an
    hour, and once at the end of every session.
  </summary>
  <token key="StreamType">
    <variant name="BLOB" summary="Minimum stream size for BLOB (JPEG) streams"/>
    <variant name="YUV" summary="Minimum stream size for YUV streams"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.ErrorType" enum="ChromeOSCameraErrorType"
    expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the type of the error which triggers the Notify() method in Chrome
    OS camera service.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.FaceAutoExposure.FunctionStatus"
    enum="ChromeOSCameraFaceAutoExposureFunctionStatus"
    expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records face auto exposure function status of the Chrome OS device. The
    metric is reported when the camera is detected.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.FaceAutoExposure.MaxNumDetectedFaces"
    units="faces" expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records max number of detected faces of the camera session in Chrome OS
    camera service. The metric is reported when the camera is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.Facing" enum="ChromeOSCameraFacing"
    expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the camera facing of the camera session in Chrome OS camera service.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.FrameDropRate.{FeatureType}" units="%"
    expires_after="2027-02-10">
  <owner>julianachang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the frame drop rate for each feature during a camera session.
    Emitted when the camera session is closed.
  </summary>
  <token key="FeatureType">
    <variant name="AutoFraming" summary="Frame drop rate with AutoFraming on"/>
    <variant name="Effects" summary="Frame drop rate with VC Effects on"/>
    <variant name="HDRNet" summary="Frame drop rate with HDRNet on"/>
    <variant name="NoEffects" summary="Frame drop rate with no features on"/>
    <variant name="Overall" summary="Frame drop rate for overall pipeline"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.GcamAutoExposure.AverageConvergenceLatency"
    units="frames" expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average auto exposure convergence latency in frame count
    throughout a camera session that runs Gcam auto exposure. Emitted when the
    camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.GcamAutoExposure.AverageHdrRatio"
    units="ratio" expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average HDR ratio throughout a camera session that runs Gcam
    auto exposure. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.GcamAutoExposure.AverageTet" units="TET"
    expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average total exposure time (TET) throughout a camera session
    that runs Gcam auto exposure. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.AverageLatency.{ProcessingType}"
    units="microseconds" expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average CPU latency in running a given type of processing
    throughout a HDRnet camera session. Emitted when the camera session is
    closed.

    This metric is reported on all ChromeOS devices with HDRnet enabled.
  </summary>
  <token key="ProcessingType">
    <variant name="Postprocessing"
        summary="Post-processing of HDRnet RGB output to final YUV output(s)"/>
    <variant name="Preprocessing"
        summary="Pre-processing of input YUV into linear RGB domain"/>
    <variant name="RgbPipeline"
        summary="Main HDRnet inferencing and rendering"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.Error" enum="HdrnetError"
    expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records whether there's an error that can compromise the HDRnet feature,
    either causing frame drops or stops the pipeline from running completely,
    throughout a HDRnet camera session. Emitted when the camera session is
    closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.MaxOutputBuffersRendered"
    units="buffers" expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the maximum number of output buffers a HDRnet stream produces
    (greater than 1 means there are multiple streams with the same aspect ratio)
    throughtout a HDRnet camera session. Emitted when the camera session is
    closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.MaxStreamSize.{StreamType}"
    units="pixels" expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the maximum size (in width * height pixels) of the HDRnet stream
    configured for a given output in a HDRnet camera session. Emitted when the
    camera session is closed.
  </summary>
  <token key="StreamType">
    <variant name="BLOB" summary="HDRnet stream for BLOB output"/>
    <variant name="YUV" summary="HDRnet stream for YUV output"/>
  </token>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.NumConcurrentStreams" units="streams"
    expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of concurrent HDRnet streams in a HDRnet camera session.
    Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.NumStillShotsTaken" units="captures"
    expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of HDRnet-rendered still capture shots taken in a HDRnet
    camera session. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.HDRnet.StreamConfiguration"
    enum="HdrnetStreamConfiguration" expires_after="2027-02-10">
  <owner>jcliang@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the stream configuration including the number of streams, the type
    of streams, and if the streams are of the same aspect ratio in a HDRnet
    camera session. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Camera.Jpeg.Latency.{JpegProcessMethod}.{JpegProcessType}"
    units="microseconds" expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the process time of the JDA (Jpeg Decode Accelerator) or JEA (Jpeg
    Encode Accelerator) run on Chrome OS camera service. There are suffixes that
    record the runner method (hardware/software), the runner type
    (decode/encode).

    This metric is reported for all users and will not cause abnormal
    distribution since the metric is Chrome OS specified. {JpegProcessMethod}
    {JpegProcessType}
  </summary>
</histogram>

<histogram
    name="ChromeOS.Camera.Jpeg.Resolution.{JpegProcessMethod}.{JpegProcessType}"
    units="pixels" expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the resolution of the image that JDA/JEA process by Chrome OS camera
    service. The resolution represents by the total pixels contained in the
    image. There are suffixes that record the runner method (hardware/software),
    the runner type (decode/encode). {JpegProcessMethod} {JpegProcessType}
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.MlCore.DlcBeginInstallDlcServiceError"
    enum="DlcClientDlcErrorCode" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    The detailed error code received from DLC Service while trying to request to
    install the ML Core DLC by cros-camera.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.MlCore.DlcBeginInstallResult"
    enum="DlcClientDlcBeginInstallResult" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Result of an attempt to request DLC Service to begin installation of the ML
    Core DLC by cros-camera. See the related histogram
    .DlcBeginInstallDlcServiceError for detailed error codes returned.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.MlCore.DlcFinalInstallDlcServiceError"
    enum="DlcClientDlcErrorCode" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    The final detailed error code received from DLC Service after the completion
    of a request to install the ML Core DLC by cros-camera.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.MlCore.DlcFinalInstallResult"
    enum="DlcClientDlcFinalInstallResult" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Final result of an attempt to install the ML Core DLC by cros-camera. See
    the related histogram .DlcFinalInstallDlcServiceError for detailed error
    codes returned from DLC Service.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.MlCore.DlcInstallAttemptCount"
    units="attempts" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Indicates at least n attempts were made to install the ML Core DLC by
    cros-camera. Note that the buckets are cumulative: If e.g. 3 attempts are
    made, then the &quot;1&quot;, &quot;2&quot;, and &quot;3&quot; buckets will
    all be incremented.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.ModuleID" enum="PopularCamPeriphModuleID"
    expires_after="2027-02-10">
  <owner>wtlee@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records a camera's module id in a format of integer when a camera is open.
    If it is one of the top 20 popular camera peripherals, it records the module
    id and if not it records zero.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.OpenDeviceClientType"
    enum="ChromeOSCameraClientType" expires_after="2027-02-10">
  <owner>wtlee@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records which client type (e.g., Chrome, Android) is opening a camera
    device.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.OpenDeviceError" enum="Boolean"
    expires_after="2027-02-10">
  <owner>wtlee@chromium.org</owner>
  <owner>chromeos-camera-app-eng@google.com</owner>
  <summary>
    Records when a camera fails to open and the value indicates whether the
    camera is currently occupied.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.OpenDeviceLatency" units="microseconds"
    expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the process time of OpenDevice() method in Chrome OS camera service.

    This metric is reported for all users and will not cause abnormal
    distribution since the metric is Chrome OS specified.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.PortraitMode.AverageLatency"
    units="microseconds" expires_after="2027-02-10">
  <owner>julianachang@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average processing latency to execute the
    PortraitModeStreamManipulator ProcessCaptureResult method. Emitted when the
    camera session is closed.

    This metric is reported on ChromeOS devices with Portrait Mode enabled.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.PortraitMode.Error" enum="PortraitModeError"
    expires_after="2027-02-10">
  <owner>julianachang@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records whether there's an error that can compromise the Portrait Mode
    feature. Emitted at most once for each error when the camera session is
    closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.PortraitMode.NumStillShotsTaken"
    units="captures" expires_after="2027-02-10">
  <owner>julianachang@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of still capture shots taken in a camera session with
    Portrait Mode enabled. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SessionDuration" units="seconds"
    expires_after="2027-02-10">
  <owner>beckerh@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>Records the session duration in Chrome OS camera service.</summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.AverageLatency" units="microseconds"
    expires_after="2027-02-10">
  <owner>julianachang@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the average processing latency to upsample the cropped frame.
    Emitted when the camera session is closed.

    This metric is reported on ChromeOS devices with Super Resolution feature
    enabled (high-resolution clock required for microsecond granularity).
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.DlcBeginInstallDlcServiceError"
    enum="DlcClientDlcErrorCode" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    The detailed error code received from DLC Service while trying to request to
    install the super res DLC by cros-camera.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.DlcBeginInstallResult"
    enum="DlcClientDlcBeginInstallResult" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Result of an attempt to request DLC Service to begin installation of the
    super res DLC by cros-camera. See the related histogram
    .DlcBeginInstallDlcServiceError for detailed error codes returned.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.DlcFinalInstallDlcServiceError"
    enum="DlcClientDlcErrorCode" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    The final detailed error code received from DLC Service after the completion
    of a request to install the super res DLC by cros-camera.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.DlcFinalInstallResult"
    enum="DlcClientDlcFinalInstallResult" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Final result of an attempt to install the super res DLC by cros-camera. See
    the related histogram .DlcFinalInstallDlcServiceError for detailed error
    codes returned from DLC Service.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.DlcInstallAttemptCount"
    units="attempts" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Indicates at least n attempts were made to install the super res DLC by
    cros-camera. Note that the buckets are cumulative: If e.g. 3 attempts are
    made, then the &quot;1&quot;, &quot;2&quot;, and &quot;3&quot; buckets will
    all be incremented.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.Error" enum="SuperResError"
    expires_after="2027-02-10">
  <owner>julianachang@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records whether there's an error that can compromise the Super Resolution
    feature. Emitted at most once for each error when the camera session is
    closed.
  </summary>
</histogram>

<histogram name="ChromeOS.Camera.SuperRes.NumStillShotsTaken" units="captures"
    expires_after="2027-02-10">
  <owner>julianachang@google.com</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Records the number of Super Resolution still capture shots taken in a camera
    session. Emitted when the camera session is closed.
  </summary>
</histogram>

<histogram
    name="ChromeOS.CameraDiag.BlurDetector.DlcBeginInstallDlcServiceError"
    enum="DlcClientDlcErrorCode" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    The detailed error code received from DLC Service while trying to request to
    install the blur detector DLC by cros-camera-diagnostics.
  </summary>
</histogram>

<histogram name="ChromeOS.CameraDiag.BlurDetector.DlcBeginInstallResult"
    enum="DlcClientDlcBeginInstallResult" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Result of an attempt to request DLC Service to begin installation of the
    blur detector DLC by cros-camera-diagnostics. See the related histogram
    .DlcBeginInstallDlcServiceError for detailed error codes returned.
  </summary>
</histogram>

<histogram
    name="ChromeOS.CameraDiag.BlurDetector.DlcFinalInstallDlcServiceError"
    enum="DlcClientDlcErrorCode" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    The final detailed error code received from DLC Service after the completion
    of a request to install the blur detector DLC by cros-camera-diagnostics.
  </summary>
</histogram>

<histogram name="ChromeOS.CameraDiag.BlurDetector.DlcFinalInstallResult"
    enum="DlcClientDlcFinalInstallResult" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Final result of an attempt to install the blur detector DLC by
    cros-camera-diagnostics. See the related histogram
    .DlcFinalInstallDlcServiceError for detailed error codes returned from DLC
    Service.
  </summary>
</histogram>

<histogram name="ChromeOS.CameraDiag.BlurDetector.DlcInstallAttemptCount"
    units="attempts" expires_after="2027-02-10">
  <owner>imranziad@chromium.org</owner>
  <owner>chromeos-camera-eng@google.com</owner>
  <summary>
    Indicates at least n attempts were made to install the blur detector DLC by
    cros-camera-diagnostics. Note that the buckets are cumulative: If e.g. 3
    attempts are made, then the &quot;1&quot;, &quot;2&quot;, and &quot;3&quot;
    buckets will all be incremented.
  </summary>
</histogram>

<histogram name="ChromeOS.CertProvisioning.CertProvBackendError.Dynamic"
    enum="CertProvBackendError" expires_after="2027-02-01">
  <owner>miersh@google.com</owner>
  <owner>gschwarz@google.com</owner>
  <summary>
    The error returned by the certificate provisioning back-end after a
    provisioning request (for the dynamic flow).
  </summary>
</histogram>

<histogram name="ChromeOS.CertProvisioning.DmStatus.Dynamic"
    enum="EnterpriseDeviceManagementStatus" expires_after="2027-02-01">
  <owner>miersh@google.com</owner>
  <owner>gschwarz@google.com</owner>
  <summary>
    The Device Management Status returned by the DMServer after a certifciate
    provisioning request (for the dynamic flow).
  </summary>
</histogram>

<histogram
    name="ChromeOS.CertProvisioning.Event{CertProvisioningProtocolVersion}.{CertProvisioningScope}"
    enum="CertProvisioningEvent" expires_after="2027-02-01">
  <owner>miersh@google.com</owner>
  <owner>gschwarz@google.com</owner>
  <summary>
    Number of times each event is reached during the
    {CertProvisioningProtocolVersion} certificate provisioning flow with scope
    {CertProvisioningScope}.
  </summary>
  <token key="CertProvisioningScope" variants="AllCertProvisioningScopes"/>
  <token key="CertProvisioningProtocolVersion"
      variants="AllCertProvisioningProtocolVersions"/>
</histogram>

<histogram
    name="ChromeOS.CertProvisioning.Result{CertProvisioningProtocolVersion}.{CertProvisioningScope}"
    enum="CertProvisioningWorkerState" expires_after="2027-02-01">
  <owner>miersh@google.com</owner>
  <owner>gschwarz@google.com</owner>
  <summary>
    For final states (see the list in cert_provisioning::IsFinalState): number
    of times the {CertProvisioningProtocolVersion} certificate provisioning
    worker with scope {CertProvisioningScope} finished on every state. For other
    states: number of times the worker failed on every state.
  </summary>
  <token key="CertProvisioningScope" variants="AllCertProvisioningScopes"/>
  <token key="CertProvisioningProtocolVersion"
      variants="AllCertProvisioningProtocolVersions"/>
</histogram>

<histogram name="ChromeOS.ClassManagementEnabled" enum="ClassManagementEnabled"
    expires_after="2026-09-13">
  <owner>zifanzhang@google.com</owner>
  <owner>cros-client-wa@google.com</owner>
  <summary>
    Tracks the Class Management enabled status for users. Recorded when the user
    session starts.
  </summary>
</histogram>

<histogram name="ChromeOS.CountryCode.MissingVariationData"
    enum="ChromeOSFallbackCountry" expires_after="2026-11-29">
  <owner>cschlosser@chromium.org</owner>
  <owner>chromeos-privacyhub@google.com</owner>
  <owner>chrome-regionalcapabilities@google.com</owner>
  <summary>
    Records an enum when constructing the regional capabilities service during
    browser startup and there is no variations country available. On ChromeOS
    and Linux the country in which the current device is should be sent by the
    variation service. There are cases where CrOS devices don't receive these
    updates and then have to fallback onto other mechanisms. This histogram
    tracks if the fallback mechanism was triggered and whether it also failed to
    determine a country and if so, why.
  </summary>
</histogram>

<histogram name="ChromeOS.CountryCode.VPDRegionSplittingOutcome"
    enum="BooleanSuccess" expires_after="2026-09-27">
  <owner>cschlosser@chromium.org</owner>
  <owner>chromeos-privacyhub@google.com</owner>
  <owner>chrome-regionalcapabilities@google.com</owner>
  <summary>
    Records an enum when constructing the regional capabilities service during
    browser startup and the fallback country is being computed from the VPD
    region. This histogram tracks whether the 2-letters string obtained after
    splitting the region read from VPD ends up being recognized as a valid
    country code or not.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.CollectPerf"
    enum="ChromeOSProfileCollectionStatus" expires_after="2027-06-22">
  <owner>gmx@chromium.org</owner>
  <owner>aalexand@google.com</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    A count of successes and various failure modes related to collecting and
    processing profile data obtained via &quot;perf events&quot; on Chrome OS.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.CollectProcessTypes"
    enum="ChromeOSProcessTypeCollectionStatus" expires_after="2027-01-19">
  <owner>gmx@google.com</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    Record the collection status (success or failure) when the Chrome process
    and thread types are collected as part of the ChromeOS perf profile
    collection.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.JankinessTriggerStatus"
    enum="ChromeOSJankinessTriggerStatus" expires_after="2027-05-10">
  <owner>gmx@chromium.org</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    Records the status of collection attempts triggered by jankiness on Chrome
    OS.

    Warning: this histogram was expired from 08/30/2020 to 03/30/2022; data may
    be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.ParseCPUFrequencies"
    enum="ChromeOSParseCPUFrequencyStatus" expires_after="2026-12-20">
  <owner>gmx@chromium.org</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    A count of successes and various failure modes related to the parsing of
    logical CPU frequencies on Chrome OS. Recorded when the browser process
    starts.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.ParsePSICPU" enum="ChromeOSParsePSICPUStatus"
    expires_after="2027-08-10">
  <owner>shantuo@google.com</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    A count of successes and various failure modes related to the parsing of PSI
    CPU data on Chrome OS. Recorded after each perf collection.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.ParsePSIMemory" enum="ChromeOSParsePSIMemStatus"
    expires_after="2024-11-03">
  <owner>raging@google.com</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    A count of successes and various failure modes related to the parsing of PSI
    Memory data on Chrome OS. Recorded after each perf collection.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.RecordPerf" enum="ChromeOSProfileRecordStatus"
    expires_after="2027-01-14">
  <owner>shantuo@google.com</owner>
  <owner>gmx@google.com</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    A count of the various outcomes related to recording the profile data
    collected via &quot;perf events&quot; on Chrome OS. The histogram is
    recorded when system-wide CPU profiling finishes and the collected data is
    being saved to memory for later upload.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.UploadPerf" units="reports"
    expires_after="2026-10-20">
  <owner>gmx@chromium.org</owner>
  <owner>cwp-team@google.com</owner>
  <summary>
    Records the number of &quot;perf events&quot; reports included in an UMA
    upload on Chrome OS.
  </summary>
</histogram>

<histogram name="ChromeOS.CWP.{PPath}.{PType}" units="failures"
    expires_after="2027-07-31">
  <owner>raging@google.com</owner>
  <owner>chromeos-memory@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Reports pressure metrics every 10 seconds. The percentage of time {PPath} on
    {PType}. Expressed as a percentage with 2 decimal points (99.99%), but
    expressed as p*100, in an integer in the range (1-9999) meaning (00.01% to
    99.99%). Underflow value 0 means &quot;no pressure&quot; - 0%.
  </summary>
  <token key="PPath">
    <variant name="PSICpuPressure"
        summary="with CPU starvation as measured by /proc/pressure/cpu"/>
    <variant name="PSIIoPressure"
        summary="blocked on IO as measured by /proc/pressure/io"/>
    <variant name="PSIMemPressure"
        summary="blocked on page allocation as measured by
                 /proc/pressure/memory"/>
  </token>
  <token key="PType">
    <variant name="ArcFull" summary="all vCPUs in ARCVM"/>
    <variant name="ArcSome" summary="at least one vCPU in ARCVM"/>
    <variant name="Full" summary="all CPUs"/>
    <variant name="Some" summary="at least one CPU"/>
  </token>
</histogram>

<histogram name="ChromeOS.Debugd.Perf.GetBigFeedbackLogs.{SubTaskName}"
    units="ms" expires_after="2023-07-01">
  <owner>xiangdongkong@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the total time it takes for each sub task of
    LogTool::GetBigFeedbackLogs to complete. Recording happens on each call to
    debugd's GetBigFeedbackLogs.
  </summary>
  <token key="SubTaskName">
    <variant name="CreateConnectivityReport"/>
    <variant name="GetArcBugReport"/>
    <variant name="GetBluetoothBqr"/>
    <variant name="GetLsbReleaseInfo"/>
    <variant name="GetOsReleaseInfo"/>
    <variant name="GetPerfData"/>
    <variant name="kCommandLogs"/>
    <variant name="kCommandLogsVerbose"/>
    <variant name="kFeedbackLogs"/>
    <variant name="kVarLogFileLogs"/>
    <variant name="PopulateDictionaryValue"/>
    <variant name="SerializeLogsAsJSON"/>
  </token>
</histogram>

<histogram name="ChromeOS.Debugd.Perf.{FunctionName}" units="ms"
    expires_after="2027-08-09">
  <owner>enlightened@google.com</owner>
  <owner>chromeos-security-core@google.com</owner>
  <summary>
    Records the total time it takes for each call to LogTool::{FunctionName} to
    complete. Recording happens on each D-Bus call to debugd.
  </summary>
  <token key="FunctionName">
    <variant name="GetAllDebugLogs"/>
    <variant name="GetAllLogs"/>
    <variant name="GetBigFeedbackLogs"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.DiagnosticsUi.Error.CrosHealthdProbeError.{ProbeErrorSourceStruct}"
    enum="CrosDiagnosticsCrosHealthdProbeError" expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the ProbeError::ErrorType returned on request for
    {ProbeErrorSourceStruct}. Recorded on the event a request to cros_healthd
    probe service returns a ProbeError.
  </summary>
  <token key="ProbeErrorSourceStruct">
    <variant name="BatteryInfo"/>
    <variant name="CpuInfo"/>
    <variant name="MemoryInfo"/>
    <variant name="SystemInfo"/>
  </token>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.Error.{ErrorSource}"
    enum="CrosDiagnosticsDataError" expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records error type such as no data error, not a number error and expectation
    not met error when receiving system information including battery info,
    network info and system info. All errors are recorded.
  </summary>
  <token key="ErrorSource">
    <variant name="Battery"/>
    <variant name="Network"/>
    <variant name="System"/>
  </token>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.InitialScreen"
    units="CrosDiagnosticsNavigationView" expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records requested initial screen when opening the Diagnostics App.
  </summary>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.KeyboardTesterRoutineDuration"
    units="ms" expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the duration that the user spent in the Keyboard Tester. Emitted
    when the user closes the keyboard tester.
  </summary>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.MemoryRoutineDuration" units="s"
    expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the duration that the Memory Routine took to complete. Emitted when
    the routine completes successfully.
  </summary>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.OpenDuration" units="ms"
    expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the duration that the Diagnostics App is open. emitted when the app
    is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.RoutineCount" units="routines"
    expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the number of routines run while the Chrome OS Diagnostics App was
    open. Begins at zero each time the app is open and recorded each time the
    app is closed.
  </summary>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.{NavigationView}.OpenDuration"
    units="ms" expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the duration that the Diagnostics App is open for a given page view.
    Emitted when the active page changes or when the app is closed. Cumulatively
    adds up to the total duration recorded by
    &quot;ChromeOS.DiagnosticsUi.OpenDuration&quot; or
    &quot;ChromeOS.FeatureUsage.DiagnosticsUi.Usetime&quot;.
  </summary>
  <token key="NavigationView">
    <variant name="Connectivity" summary="chrome://diagnostics/?connectivity"/>
    <variant name="Input" summary="chrome://diagnostics/?input"/>
    <variant name="System"
        summary="chrome://diagnostics/?system or chrome://diagnostics"/>
  </token>
</histogram>

<histogram name="ChromeOS.DiagnosticsUi.{RoutineType}Result"
    enum="CrosDiagnosticsRoutineResult" expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>Records the result of the {RoutineType} Routine.</summary>
  <token key="RoutineType">
    <variant name="BatteryCharge"/>
    <variant name="BatteryDischarge"/>
    <variant name="CaptivePortal"/>
    <variant name="CpuCache"/>
    <variant name="CpuFloatingPoint"/>
    <variant name="CpuPrime"/>
    <variant name="CpuStress"/>
    <variant name="DnsLatency"/>
    <variant name="DnsResolution"/>
    <variant name="DnsResolverPresent"/>
    <variant name="GatewayCanBePinged"/>
    <variant name="GoogleServicesConnectivity"/>
    <variant name="HasSecureWiFiConnection"/>
    <variant name="HttpFirewall"/>
    <variant name="HttpsFirewall"/>
    <variant name="HttpsLatency"/>
    <variant name="LanConnectivity"/>
    <variant name="Memory"/>
    <variant name="SignalStrength"/>
  </token>
</histogram>

<histogram name="ChromeOS.Display.Startup.AmbientLightSensorEnabled"
    enum="BooleanEnabled" expires_after="2026-12-31">
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record the status of the display ambient light sensor at startup. Fires when
    the device boots up and the login screen is displayed.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Display.TimeUntilFirstBrightnessChange.{Time}.{BrightnessAction}Brightness.{PowerSource}Power"
    units="ms" expires_after="2027-03-27">
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    When a user {BrightnessAction} the brightness of the internal display for
    the first time since last reboot, records an event with the number of
    milliseconds since {Time}. Also records the power source ({PowerSource}, in
    this case) at the time of the event. Note: if a brightness change event
    happens more than 1 hour after startup/login, this histogram will not be
    recorded.
  </summary>
  <token key="Time">
    <variant name="AfterLogin"
        summary="the user logged in (recorded only after login)"/>
    <variant name="OnLoginScreen"
        summary="the login screen was first shown (recorded only on login
                 screen)"/>
  </token>
  <token key="BrightnessAction">
    <variant name="Decrease" summary="decreases"/>
    <variant name="Increase" summary="increases"/>
    <variant name="Set" summary="sets"/>
  </token>
  <token key="PowerSource">
    <variant name="Battery"/>
    <variant name="Charger"/>
  </token>
</histogram>

<histogram name="ChromeOS.FeatureUsage.{FeatureName}" enum="FeatureUsageEvent"
    expires_after="2027-02-07">
  <owner>antrim@chromium.org</owner>
  <owner>cros-oac@google.com</owner>
  <summary>
    Records device eligibility, enabled status, and success rate for the
    {FeatureName} feature. Different events are recorded at different times, as
    described in the enum labels.
  </summary>
  <token key="FeatureName" variants="FeaturesLoggingUsageEvents"/>
</histogram>

<histogram name="ChromeOS.FeatureUsage.{FeatureName}.Usetime" units="ms"
    expires_after="2026-11-29">
  <owner>antrim@chromium.org</owner>
  <owner>cros-oac@google.com</owner>
  <summary>
    Records the duration of time (ms) a given {FeatureName} feature was used.
  </summary>
  <token key="FeatureName" variants="FeaturesLoggingUsageEvents"/>
</histogram>

<histogram
    name="ChromeOS.FirmwareUpdateUi.InstallFailedWithDurationAfterRequest.RequestId{DeviceRequestId}"
    units="ms" expires_after="2027-01-28">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    When a firmware install fails while waiting for user action (i.e. a device
    request), record the duration of that request. This metric attempts to
    capture timeouts and other install failures that occur while waiting for a
    user to fulfill a request of type {DeviceRequestId}.
  </summary>
  <token key="DeviceRequestId" variants="FirmwareUpdateUiDeviceRequestId"/>
</histogram>

<histogram name="ChromeOS.FirmwareUpdateUi.InstallFailedWithStatus"
    enum="FirmwareUpdateFwupdStatus" expires_after="2027-01-28">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the most recent FwupdStatus when a firmware install fails for any
    reason.
  </summary>
</histogram>

<histogram name="ChromeOS.FirmwareUpdateUi.RequestReceived.Kind{Kind}"
    enum="FirmwareUpdateDeviceRequestID" expires_after="2027-01-28">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the ID and {Kind} of request received from fwupd. A request is an
    instruction for the user to perform some action necessary to continue the
    update. For example, a user may be asked to unplug and then replug their
    device. For each firmware update, there may be 0 or more requests received.
  </summary>
  <token key="Kind">
    <variant name="Immediate"/>
    <variant name="Post"/>
    <variant name="Unknown"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.FirmwareUpdateUi.RequestSucceededWithDuration.RequestId{DeviceRequestId}"
    units="ms" expires_after="2027-01-28">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the duration of a successful device request. Requests are considered
    successful when the installation continues after a request is received.
    Specifically, when the FwupdStatus changes from WaitingForUser to anything
    else, the request is considered successful.
  </summary>
  <token key="DeviceRequestId" variants="FirmwareUpdateUiDeviceRequestId"/>
</histogram>

<histogram name="ChromeOS.FirmwareUpdateUi.{Method}Result"
    enum="FirmwareUpdateMethodResult" expires_after="2027-01-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the result of a {Method} call. Recorded once per {Method} and the
    histogram is emitted either when the {Method} is completed or when a failure
    state is reached. An example failure state is if we're unable to create a
    directory correctly.

    Starting M126 this metric was changed to have a variant and be shared with
    the Install and RefreshRemote fwupd methods.
  </summary>
  <token key="Method">
    <variant name="Install"/>
    <variant name="RefreshRemote"/>
  </token>
</histogram>

<histogram name="ChromeOS.FirmwareUpdateUi.{Source}.DeviceCount"
    units="devices" expires_after="2027-01-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the total number of devices found. OnStartup is recorded when a user
    first logs in and OnRefresh is recorded for any subsequent request. The
    cases in which a subsequent request will be made are when the Firmware
    Update SWA is launched, when an install is completed, and when we detect
    that a device has been added or removed.

    Warning: this histogram was expired from 2023-01-01 to 2024-02-09; data may
    be missing.
  </summary>
  <token key="Source">
    <variant name="OnRefresh"/>
    <variant name="OnStartup"/>
  </token>
</histogram>

<histogram name="ChromeOS.FirmwareUpdateUi.{Source}.{Severity}UpdateCount"
    units="updates" expires_after="2027-01-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the total number of {Severity} firmware updates found for all of the
    peripherals currently connected. The histogram is emitted once we've
    received the list of updates (if any) for all peripherals. OnStartup is
    recorded when a user first logs in and OnRefresh is recorded for any
    subsequent request. The cases in which a subsequent request will be made are
    when the Firmware Update SWA is launched, when an install is completed, and
    when we detect that a device has been added or removed.

    Warning: this histogram was expired from 2023-01-01 to 2024-02-09; data may
    be missing.
  </summary>
  <token key="Source">
    <variant name="OnRefresh"/>
    <variant name="OnStartup"/>
  </token>
  <token key="Severity">
    <variant name="Critical"/>
    <variant name="NonCritical"/>
  </token>
</histogram>

<histogram name="ChromeOS.Gaia.CreateAccount.IsFirstUser" enum="Boolean"
    expires_after="2026-04-26">
  <owner>thv@google.com</owner>
  <owner>cros-growth@google.com</owner>
  <summary>
    Records the event of new Gaia account creation. Recorded during user sign in
    when Chrome receives account creation message from Gaia. True is recorded if
    the account creation happens on first login on the device. False is recorded
    if another account existed on the device.
  </summary>
</histogram>

<histogram name="ChromeOS.Gaia.Done.ElapsedTime" units="ms"
    expires_after="2027-06-21">
  <owner>bchikhaoui@google.com</owner>
  <owner>cros-oac@google.com</owner>
  <summary>
    Records the amount of time spent by user to complete GAIA login. Recorded
    during user sign-in when Chrome received all the signals from Gaia.
  </summary>
</histogram>

<histogram name="ChromeOS.Gaia.Done.Oobe.NewAccount" enum="BooleanNewAccount"
    expires_after="2026-07-05">
  <owner>thv@google.com</owner>
  <owner>cros-growth@google.com</owner>
  <summary>
    Records whether the user uses their existing account or create a new account
    during Oobe sign-in. Recorded during user sign-in in Oobe when ChromeOS
    receives all the signals from Gaia.
  </summary>
</histogram>

<histogram name="ChromeOS.Gaia.Message.{GaiaAuthFlow}.{MessageName}"
    enum="BooleanReceived" expires_after="2027-02-22">
  <owner>andreydav@google.com</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>
    Records whether or not {MessageName} was received during the {GaiaAuthFlow}
    authentication on the login screen. Recorded on the successful online
    authentication only.
  </summary>
  <token key="GaiaAuthFlow">
    <variant name="Gaia"/>
    <variant name="Saml"/>
  </token>
  <token key="MessageName">
    <variant name="CloseView"/>
    <variant name="UserInfo"/>
  </token>
</histogram>

<histogram name="ChromeOS.Gaia.PasswordFlow" enum="BooleanStartedCompleted"
    expires_after="2026-11-25">
  <owner>antrim@chromium.org</owner>
  <owner>cros-lurs@google.com</owner>
  <summary>
    Records events for the Gaia password flow. &quot;Started&quot; is recorded
    on each password entry on the Gaia page. &quot;Completed&quot; is recorded
    when Gaia authentication succeeds. Note: this is not recorded for SAML
    flows.

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

<histogram
    name="ChromeOS.Geolocation.CacheEviction.{NonParameterizedEvictionStrategy}.{PredictionToken}"
    units="meters" expires_after="2026-08-16">
  <owner>zauri@google.com</owner>
  <owner>chromeos-privacy-features-eng@google.com</owner>
  <summary>
    Records how {NonParameterizedEvictionStrategy} eviction strategy performs in
    the wild. Namely, reports the distance traveled between the location
    requests and emits it to either *PredictedYes or *PredictedNo, depending on
    the eviction strategy assessment. Events are recorded every time ChromeOS
    system service requests device location. This happens periodically every
    6-to-24 hours (e.g. Automatic Time Zone has 6 hours refresh timeout, while
    Night Light has 24h) and also on power events such as reboot and
    wake-up-from-sleep. Emitted events are from [0m, ~20'000km (half the earth
    circumference)] range, bucketed into [1m, 10m, 100m, 1km, 10km, 100km,
    1000km] ranges.
  </summary>
  <token key="NonParameterizedEvictionStrategy">
    <variant name="CommonCell"/>
    <variant name="CommonWifi"/>
    <variant name="CommonWifiAndCell"/>
  </token>
  <token key="PredictionToken">
    <variant name="PredictedNo"/>
    <variant name="PredictedYes"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Geolocation.CacheEviction.{ParameterizedEvictionStrategy}{SimilarityDegreeParameter}.{PredictionToken}"
    units="meters" expires_after="2026-10-11">
  <owner>zauri@google.com</owner>
  <owner>chromeos-privacy-features-eng@google.com</owner>
  <summary>
    Records how {ParameterizedEvictionStrategy} eviction strategy with
    {SimilarityDegreeParameter} performs in the wild. Namely, reports the
    distance traveled between the location requests and emits it to either
    *PredictedYes or *PredictedNo, depending on the eviction strategy
    assessment. Events are recorded every time ChromeOS system service requests
    device location. This happens periodically every 6-to-24 hours (e.g.
    Automatic Time Zone has 6 hours refresh timeout, while Night Light has 24h)
    and also on power events such as reboot and wake-up-from-sleep. Emitted
    events are from [0m, ~20'000km (half the earth circumference)] range,
    bucketed into [1m, 10m, 100m, 1km, 10km, 100km, 1'000km] ranges.
  </summary>
  <token key="ParameterizedEvictionStrategy">
    <variant name="CellularTolerance"/>
    <variant name="WifiTolerance"/>
  </token>
  <token key="SimilarityDegreeParameter">
    <variant name="Loose" summary="50% similarity threshold"/>
    <variant name="Moderate" summary="70% similarity threshold"/>
    <variant name="Strict" summary="90 similarity threshold"/>
  </token>
  <token key="PredictionToken">
    <variant name="PredictedNo"/>
    <variant name="PredictedYes"/>
  </token>
</histogram>

<histogram name="ChromeOS.HardwareVerifier.Report.IsCompliant" enum="Boolean"
    expires_after="2026-12-31">
  <owner>itspeter@chromium.org</owner>
  <owner>stimim@chromium.org</owner>
  <owner>chromeos-runtime-probe@google.com</owner>
  <summary>Aggregated result of hardware verifier check.</summary>
</histogram>

<histogram
    name="ChromeOS.HardwareVerifier.Report{HardwareVerifierSupportCategory}"
    enum="HardwareVerifierQualificationStatus" expires_after="2026-12-31">
  <owner>itspeter@chromium.org</owner>
  <owner>stimim@chromium.org</owner>
  <owner>chromeos-runtime-probe@google.com</owner>
  <summary>
    Qualification status of each component types. This entry is generated by
    hardware_verifier.conf at boot time. {HardwareVerifierSupportCategory}
  </summary>
  <token key="HardwareVerifierSupportCategory">
    <variant name=".audio_codec" summary=""/>
    <variant name=".battery" summary=""/>
    <variant name=".camera" summary=""/>
    <variant name=".cellular" summary=""/>
    <variant name=".display_panel" summary=""/>
    <variant name=".dram" summary=""/>
    <variant name=".ethernet" summary=""/>
    <variant name=".storage" summary=""/>
    <variant name=".stylus" summary=""/>
    <variant name=".touchpad" summary=""/>
    <variant name=".touchscreen" summary=""/>
    <variant name=".vpd_cached" summary=""/>
    <variant name=".wireless" summary=""/>
  </token>
</histogram>

<histogram name="ChromeOS.HardwareVerifier.TimeToFinish" units="ms"
    expires_after="2026-12-31">
  <owner>itspeter@chromium.org</owner>
  <owner>stimim@chromium.org</owner>
  <owner>chromeos-runtime-probe@google.com</owner>
  <summary>
    The amount of time it takes to finish one hardware verification run.
  </summary>
</histogram>

<histogram name="ChromeOS.HardwareVerifier.TimeToProbe" units="ms"
    expires_after="2026-12-31">
  <owner>itspeter@chromium.org</owner>
  <owner>stimim@chromium.org</owner>
  <owner>chromeos-runtime-probe@google.com</owner>
  <summary>The amount of time it takes to probe hardware components.</summary>
</histogram>

<histogram name="ChromeOS.HaTS.{Survey}" enum="HaTSSurvey"
    expires_after="2027-02-07">
  <owner>aalsum@chromium.org</owner>
  <owner>jackshira@google.com</owner>
  <owner>iby@chromium.org</owner>
  <owner>chromeos-data-eng@google.com</owner>
  <summary>
    Records the responses for HaTS questions, to be analyzed against other OS
    metrics like performance or number of crashes. Emitted during the lifecycle
    of a survey and when a user answers any question on a HaTS survey.
  </summary>
  <token key="Survey">
    <variant name="Audio"/>
    <variant name="AudioOutputProc"/>
    <variant name="BatteryLife"/>
    <variant name="BluetoothAudio"/>
    <variant name="CameraApp"/>
    <variant name="General"/>
    <variant name="GeneralCamera"/>
    <variant name="GeneralWithLocaleForTest"/>
    <variant name="Performance"/>
    <variant name="Peripherals"/>
    <variant name="SlowAndLaggyDeepDive"/>
    <variant name="Stability"/>
  </token>
</histogram>

<histogram name="ChromeOS.Healthd.DiagnosticResult.{Routine}"
    enum="CrosHealthdDiagnosticResult" expires_after="2026-12-31">
  <owner>weiluanwang@google.com</owner>
  <owner>dennyh@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the diagnostic results from healthd to analyze the usage and the
    pass rate. Emitted when a routine terminates.
  </summary>
  <token key="Routine">
    <variant name="AcPower"/>
    <variant name="ArcDnsResolution"/>
    <variant name="ArcHttp"/>
    <variant name="ArcPing"/>
    <variant name="AudioDriver"/>
    <variant name="AudioSetGain"/>
    <variant name="AudioSetVolume"/>
    <variant name="BatteryCapacity"/>
    <variant name="BatteryCharge"/>
    <variant name="BatteryDischarge"/>
    <variant name="BatteryHealth"/>
    <variant name="BluetoothDiscovery"/>
    <variant name="BluetoothPairing"/>
    <variant name="BluetoothPower"/>
    <variant name="BluetoothScanning"/>
    <variant name="CaptivePortal"/>
    <variant name="CpuCache"/>
    <variant name="CpuStress"/>
    <variant name="DiskRead"/>
    <variant name="DnsLatency"/>
    <variant name="DnsResolution"/>
    <variant name="DnsResolverPresent"/>
    <variant name="EmmcLifetime"/>
    <variant name="Fan"/>
    <variant name="Fingerprint"/>
    <variant name="FingerprintAlive"/>
    <variant name="FloatingPointAccuracy"/>
    <variant name="GatewayCanBePinged"/>
    <variant name="HasSecureWiFiConnection"/>
    <variant name="HttpFirewall"/>
    <variant name="HttpsFirewall"/>
    <variant name="HttpsLatency"/>
    <variant name="LanConnectivity"/>
    <variant name="LedLitUp"/>
    <variant name="Memory"/>
    <variant name="NvmeSelfTest"/>
    <variant name="NvmeWearLevel"/>
    <variant name="PowerButton"/>
    <variant name="PrimeSearch"/>
    <variant name="PrivacyScreen"/>
    <variant name="SensitiveSensor"/>
    <variant name="SignalStrength"/>
    <variant name="SmartctlCheck"/>
    <variant name="SmartctlCheckWithPercentageUsed"/>
    <variant name="UfsLifetime"/>
    <variant name="Urandom"/>
    <variant name="VideoConferencing"/>
  </token>
</histogram>

<histogram name="ChromeOS.Healthd.EventSubscription"
    enum="CrosHealthdEventCategory" expires_after="2026-12-31">
  <owner>weiluanwang@google.com</owner>
  <owner>dennyh@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the event subscription to healthd to analyze the usage. Emitted when
    the specific category is requested from a client.
  </summary>
</histogram>

<histogram name="ChromeOS.Healthd.RoutineCreation"
    enum="CrosHealthdRoutineCategory" expires_after="2026-12-31">
  <owner>weiluanwang@google.com</owner>
  <owner>dennyh@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the routine creation in healthd to analyze the usage. Emitted when
    the specific category is requested from a client.
  </summary>
</histogram>

<histogram name="ChromeOS.Healthd.TelemetryResult.{Category}"
    enum="CrosHealthdTelemetryResult" expires_after="2026-12-31">
  <owner>weiluanwang@google.com</owner>
  <owner>dennyh@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the telemetry results from healthd to analyze the usage and error
    rate. Emitted when the specific category is requested from a client.
  </summary>
  <token key="Category">
    <variant name="Audio"/>
    <variant name="AudioHardware"/>
    <variant name="Backlight"/>
    <variant name="Battery"/>
    <variant name="BlockDevice"/>
    <variant name="Bluetooth"/>
    <variant name="BootPerformance"/>
    <variant name="Bus"/>
    <variant name="Cpu"/>
    <variant name="Display"/>
    <variant name="Fan"/>
    <variant name="Graphics"/>
    <variant name="Input"/>
    <variant name="Memory"/>
    <variant name="Network"/>
    <variant name="NetworkInterface"/>
    <variant name="Sensor"/>
    <variant name="StatefulPartition"/>
    <variant name="System"/>
    <variant name="Timezone"/>
    <variant name="Tpm"/>
  </token>
</histogram>

<histogram name="ChromeOS.Heartd.Action" enum="HeartdActionType"
    expires_after="2026-12-31">
  <owner>byronlee@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    Records the action taken by the heartd service. When heartd starts up, we
    check if we reboot the device before, if yes, we send the metrics.
  </summary>
</histogram>

<!-- This histogram was expired for about three weeks from 2023-05-01 to
2023-05-25. -->

<histogram name="ChromeOS.IioService.SensorClientConcurrent" units="clients"
    expires_after="2025-05-01">
  <owner>chenghaoyang@chromium.org</owner>
  <owner>chromeos-sensors-eng@google.com</owner>
  <summary>
    Records the maximum number of concurrent sensor clients within an hour,
    which indicates how many apps are using sensors. Recorded once every hour.
    Might not be recorded for tail-end usage during a session.
  </summary>
</histogram>

<!-- This histogram was expired for about three weeks from 2023-05-01 to
2023-05-25. -->

<histogram name="ChromeOS.IioService.SensorObserver" units="observers"
    expires_after="2025-05-01">
  <owner>chenghaoyang@chromium.org</owner>
  <owner>chromeos-sensors-eng@google.com</owner>
  <summary>
    Records the maximum number of running observers within an hour to any
    sensor. It indicates how widely used the sensor samples are. Recorded once
    every hour. Might not be recorded for tail-end usage during a session.
  </summary>
</histogram>

<!-- This histogram was expired for about three weeks from 2023-05-01 to
2023-05-25. -->

<histogram name="ChromeOS.IioService.SensorObserverOpen" units="observers"
    expires_after="2025-05-01">
  <owner>chenghaoyang@chromium.org</owner>
  <owner>chromeos-sensors-eng@google.com</owner>
  <summary>
    Records the number of opened observer within an hour, which indicates how
    often sensors are enabled and disabled. Recorded once every hour. Might not
    be recorded for tail-end usage during a session.
  </summary>
</histogram>

<!-- This histogram was expired for about three weeks from 2023-05-01 to
2023-05-25. -->

<histogram name="ChromeOS.IioService.SensorUsage.{Frequency}Hz"
    enum="ChromeOSIioServiceSensorUsage" expires_after="2025-05-01">
  <owner>chenghaoyang@chromium.org</owner>
  <owner>chromeos-sensors-eng@google.com</owner>
  <summary>
    Records the usage of the sensor within an hour with at least {Frequency} Hz.
    Recorded once every hour. Might not be recorded for tail-end usage during a
    session.
  </summary>
  <token key="Frequency">
    <variant name="0"/>
    <variant name="10"/>
    <variant name="50"/>
    <variant name="100"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.AttachmentForm.{Type}" enum="AttachmentForm"
    expires_after="2026-08-23">
  <owner>wmahon@google.com</owner>
  <owner>chromeos-tango@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the device forms (Keyboard, Mouse, Pointing Stick, etc) of {Type}
    devices, when they are connected. As one physical device can be multiple
    forms at the same time (eg. a wireless dongle that identifies as both a
    keyboard and mouse), multiple entries can be generated from a single
    physical attachment event.
  </summary>
  <token key="Type">
    <variant name="Bluetooth"/>
    <variant name="Internal"/>
    <variant name="Unknown"/>
    <variant name="Usb"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.AttachmentType.{Form}" enum="AttachmentType"
    expires_after="2027-01-10">
  <owner>wmahon@google.com</owner>
  <owner>chromeos-tango@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the connection types (Internal, Bluetooth, Usb, etc) of {Form}
    devices, when they are connected. As one physical device can be multiple
    forms at the same time (eg. a wireless dongle that identifies as both a
    keyboard and mouse), multiple entries can be generated from a single
    physical attachment event.
  </summary>
  <token key="Form">
    <variant name="Gamepad"/>
    <variant name="Keyboard"/>
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
    <variant name="Stylus"/>
    <variant name="Touchpad"/>
    <variant name="Touchscreen"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.AutoRepeatUsage" units="key_event"
    expires_after="2027-06-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records a hash of a keycode + modifier keys pressed everytime a user event
    is repeated due to auto repeat. This also includes events which are
    suppressed by downstream system such as the diacritics menu or wayland.

    See `RecordAutoRepeatUsageMetric` in //ui/events/ash/event_rewriter_ash.cc
    for information on how to decode the values.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.ComboDeviceClassification"
    enum="ComboDeviceClassification" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>chromeos-tango@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the classification given by ChromeOS to a given keyboard/mouse combo
    device. These devices could either be keyboards, mice, or devices that
    actually are &quot;combo&quot; devices that have keyboards and mice on the
    same physical device.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.DoubleTap{ShiftLocation}ShiftDuration"
    units="ms" expires_after="2026-10-13">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the duration between two consecutive {ShiftLocation}Shift keypresses
    (within a 500ms window).
  </summary>
  <token key="ShiftLocation">
    <variant name="Left"/>
    <variant name="Right"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.EventRewriter.KeyRewriteLatency"
    units="microseconds" expires_after="2026-02-10">
  <owner>wangdanny@chromium.org</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the event rewriter latency metric every time a key is pressed.

    This metric is reported for all users and will not cause abnormal
    distribution since the metric is ChromeOS specified.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Inputs.InternalKeyboard.CustomTopRowLayout.NumberOfTopRowKeys"
    units="keys" expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of top-row keys on a user's internal keyboard, if their
    device's keyboard has a custom top-row layout.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Inputs.InternalKeyboard.CustomTopRowLayout.TopRowKeysPresent"
    enum="KeyboardTopRowActionKeys" expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the specific keys present on a user's internal keyboard, if their
    device's keyboard has a custom top-row layout.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.InternalKeyboard.NumberOfTopRowKeys"
    units="keys" expires_after="2026-09-01">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>wangdanny@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of top-row keys on a user's internal keyboard.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.InternalKeyboard.TopRowKeysPresent"
    enum="KeyboardTopRowActionKeys" expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>wangdanny@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the specific keys present on a user's internal keyboard.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.InternalKeyboard.TopRowLayoutType"
    enum="KeyboardTopRowLayoutWithExtraSublayout" expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cambickel@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the type of top-row keyboard layout a user's internal keyboard has.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.Keyboard.ModifierPressed.{KeyboardType}"
    enum="ModifierKeyDomCodes" expires_after="2026-07-26">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of times modifier keys are pressed before any modifier
    remapping takes place on {KeyboardType} keyboards.
  </summary>
  <token key="KeyboardType">
    <variant name="AppleExternal"/>
    <variant name="CrOSExternal"/>
    <variant name="External"/>
    <variant name="Internal"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Inputs.Keyboard.RemappedModifierPressed.{KeyboardType}"
    enum="ModifierKeyDomCodes" expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of times modifier keys are pressed after modifier
    remappings takes place on {KeyboardType} keyboards.
  </summary>
  <token key="KeyboardType">
    <variant name="AppleExternal"/>
    <variant name="CrOSExternal"/>
    <variant name="External"/>
    <variant name="Internal"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.Keyboard.{FunctionKeyPressed}"
    enum="InputKeyEventToFunctionKey" expires_after="2026-09-01">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the source input key event that is rewritten to a Function key
    {FunctionKeyPressed}.
  </summary>
  <token key="FunctionKeyPressed">
    <variant name="F1Pressed"/>
    <variant name="F2Pressed"/>
    <variant name="F3Pressed"/>
    <variant name="F4Pressed"/>
    <variant name="F5Pressed"/>
    <variant name="F6Pressed"/>
    <variant name="F7Pressed"/>
    <variant name="F8Pressed"/>
    <variant name="F9Pressed"/>
    <variant name="F10Pressed"/>
    <variant name="F11Pressed"/>
    <variant name="F12Pressed"/>
    <variant name="F13Pressed"/>
    <variant name="F14Pressed"/>
    <variant name="F15Pressed"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.KeyUsage.Internal.{KeyboardKey}"
    enum="KeyUsageCategory" expires_after="2027-02-07">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records when the {KeyboardKey} key is pressed or if it is recognized on the
    internal keyboard. This is used to get usage statistics on keyboard key
    usage.
  </summary>
  <token key="KeyboardKey">
    <variant name="Accessibility"/>
    <variant name="AllApplications"/>
    <variant name="Alt"/>
    <variant name="Assistant"/>
    <variant name="Back"/>
    <variant name="Backspace"/>
    <variant name="CapsLock"/>
    <variant name="Control"/>
    <variant name="Dictation"/>
    <variant name="EmojiPicker"/>
    <variant name="Escape"/>
    <variant name="Forward"/>
    <variant name="Fullscreen"/>
    <variant name="KeyboardBacklightDown"/>
    <variant name="KeyboardBacklightToggle"/>
    <variant name="KeyboardBacklightUp"/>
    <variant name="Meta"/>
    <variant name="MicrophoneMute"/>
    <variant name="NextTrack"/>
    <variant name="Overview"/>
    <variant name="PlayPause"/>
    <variant name="PreviousTrack"/>
    <variant name="PrivacyScreenToggle"/>
    <variant name="QuickInsert"/>
    <variant name="Refresh"/>
    <variant name="ScreenBrightnessDown"/>
    <variant name="ScreenBrightnessUp"/>
    <variant name="Screenshot"/>
    <variant name="VolumeDown"/>
    <variant name="VolumeMute"/>
    <variant name="VolumeUp"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.ModifierKeyCombo.{KeyboardType}" units="hash"
    expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records how users use their physical {KeyboardType} keyboards. It groups
    keys into common categories such as &quot;Alpha&quot; and
    &quot;Digits&quot;.

    See //ash/accelerators/modifier_key_combo_recorder.cc for info on how to
    decode the metric.
  </summary>
  <token key="KeyboardType">
    <variant name="CrOSExternal"/>
    <variant name="External"/>
    <variant name="Internal"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.Mouse.InvalidRegistration" units="Vkey"
    expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records everytime a mouse attempts to register a button for peripheral
    customization and it is blocked by the customization restriction.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.Mouse.InvalidRegistration.{DeviceType}"
    units="Vkey" expires_after="2026-10-28">
  <owner>wangdanny@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records everytime if the mouse which tries the invalid registration is
    recognized as a {DeviceType}.
  </summary>
  <token key="DeviceType">
    <variant name="Combo"/>
    <variant name="NonCombo"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.Peripherals.MicrophoneMuteToggleDevices"
    enum="MicrophoneMuteToggleDevices" expires_after="2027-06-18">
  <owner>jingyliang@google.com</owner>
  <owner>chromeos-tango@google.com</owner>
  <summary>
    Records when a peripheral device tries to toggle ChromeOS microphone mute
    state. It classifies whether the peripheral has a keyboard (likely
    indicating not a telephony device) and what scan code it uses to trigger the
    event. It also groups devices based on popular vendors.

    Warning: this histogram was expired from 2025-12-15 to 2026-06-18; data may
    be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.Stylus.BatteryReportingEligibility"
    enum="BatteryReportingEligibility" expires_after="2026-03-15">
  <owner>wmahon@google.com</owner>
  <owner>chromeos-tango@google.com</owner>
  <summary>
    Records if a stylus peripheral device is accurately able to report its
    battery status. Entries are logged everytime the battery status is polled by
    power manager.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.SuspendStateMachine"
    enum="SuspendStateMachineEvent" expires_after="2026-10-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records actions of the suspend state machine once it is triggered to start
    tracking key releases. Result can either be cancelled or successfully
    triggered suspend.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.Touchscreen.Connected.Configuration"
    enum="TouchscreenConfiguration" expires_after="2027-06-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record various configurations of internal and external touchscreens
    connected to a ChromeOS devices. Fires when connected touchscreen
    configuration changes.
  </summary>
</histogram>

<histogram name="ChromeOS.Inputs.Touchscreen.Connected.External.Count"
    units="touchscreens" expires_after="2027-06-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>longbowei@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record the number of external touchscreens connected on a ChromeOS device,
    excluding cases with zero touchscreens. Fires when connected touchscreen
    configuration changes.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Inputs.TouchscreenUsage.Temporary.{TimePeriod}.{Mode}"
    units="ms" expires_after="2025-06-22">
<!-- TODO(b/270610982): Remove excess time periods once an optimal time period has been selected. -->

  <owner>wmahon@google.com</owner>
  <owner>chromeos-tango@google.com</owner>
  <summary>
    Records touchscreen usage time in {Mode}. A usage session is defined as a
    set of subsequent touches where each touch occurred less than {TimePeriod}
    after the previous.
  </summary>
  <token key="TimePeriod">
    <variant name="1Minute"/>
    <variant name="3Minutes"/>
    <variant name="5Minutes"/>
    <variant name="5Seconds"/>
    <variant name="10Minutes"/>
    <variant name="15Seconds"/>
    <variant name="30Seconds"/>
  </token>
  <token key="Mode">
    <variant name="ClamshellMode"/>
    <variant name="TabletMode"/>
  </token>
</histogram>

<histogram name="ChromeOS.Inputs.{DeviceType}.MetadataTier" enum="MetadataTier"
    expires_after="2027-09-14">
  <owner>wangdanny@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>Records the number of metadata tiers on {DeviceType}.</summary>
  <token key="DeviceType">
    <variant name="GraphicsTablet"/>
    <variant name="Keyboard"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram name="ChromeOS.Intents.IntentPickerAction"
    enum="IntentPickerDialogAction" expires_after="2026-09-14">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    The intent picker dialog is shown (either automatically, or though a page
    action button) when the user navigates to a page whose URL can be handled by
    an installed app. This metric is recorded when the dialog is closed and
    records the user action which caused it to close.

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

<histogram name="ChromeOS.Intents.IntentPickerIconEvent"
    enum="IntentPickerIconEvent" expires_after="2026-09-14">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records events associated with the intent picker icon in the omnibox.
    Recorded when the icon is shown or interacted with.

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

<histogram name="ChromeOS.Intents.LinkCapturingEvent2"
    enum="LinkCapturingEvent" expires_after="2027-02-07">
  <owner>vpao@google.com</owner>
  <owner>chromeos-apps-foundation-team@google.com</owner>
  <summary>
    Records when the link capturing entry point is shown, when a link is
    successfully captured and results in opening an app, and when the user
    changes their settings to automatically capture similar links in the future.

    Replaces ChromeOS.Intents.LinkCapturingEvent, which incorrectly recorded
    events when the user changed settings to stay in Chrome.
  </summary>
</histogram>

<histogram name="ChromeOS.IsLacrosBrowser" enum="Boolean" expires_after="never">
<!-- expires-never: Used to identify lacros binary in metrics backend. -->

  <owner>jamescook@chromium.org</owner>
  <owner>lacros-team@google.com</owner>
  <summary>
    Recorded as part of the metrics session data to identify the lacros-chrome
    browser binary.
  </summary>
</histogram>

<histogram name="ChromeOS.K12UserAgeClassification.LogSegment"
    enum="K12UserAgeClassificationMatrix" expires_after="2027-02-14">
  <owner>zifanzhang@google.com</owner>
  <owner>cros-client-wa@google.com</owner>
  <summary>Tracks the K12 user age classification.</summary>
</histogram>

<histogram name="ChromeOS.Kcer.KcerPkcs12ImportEvent"
    enum="KcerPkcs12ImportEvent" expires_after="2026-05-17">
  <owner>miersh@google.com</owner>
  <owner>olsa@google.com</owner>
  <summary>Tracks events related to the import of PKCS#12 files.</summary>
</histogram>

<histogram name="ChromeOS.Kcer.Pkcs12Migration"
    enum="KcerPkcs12MigrationUmaEvent" expires_after="2026-06-28">
  <owner>miersh@google.com</owner>
  <owner>chromeos-commercial-networking@google.com</owner>
  <summary>
    Tracks events related to the migration of the PKCS#12 import.
  </summary>
</histogram>

<histogram name="ChromeOS.Keyboard.HasBacklight" enum="Boolean"
    expires_after="2027-03-01">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records whether the keyboard has a backlight. This state is determined once
    per boot and the metric is also recorded only once per boot.
  </summary>
</histogram>

<histogram name="ChromeOS.Keyboard.Startup.AmbientLightSensorEnabled"
    enum="BooleanEnabled" expires_after="2026-12-31">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Record the status of the keyboard ambient light sensor at startup. Fires
    when the device boots up and the login screen is displayed.
  </summary>
</histogram>

<histogram
    name="ChromeOS.Keyboard.TimeUntilFirstBrightnessChange.{Time}.{BrightnessAction}Brightness.{PowerSource}Power"
    units="ms" expires_after="2026-12-31">
  <owner>longbowei@google.com</owner>
  <owner>cambickel@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    When a user {BrightnessAction} the brightness of the keyboard for the first
    time since last reboot, records an event with the number of milliseconds
    since {Time}. Also records the power source ({PowerSource}, in this case) at
    the time of the event. Note: if a brightness change event happens more than
    1 hour after startup/login, this histogram will not be recorded.
  </summary>
  <token key="Time">
    <variant name="AfterLogin"
        summary="the user logged in (recorded only after login)"/>
    <variant name="OnLoginScreen"
        summary="the login screen was first shown (recorded only on login
                 screen)"/>
  </token>
  <token key="BrightnessAction">
    <variant name="Decrease" summary="decreases"/>
    <variant name="Increase" summary="increases"/>
    <variant name="Set" summary="sets"/>
    <variant name="Toggle" summary="toggles"/>
  </token>
  <token key="PowerSource">
    <variant name="Battery"/>
    <variant name="Charger"/>
  </token>
</histogram>

<histogram name="ChromeOS.KeyPermissionsManager.Migration"
    enum="KeyPermissionsManagerMigrationStatus" expires_after="2027-02-01">
  <owner>miersh@google.com</owner>
  <owner>chromeos-commercial-networking@google.com</owner>
  <summary>
    Counts the number of times the migration started as well as the number of
    times it succeeded and failed. It also counts the number of necessary
    migrations. Necessary migrations are the ones that work on migrating
    permissions for at least one key. Currently, some migration processes start
    when there are 0 keys saved in preferences.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.GetPackState.FeatureId"
    enum="LanguagePackFeatureIds" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records which feature requested a Pack from Language Packs Manager;
    specifically an entry is recorded each time GetPackState is called.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.GetPackState.LanguageCode"
    enum="LanguagePackLanguageCodes" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records which language was requested from Language Packs Manager;
    specifically an entry is recorded each time GetPackState is called. Warning:
    this histogram was expired from 2025-01-05 to 2025-02-15; data may be
    missing.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.InstallBasePack.FeatureId"
    enum="LanguagePackFeatureIds" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records which feature requested a BasePack from Language Packs Manager;
    specifically an entry is recorded each time InstallBasePack is called.
    Warning: this histogram was expired from 2025-01-05 to 2025-02-15; data may
    be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.InstallError.Fonts"
    enum="LanguagePackDlcErrorType" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records the type of error that is received from DLC Service when an
    installation is requested for fonts. No metric is emitted on success, we
    only record an entry in case of error. Warning: this histogram was expired
    from 2025-01-05 to 2025-02-15; data may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.InstallError.Handwriting"
    enum="LanguagePackDlcErrorType" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records the type of error that is received from DLC Service when an
    installation is requested for Handwriting. No metric is emitted on success,
    we only record an entry in case of error.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.InstallError.Tts"
    enum="LanguagePackDlcErrorType" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records the type of error that is received from DLC Service when an
    installation is requested for TTS. No metric is emitted on success, we only
    record an entry in case of error. Warning: this histogram was expired from
    2025-01-05 to 2025-02-15; data may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.InstallPack.Success"
    enum="LanguagePackFeatureSuccess" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records whether a language pack installation was successful after a language
    pack installation attempt, broken down by feature ID.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.Oobe.ValidLocale" enum="BooleanSuccess"
    expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records whether LanguagePackManager is called with a valid locale when
    updating packs in OOBE.
  </summary>
</histogram>

<histogram name="ChromeOS.LanguagePacks.UninstallComplete.Success"
    enum="BooleanSuccess" expires_after="2026-06-30">
  <owner>mlcui@google.com</owner>
  <owner>dvallet@chromium.org</owner>
  <owner>tranbaoduy@chromium.org</owner>
  <summary>
    Records whether a language pack uninstallation was successful after a
    language pack uninstallation attempt. Warning: this histogram was expired
    from 2025-01-05 to 2025-02-15; data may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.Liveness.PingResponseTime" units="ms"
    expires_after="2027-01-17">
  <owner>xiyuan@google.com</owner>
  <owner>cros-sw-perf@google.com</owner>
  <summary>
    Reports the time (ms) elapsed between sending of a LivenessChecker ping and
    receipt of the response. Recorded when LivenessChecker receives a ping
    response.
  </summary>
</histogram>

<histogram name="ChromeOS.Liveness.PingResult" enum="BooleanSuccess"
    expires_after="2027-02-07">
  <owner>iby@google.com</owner>
  <owner>xiyuan@google.com</owner>
  <summary>
    Records whether the dbus liveness pings successfully go through. True is
    recorded when the session manager daemon receives the pong back from chrome
    in time. False is recorded when it times out waiting for the pong.
  </summary>
</histogram>

<histogram name="ChromeOS.LockScreenReauth.LockScreenReauthReason"
    enum="LoginReauthReasons" expires_after="2027-07-26">
  <owner>andreydav@google.com</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>
    Record the reason(s) why a user is required to reauthenticate online on the
    lock screen. Recorded after successful online authentication.
  </summary>
</histogram>

<histogram
    name="ChromeOS.MachineIdRegen.AgeSeconds{ChromeOS_MachineIdRegen_AgeSeconds}"
    units="seconds" expires_after="2022-02-02">
  <owner>ahassani@chromium.org</owner>
  <owner>chromeos-core-services@google.com</owner>
  <summary>
    The number of seconds of uptime since the last time the Chrome OS machine-id
    was regenerated. This is reported every time the machine-id is regenerated
    except for the first time since reboot.

    NB: Data before M90 is incomplete. {ChromeOS_MachineIdRegen_AgeSeconds}
  </summary>
  <token key="ChromeOS_MachineIdRegen_AgeSeconds">
    <variant name=""/>
    <variant name="_Network" summary=""/>
    <variant name="_Periodic" summary=""/>
    <variant name="_Unknown" summary=""/>
  </token>
</histogram>

<histogram name="ChromeOS.MachineStatistic.{MachineStatistic}.LoadingTime"
    units="ms" expires_after="2027-02-07">
  <owner>asumaneev@google.com</owner>
  <owner>chromeos-commercial-remote-management@google.com</owner>
  <summary>
    Tracks duration of {MachineStatistic} machine statistic loading time when
    the statistic is requested.

    The metric is recorded on every request of a machine statistic.

    Zero time indicates a request to already loaded statistic. 3 seconds
    indicates a request timeout.
  </summary>
  <token key="MachineStatistic" variants="MachineStatistics"/>
</histogram>

<histogram name="ChromeOS.MagicBoost.OptInCard.{OptInFeatures}"
    enum="OptInCardAction" expires_after="2026-08-10">
  <owner>newcomer@google.com</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Tracks the actions in the magic boost opt in card, which is triggered by the
    {OptInFeatures}. Recorded when the opt-in card is shown or any button in the
    card 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="ChromeOS.Mahi.CacheStateOnAccess" enum="MahiCacheHit"
    expires_after="2026-12-01">
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Tracks the type of cache that is used for user requests. Also tracks if
    there is no cache available. The metric is recorded for every summary/QA
    request to MahiManager.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ContentExtraction.TriggeringLatency" units="ms"
    expires_after="2026-12-01">
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records the latency of the distillability check result is available after
    the web page finishes loading. Emitted when the distillability check result
    is returned by the utility process.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ContextMenuView.Activated"
    enum="MahiContextMenuButtonType" expires_after="2027-01-03">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when any button or clickable view in the web Mahi Context Menu view
    is activated.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ContextMenuView.ActivatedFailed"
    enum="MahiContextMenuButtonType" expires_after="2026-02-01">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when clicking on any button or clickable view in the web Mahi
    Context Menu view fails to trigger actions.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ContextMenuView.ButtonClicked"
    enum="MahiMenuButton" expires_after="2027-01-03">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Recorded when any button in the web Mahi Context Menu view is clicked.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ContextMenuView.Distillable"
    enum="BooleanDistillable" expires_after="2025-12-14">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    Records whether the page is distillable when Mahi menu is requested to show.
    Emitted when user right clicks and Mahi menu is requested.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ContextMenuView.ElucidationState"
    enum="SelectedTextState" expires_after="2026-12-01">
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records whether the elucidation function is available based on the current
    selected text when the user right clicks and the Mahi menu is requested.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ProviderCreationStatus"
    enum="MahiProviderCreationStatus" expires_after="2026-12-01">
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records the result of Mahi provider creation. Mahi provider is initialized
    when Help Me Read is called for the first time after the user logs in.
    However when error happens, this may log a non-OK status on each Help Me
    Read call.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.ResponseStatusOnRequest"
    enum="MahiResponseStatus" expires_after="2026-12-01">
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Tracks the type of returned response status of Mahi for requests from its
    callers. The metric is recored for each summary/QA request to MahiManager.
  </summary>
</histogram>

<histogram name="ChromeOS.Mahi.Used" enum="MahiFeature"
    expires_after="2026-12-01">
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records overall Mahi usage per feature. Recorded each time a feature within
    Mahi is used, concurrently with its network request, but after any
    client-side checks that could disable the feature.

    This is counted regardless of whether the server returns success or failure.
    For that, see ChromeOS.Mahi.ResponseStatusOnRequest.
  </summary>
</histogram>

<histogram name="ChromeOS.MessageCenter.ScrollActionReason"
    enum="ChromeOSMessageCenterScrollActionReason" expires_after="2026-02-01">
  <owner>newcomer@chromium.org</owner>
  <owner>cros-status-area-eng@google.com</owner>
  <summary>
    The cause of the scroll event by the user on the message center. Only the
    first event after the message center opens is recorded. For example, the
    user opens the message center and scrolls by mouse then by key, only the
    mouse event is recorded. If the user closes and reopens the message center
    before the second event, both events are recorded.
  </summary>
</histogram>

<histogram name="ChromeOS.Ownership.OwnerKeyUmaEvent" enum="OwnerKeyUmaEvent"
    expires_after="2027-01-03">
  <owner>miersh@google.com</owner>
  <owner>chromeos-commercial-networking@google.com</owner>
  <summary>
    Records events related to the owner key generation, loading and usage.
  </summary>
</histogram>

<histogram name="ChromeOS.PlatformVerification.Result2"
    enum="ChromeOSPlatformVerificationResult2" expires_after="2025-09-01">
  <owner>erikchen@chromium.org</owner>
  <owner>cros-hwsec+uma@google.com</owner>
  <summary>
    The result of a platform verification attempt for content protection on
    Chrome OS. Does not include browser-related failures.
  </summary>
</histogram>

<histogram name="ChromeOS.Printing.TimeCostOfFailedFoomaticShell"
    units="seconds" expires_after="2025-09-14">
  <owner>pawliczek@chromium.org</owner>
  <owner>bmgordon@chromium.org</owner>
  <owner>project-bolton@google.com</owner>
  <summary>
    Total CPU time of all children processes started by foomatic_shell in a
    single failed run. foomatic_shell is used for preparing input data for some
    printers.
  </summary>
</histogram>

<histogram name="ChromeOS.Printing.TimeCostOfSuccessfulFoomaticShell"
    units="seconds" expires_after="2025-09-14">
  <owner>pawliczek@chromium.org</owner>
  <owner>bmgordon@chromium.org</owner>
  <owner>project-bolton@google.com</owner>
  <summary>
    Total CPU time of all children processes started by foomatic_shell in a
    single successful run. foomatic_shell is used for preparing input data for
    some printers.
  </summary>
</histogram>

<histogram name="ChromeOS.PrintManagement.PrinterSettingsLaunchSource"
    enum="PrintManagementLaunchSourceType" expires_after="2024-01-23">
  <owner>ashleydp@google.com</owner>
  <owner>gavinwill@google.com</owner>
  <owner>cros-device-enablement@chromium.org</owner>
  <summary>
    Tracks the source element that triggers navigation to Printer settings from
    Print Management SWA. It attempts to capture the state of Print Management
    when a user clicks the Printer settings button. Possible states include: no
    active or historical print jobs and with at least one active or historical
    print job.
  </summary>
</histogram>

<histogram name="ChromeOS.PrivacyHub.Geolocation.AccessLevelChanged.{Source}"
    enum="GeolocationAccessLevel" expires_after="2025-12-28">
  <owner>zauri@google.com</owner>
  <owner>chromeos-privacyhub@google.com</owner>
  <summary>
    Records system geolocation permission change originated from the {Source}.
  </summary>
  <token key="Source">
    <variant name="GeolocationDialog"
        summary="geolocation dialogs. These dialogs are surfaced in the
                 affected system services, like Automatic Time Zone"/>
    <variant name="LocationPermissionNotification"
        summary="ChromeOS system notification"/>
    <variant name="SystemSettings"
        summary="ChromeOS system settings &gt; Location access subpage"/>
  </token>
</histogram>

<histogram name="ChromeOS.PrivacyHub.LearnMorePage.Opened"
    enum="PrivacyHubLearnMoreSensor" expires_after="2025-11-01">
  <owner>cschlosser@chromium.org</owner>
  <owner>chromeos-privacyhub@google.com</owner>
  <summary>
    PrivacyHub is a chrome://os-settings page that allows system wide control of
    privacy settings. The Privacy Hub effort adds additional context to already
    existing notifications for microphones and cameras in case there is a
    physical switch on the device to disable one of these sensors. Prior there
    was only the notification message informing the user about the current state
    of the system. The notifciations now include a link to a support page where
    this is explained in more detail. This histogram records which sensor being
    disabled resulted in the notification button being clicked.
  </summary>
</histogram>

<histogram name="ChromeOS.PrivacyHub.Opened" enum="PrivacyHubNavigationOrigin"
    expires_after="2026-03-01">
  <owner>zauri@google.com</owner>
  <owner>chromeos-privacyhub@google.com</owner>
  <summary>
    Records when the user visits the Privacy Hub page in system settings.
    Capturing the origin where the user navigated from.
  </summary>
</histogram>

<histogram name="ChromeOS.PrivacyHub.{FeatureName}.{Source}.Enabled"
    enum="BooleanEnabled" expires_after="2023-09-01">
  <owner>zauri@google.com</owner>
  <owner>chromeos-privacyhub@google.com</owner>
  <summary>
    Records when the user changes the device-wide {FeatureName} access from the
    {Source}. This can happen directly from the settings page
    &quot;Settings&quot;&gt;&quot;Security and Privacy&quot;&gt;&quot;Privacy
    hub&quot; or through notifications.
  </summary>
  <token key="FeatureName">
    <variant name="Camera"/>
    <variant name="Microphone"/>
  </token>
  <token key="Source">
    <variant name="Notification"/>
    <variant name="Settings"/>
  </token>
</histogram>

<histogram name="ChromeOS.Regmon.PolicyHandlerTime" units="ms"
    expires_after="2026-08-02">
  <owner>chiav@chromium.org</owner>
  <owner>crmullins@chromium.org</owner>
  <summary>
    Records the amount of time (milliseconds) it takes to run the policy
    handler.
  </summary>
</histogram>

<histogram name="ChromeOS.Regmon.PolicyViolation"
    enum="NetworkAnnotationHashCodes" expires_after="2026-08-02">
  <owner>chiav@chromium.org</owner>
  <owner>crmullins@chromium.org</owner>
  <summary>
    Records a count of observed first-party network requests that should have
    been disabled based on current policy values. This metric is keyed by
    network annotation hash code, to help identify potentially misconfigured
    network annotations.
  </summary>
</histogram>

<histogram name="ChromeOS.Regmon.ReportViolationTime" units="ms"
    expires_after="2026-08-02">
  <owner>chiav@chromium.org</owner>
  <owner>crmullins@chromium.org</owner>
  <summary>
    Records the amount of time (milliseconds) it takes to run the Report
    function for network annotation monitoring when a violation is found.
  </summary>
</histogram>

<histogram name="ChromeOS.RgbKeyboard.RgbKeyboardCapabilityType"
    enum="RgbKeyboardCapabilityType" expires_after="2027-01-05">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records whether or not RGB keyboard is supported for the current device.
    Most devices will return RgbKeyboardCapabilityType::None since RGB keyboard
    is currently only supported on a handful of devices. We still include these
    samples since it'll be useful for finding real failures, i.e,
    RgbKeyboardCapabilityType::None is recorded for a device that supports RGB.
  </summary>
</histogram>

<histogram name="ChromeOS.RgbKeyboard.{Type}"
    enum="RgbKeyboardBacklightChangeType" expires_after="2027-01-05">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>Records the source of RGB backlight change for a device.</summary>
<!-- This must be kept current with RgbKeyboardCapabilityType located in
  tools/metrics/histograms/enums.xml. RgbKeyboardCapabilityType::None is omitted
  since the backlight can not be changed on unsupported devices. -->

  <token key="Type">
    <variant name="FourZoneFifteenLed"/>
    <variant name="FourZoneFortyLed"/>
    <variant name="FourZoneTwelveLed"/>
    <variant name="IndividualKey"/>
  </token>
</histogram>

<histogram name="ChromeOS.SAML.APIError" enum="ChromeOSSamlApiError"
    expires_after="2027-01-17">
  <owner>andreydav@google.com</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>Recorded when the Credentials Passing API call fails.</summary>
</histogram>

<histogram name="ChromeOS.SAML.APILogin" enum="ChromeOSSamlApiUsed"
    expires_after="2023-04-02">
  <owner>mslus@chromium.org</owner>
  <owner>emaxx@chromium.org</owner>
  <summary>
    Records every online login authenticated purely with GAIA or with SAML.
  </summary>
</histogram>

<histogram name="ChromeOS.SAML.IncorrectAttestation"
    enum="ChromeOSSamlIncorrectAttestation" expires_after="2025-07-28">
  <owner>bchikhaoui@google.com</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>Recorded Incorrect Attestation in SamlHandler.</summary>
</histogram>

<histogram name="ChromeOS.SAML.InSessionPasswordChangeEvent"
    enum="SamlInSessionPasswordChangeEvent" expires_after="2025-08-03">
  <owner>mslus@chromium.org</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>
    Records how often users are guided through the SAML in-session password
    change flow, and how often it is completed succesfully.
  </summary>
</histogram>

<histogram name="ChromeOS.SAML.InSessionPasswordSyncEvent"
    enum="SamlInSessionPasswordSyncEvent" expires_after="2027-02-22">
  <owner>mslus@chromium.org</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>
    Records how often password sync token API is called. Tracks results of token
    verify operation and API errors.
  </summary>
</histogram>

<histogram name="ChromeOS.SAML.Provider" enum="ChromeOSSamlProvider"
    expires_after="2027-02-07">
  <owner>mslus@chromium.org</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>Records SAML provider when SAML login flow is used.</summary>
</histogram>

<histogram name="ChromeOS.SAML.Scraping.PasswordCountAll" units="passwords"
    expires_after="2026-09-06">
  <owner>mslus@chromium.org</owner>
  <owner>emaxx@chromium.org</owner>
  <summary>
    The number of passwords that were scraped during a Chrome OS login via SAML.
    This is set only when the Chrome Credentials Passing API is not used.
  </summary>
</histogram>

<histogram name="ChromeOS.SAML.{LoginOrUnlock}.SamlRedirectUsage"
    enum="SamlRedirectEvent" expires_after="2027-01-25">
  <owner>andreydav@google.com</owner>
  <owner>cros-3pidp@google.com</owner>
  <summary>
    Tracks the usage of /samlredirect Gaia endpoint. This is recorded each time
    when online auth is started with this endpoint during login or unlock.
    Additionally, it records any time when a user switches from their default 3P
    IdP page to the default Google sign-in page during such online auth flows.
  </summary>
  <token key="LoginOrUnlock">
    <variant name="Login"/>
    <variant name="Unlock"/>
  </token>
</histogram>

<histogram name="ChromeOS.Sandboxing.LandlockEnabled" enum="Boolean"
    expires_after="2027-07-05">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the status of the Landlock LSM on the system. Records true if
    Landlock is enabled, and records false if it is disabled (not configured),
    not supported by the kernel, or responding with an error.

    The state of Landlock is determined once per boot and the metric is also
    recorded only once per boot.
  </summary>
</histogram>

<histogram name="ChromeOS.Sandboxing.NoNewPrivsProcPercentage" units="%"
    expires_after="2027-07-05">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the percentage of processes on the system that have the NoNewPrivs
    bit set in the /proc/self/status file. For more information on no_new_privs,
    see https://docs.kernel.org/userspace-api/no_new_privs.html

    No new privs process percentage for the system is sent once per boot and
    only when a user is logged in.
  </summary>
</histogram>

<histogram name="ChromeOS.Sandboxing.NonInitNsProcPercentage" units="%"
    expires_after="2027-07-05">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the percentage of processes on the system that are not in the same
    PID and mount namespace as the init process. Namespace information is
    collected from /proc/self/ns/pid and /proc/self/ns/mnt symlinks.

    Non-init-namespace process percentage for the system is sent once per boot
    and only when a user is logged in.
  </summary>
</histogram>

<histogram name="ChromeOS.Sandboxing.NonRootProcPercentage" units="%"
    expires_after="2027-07-05">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the percentage of processes on the system that are not running as
    the root user. A process is considered non-root, if its real UID listed in
    the /proc/self/status file is anything other than 0.

    Non-root process percentage for the system is sent once per boot and only
    when a user is logged in.
  </summary>
</histogram>

<histogram name="ChromeOS.Sandboxing.SecCompCoverage" units="%"
    expires_after="2027-07-05">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the percentage of processes on the system that are covered by
    SecComp. A process is considered covered by SecComp if the Seccomp: line in
    /proc/self/status is anything other than 0.

    SecComp coverage for the system is sent once per boot and only when a user
    is logged in.
  </summary>
</histogram>

<histogram name="ChromeOS.Sandboxing.UnprivProcPercentage" units="%"
    expires_after="2027-07-05">
  <owner>enlightened@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the percentage of processes on the system that are not running as
    the root user and do not have the CAP_SYS_ADMIN capability. A process is
    considered non-root, if its real UID listed in the /proc/self/status file is
    anything other than 0.

    To determine if a process has CAP_SYS_ADMIN, we parse the CapEff: line in
    /proc/self/status file and check whether the 21st bit is set.

    Unprivileged process percentage for the system is sent once per boot and
    only when a user is logged in.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.AuthFactor.{EventType}"
    enum="SecagentdAuthFactor" expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records which auth factor was used when a user attempts to access a device.
    Emits the auth factor which is a password, pin, fingerprint, etc. It is
    recorded whenever a {EventType} event occurs when accessing the device.
  </summary>
  <token key="EventType">
    <variant name="Failure" summary="User enters incorrect credentials"/>
    <variant name="Login" summary="User logs into the device"/>
    <variant name="Unlock" summary="User unlocks the device"/>
  </token>
</histogram>

<histogram name="ChromeOS.Secagentd.Bootmode.Cros" enum="SecagentdBootmodeCros"
    expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records whether the cros bootmode for the device was successfully found for
    devices running the CrOS secagentd daemon. Emits either success or the
    failure reason. When XDR reporting is enabled it will emit once per daemon
    lifetime.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.Bootmode.Uefi" enum="SecagentdBootmodeUefi"
    expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records whether the bootparams file was successfully parsed for the UEFI
    bootmode information for devices running the CrOS secagentd daemon. Emits
    either success or the failure reason. When XDR reporting is enabled it will
    emit once per daemon lifetime.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.Bpf.{Bpf}.AttachResult"
    enum="SecagentdBpfAttachResult" expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records the initialization status of the {Bpf} BPF used by the CrOS
    secagentd daemon. Emits either a success or a specific error value. When XDR
    reporting is enabled it will be recorded once per daemon lifetime.
  </summary>
  <token key="Bpf">
    <variant name="File" summary="File BPF"/>
    <variant name="Network" summary="Network BPF"/>
    <variant name="Process" summary="Process BPF"/>
  </token>
</histogram>

<histogram name="ChromeOS.Secagentd.Cache" enum="SecagentdCache"
    expires_after="2027-01-31">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records whether the processe's information was found in the cache for the
    CrOS secagentd daemon. Emits either Cache Hit, Cache Miss or Cache Miss but
    scraped procfs successfully. It will be recorded at most 3 times per XDR
    event.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.CacheFullness" units="%"
    expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records what percent full the cache is for the CrOS secagentd daemon. Emits
    a value 0-100 representing the percentage. It is recorded every 30 seconds.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.CommandLineLength" units="bytes"
    expires_after="2026-09-30">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records the size of the commandline length in bytes. It is emmited once per
    XDR exec event.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.Policy" enum="SecagentdPolicy"
    expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records whether the XDR event reporting policy was found enabled for a
    device. Also provides an on-check enum for baseline. All of the
    functionality of the CrOS secagentd daemon is gated by this enterprise
    policy.

    Note that even though the daemon regularly polls device policy for updates,
    it will emit exactly one on-check value and at most one enabled value during
    its lifetime (generally per device per boot).
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.Process.{EventType}Event"
    enum="SecagentdProcessEvent" expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records whether the Process {EventType} Event was correctly formed for the
    CrOS secagentd daemon. Emits event was complete or the reason it was not. It
    is recorded once per XDR event.
  </summary>
  <token key="EventType">
    <variant name="Exec" summary="Process exec events"/>
    <variant name="Terminate" summary="Process terminate events"/>
  </token>
</histogram>

<histogram name="ChromeOS.Secagentd.Redaction" units="position"
    expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records what position the redacted username was found in the list of
    usernames for the CrOS secagentd daemon. Emits the position up to 5 (but
    should always be less than or equal to 2). It is recorded everytime a
    username is found in the commandline which should be very rare.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.SendMessageResult"
    enum="SecagentdSendMessageResult" expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records the status response of all events sent by the CrOS secagentd daemon.
    Emits either a success or the failure reason. It is recorded once per XDR
    event.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.SHA256ComputeTime" units="100ms"
    expires_after="2026-09-30">
  <owner>jasonling@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records the amount of time it takes to compute a SHA256 hash. SHA256 hashes
    are computed for each file, process, and network event, unless the value is
    available in the cache.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.SHA256InputSize" units="MiB"
    expires_after="2026-09-30">
  <owner>jasonling@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records the number of mebibytes a SHA256 hash is computed on. SHA256 hashes
    are computed for each file, process, and network event, unless the value is
    available in the cache.
  </summary>
</histogram>

<histogram name="ChromeOS.Secagentd.Tpm" enum="SecagentdTpm"
    expires_after="2027-02-07">
  <owner>rborzello@google.com</owner>
  <owner>cros-enterprise-security@google.com</owner>
  <summary>
    Records whether the TPM for the device was successfully found for devices
    running the CrOS secagentd daemon. Emits either success or the failure
    reason. When XDR reporting is enabled it will be recorded once per daemon
    lifetime.
  </summary>
</histogram>

<histogram name="ChromeOS.SecurityAnomaly" enum="SecurityAnomaly"
    expires_after="2027-08-09">
  <owner>jorgelo@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records when an event representing a deviation from the ChromeOS security
    posture happens.

    The list of writable+executable mounts is updated every thirty seconds, and
    only new anomalous mounts are recorded. This list is cleared every two hours
    so existing anomalies get recorded again after the two-hour window.

    Memfd execution attempts are checked every thirty seconds and new attempts
    are recorded. memfd_create evets are no longer recorded starting with M143.
    memfd_create events were only recorded once per boot prior to M143, and up
    to ten times per boot prior to M111.
  </summary>
</histogram>

<histogram name="ChromeOS.SecurityAnomalyUploadSuccess" enum="Boolean"
    expires_after="2027-02-01">
  <owner>jorgelo@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the result (boolean success or failure) of attempting to report a
    Chrome OS system as anomalous via the crash reporting service.

    Reporting is only attempted if one or more anomalies are detected (see the
    previous histogram's description for the types of anomalies considered),
    *and* once per boot, even if reporting fails.

    So this histogram will be recorded at most once per boot, and only if a
    system is detected as anomalous (i.e. presents any of the tracked
    anomalies.)
  </summary>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.ButtonRemapping.DeviceTypeOfRemappedButton"
    enum="PeripheralCustomizationMetricsType" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>wangdanny@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the device type for users who remapped buttons when the device is
    initialized to know overall feature usage.
  </summary>
</histogram>

<histogram name="ChromeOS.Settings.Device.ButtonRemapping.Pressed"
    enum="PeripheralCustomizationMetricsType" expires_after="2026-09-28">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>wangdanny@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the pressed event of button remapping when it's emitted due to the
    device button presses.
  </summary>
</histogram>

<histogram name="ChromeOS.Settings.Device.HasAmbientLightSensor" enum="Boolean"
    expires_after="2026-12-31">
  <owner>longbowei@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records whether the device has a ambient light sensor. This state is
    determined once per login, and the metric is also recorded only once per
    login.
  </summary>
</histogram>

<histogram name="ChromeOS.Settings.Device.Keyboard.AutoRepeatDelay.{State}"
    units="ms" expires_after="2027-01-15">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the delay before auto repeat starts when the setting is {State}.
  </summary>
  <token key="State">
    <variant name="Changed" summary="changed"/>
    <variant name="Initial" summary="initialized"/>
  </token>
</histogram>

<histogram name="ChromeOS.Settings.Device.Keyboard.AutoRepeatEnabled.{State}"
    enum="Boolean" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the whether auto repeat is enabled when the setting is {State}.
  </summary>
  <token key="State">
    <variant name="Changed" summary="changed"/>
    <variant name="Initial" summary="initialized"/>
  </token>
</histogram>

<histogram name="ChromeOS.Settings.Device.Keyboard.AutoRepeatInterval.{State}"
    units="ms" expires_after="2026-08-10">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the interval between auto repeated keys when the setting is {State}.
  </summary>
  <token key="State">
    <variant name="Changed" summary="changed"/>
    <variant name="Initial" summary="initialized"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.Modifiers.Hash"
    units="hash" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the configured modifier remapping set on {KeyboardType} keyboard for
    all modifiers as a hash.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
    <variant name="InternalSplitModifier"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.Modifiers.NumberOfKeysReset"
    units="keys" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of modifier keys reset everytime the modifier remappings
    are reset to default on the {KeyboardType} keyboard, if the number is not
    zero.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.Modifiers.NumberOfRemappedKeysOnStart"
    units="keys" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of non default modifier key remappings when the
    {KeyboardType} keyboard is first initialized.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.Modifiers.{Modifier}RemappedTo.Changed"
    enum="KeyboardModifierRemappingKeys" expires_after="2027-05-20">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the configured modifier remapping for the {Modifier} key when the
    {KeyboardType} keyboard is updated.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="Modifier">
    <variant name="Alt"/>
    <variant name="Assistant"/>
    <variant name="Backspace"/>
    <variant name="CapsLock"/>
    <variant name="Control"/>
    <variant name="Escape"/>
    <variant name="Meta"/>
    <variant name="QuickInsert"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.Modifiers.{Modifier}RemappedTo.Initial"
    enum="KeyboardModifierRemappingKeys" expires_after="2027-02-07">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the configured modifier remapping for the {Modifier} key when the
    {KeyboardType} keyboard is first initialized.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="Modifier">
    <variant name="Alt"/>
    <variant name="Assistant"/>
    <variant name="Backspace"/>
    <variant name="CapsLock"/>
    <variant name="Control"/>
    <variant name="Escape"/>
    <variant name="Meta"/>
    <variant name="QuickInsert"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.SixPackKeys.{Key}.Changed"
    enum="SixPackKeyModifier" expires_after="2026-07-26">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the configured modifier remapping for the {Key} key when the
    {KeyboardType} keyboard is updated.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="Key">
    <variant name="Delete"/>
    <variant name="End"/>
    <variant name="Home"/>
    <variant name="Insert"/>
    <variant name="PageDown"/>
    <variant name="PageUp"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.SixPackKeys.{Key}.Initial"
    enum="SixPackKeyModifier" expires_after="2026-07-26">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the configured modifier remapping for the {Key} key when the
    {KeyboardType} keyboard is first initialized.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="Key">
    <variant name="Delete"/>
    <variant name="End"/>
    <variant name="Home"/>
    <variant name="Insert"/>
    <variant name="PageDown"/>
    <variant name="PageUp"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.{KeyboardSetting}.Changed"
    enum="Boolean" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {KeyboardSetting} setting when the {KeyboardType}
    keyboard is updated.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="KeyboardSetting">
    <variant name="BlockMetaFKeyRewrites"/>
    <variant name="TopRowAreFKeys"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.{KeyboardSetting}.Initial"
    enum="Boolean" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {KeyboardSetting} setting when the {KeyboardType}
    keyboard is first initialized.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="KeyboardSetting">
    <variant name="BlockMetaFKeyRewrites"/>
    <variant name="TopRowAreFKeys"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Keyboard.{KeyboardType}.{Key}.{State}"
    enum="ExtendedFkeysModifier" expires_after="2026-09-12">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {Key} setting for the {KeyboardType} keyboard when
    the setting is {State}.
  </summary>
  <token key="KeyboardType">
    <variant name="External"/>
    <variant name="ExternalChromeOS"/>
    <variant name="Internal"/>
  </token>
  <token key="Key">
    <variant name="F11"/>
    <variant name="F12"/>
  </token>
  <token key="State">
    <variant name="Changed" summary="changed"/>
    <variant name="Initial" summary="initialized"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.SimulateRightClick.Changed"
    enum="SimulateRightClickModifier" expires_after="2027-01-05">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the simulate right-click setting when the
    {TouchpadType} touchpad is updated.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.SimulateRightClick.Initial"
    enum="SimulateRightClickModifier" expires_after="2027-01-05">
  <owner>michaelcheco@google.com</owner>
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the simulate right-click setting when the
    {TouchpadType} touchpad is first initialized.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.{TouchpadSetting}.Changed"
    enum="Boolean" expires_after="2027-01-05">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {TouchpadSetting} settings when the {TouchpadType}
    touchpad settings are updated.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
  <token key="TouchpadSetting">
    <variant name="AccelerationEnabled"/>
    <variant name="HapticEnabled"/>
    <variant name="ReverseScrolling"/>
    <variant name="TapDragging"/>
    <variant name="TapToClick"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.{TouchpadSetting}.Initial"
    enum="Boolean" expires_after="2026-10-26">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {TouchpadSetting} settings when the {TouchpadType}
    touchpad is first initialized.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
  <token key="TouchpadSetting">
    <variant name="AccelerationEnabled"/>
    <variant name="HapticEnabled"/>
    <variant name="ReverseScrolling"/>
    <variant name="TapDragging"/>
    <variant name="TapToClick"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.{TouchpadSetting}.{Difference}"
    enum="PointerSensitivity" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value {Difference} when {TouchpadSetting} settings on
    {TouchpadType} touchpad are updated.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
  <token key="TouchpadSetting">
    <variant name="HapticSensitivity"/>
    <variant name="Sensitivity"/>
  </token>
  <token key="Difference">
    <variant name="Decrease"/>
    <variant name="Increase"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.{TouchpadSpeedSettings}.Changed"
    enum="PointerSensitivity" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {TouchpadSpeedSettings} setting when the
    {TouchpadType} touchpad settings are updated.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
  <token key="TouchpadSpeedSettings">
    <variant name="HapticSensitivity"/>
    <variant name="Sensitivity"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.Touchpad.{TouchpadType}.{TouchpadSpeedSettings}.Initial"
    enum="PointerSensitivity" expires_after="2026-10-25">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {TouchpadSpeedSettings} setting when the
    {TouchpadType} touchpad is first initialized.
  </summary>
  <token key="TouchpadType">
    <variant name="External" summary="external touchpad"/>
    <variant name="Internal" summary="internal touchpad"/>
  </token>
  <token key="TouchpadSpeedSettings">
    <variant name="HapticSensitivity"/>
    <variant name="Sensitivity"/>
  </token>
</histogram>

<histogram name="ChromeOS.Settings.Device.{DeviceType}.SetSettingsSucceeded"
    enum="Boolean" expires_after="2026-10-12">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records if the {DeviceType} settings are set successfully. Set settings will
    fail if the id or the settings object is invalid.
  </summary>
  <token key="DeviceType">
    <variant name="Keyboard"/>
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
    <variant name="Touchpad"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{DeviceType}.SettingsUpdated.FirstEver.{TimePeriod}"
    units="times updated" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of times settings were updated for the first ever
    connected {DeviceType} within the given time period of {TimePeriod}.
  </summary>
  <token key="DeviceType" variants="InputDeviceSettingsDeviceTypes"/>
  <token key="TimePeriod" variants="InputDeviceSettingsUpdatedTimePeriods"/>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{DeviceType}.SettingsUpdated.FromDefaults.{TimePeriod}"
    units="times updated" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of times {DeviceType} settings were updated when they
    were initially taken from the user's defaults within the time period of
    {TimePeriod}.
  </summary>
  <token key="DeviceType" variants="InputDeviceSettingsDeviceTypes"/>
  <token key="TimePeriod" variants="InputDeviceSettingsUpdatedTimePeriods"/>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{DeviceType}.SettingsUpdated.Synced.{TimePeriod}"
    units="times updated" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of times {DeviceType} settings were updated when the
    settings were taken from synced settings within the time period of
    {TimePeriod}.
  </summary>
  <token key="DeviceType" variants="InputDeviceSettingsDeviceTypes"/>
  <token key="TimePeriod" variants="InputDeviceSettingsUpdatedTimePeriods"/>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.AcceleratorAction.Changed"
    enum="AcceleratorAction" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping AcceleratorAction property when
    the {Peripheral} device button_remapping is changed.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.AcceleratorAction.Initial"
    enum="AcceleratorAction" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping AcceleratorAction property when
    the {Peripheral} device button_remapping is first initialized.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.AcceleratorAction.Pressed"
    enum="AcceleratorAction" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping AcceleratorAction property when
    it's emitted due to the {Peripheral} device button presses.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.DefaultRemapping.CustomizableButton"
    enum="CustomizableButton" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the Button.CustomizableButton property when the
    {Peripheral} device button_remapping is first initialized and the button has
    its default remapping.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.DefaultRemapping.Vkey"
    units="Vkey" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the Button.Vkey property when the {Peripheral} device
    button_remapping is first initialized and the button has its default
    remapping.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.KeyEvent.Changed"
    units="KeyEventEncodedInt" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping KeyEvent property when the
    {Peripheral} device button_remapping is changed. A KeyEvent is encoded as an
    int where the low 16 bits represent the KeyEvent's KeyboardCode/vkey, and
    the high 16 bits represent the KeyEvent's modifiers. See
    ui/events/keycodes/keyboard_codes_posix.h for the KeyboardCode values. and
    ui/events/event_constants.h for the modifier values.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.KeyEvent.Initial"
    units="KeyEventEncodedInt" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping KeyEvent property when the
    {Peripheral} device button_remapping is first initialized. A KeyEvent is
    encoded as an int where the low 16 bits represent the KeyEvent's
    KeyboardCode/vkey, and the high 16 bits represent the KeyEvent's modifiers.
    See ui/events/keycodes/keyboard_codes_posix.h for the KeyboardCode values.
    and ui/events/event_constants.h for the modifier values.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.KeyEvent.Pressed"
    units="KeyEventEncodedInt" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping KeyEvent property when the it's
    emiited due to {Peripheral} device button presses. A KeyEvent is encoded as
    an int where the low 16 bits represent the KeyEvent's KeyboardCode/vkey, and
    the high 16 bits represent the KeyEvent's modifiers. See
    ui/events/keycodes/keyboard_codes_posix.h for the KeyboardCode values. and
    ui/events/event_constants.h for the modifier values.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.Name.Changed.CustomizableButton"
    enum="CustomizableButton" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the Button.CustomizableButton property when the
    {Peripheral} device button remapping name changes.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.Name.Changed.Vkey"
    units="Vkey" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the Button.Vkey property when the {Peripheral} device
    button remapping name changes. To lookup the Vkey value from UMA, convert
    the int value to a hex, and then lookup that hex value in
    ui/events/keycodes/keyboard_codes_posix.h.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.Registered.CustomizableButton"
    enum="CustomizableButton" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the Button.CustomizableButton property when the user
    presses the button on a {Peripheral} device to remap that button for the
    first time.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.Registered.Vkey"
    units="Vkey" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the Button.Vkey property when the user presses the
    button on a {Peripheral} device to remap that button for the first time.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.StaticShortcutAction.Changed"
    enum="DeviceSettingsStaticShortcutAction" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping StaticShortcutAction property when
    the {Peripheral} device button_remapping is changed.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.StaticShortcutAction.Initial"
    enum="DeviceSettingsStaticShortcutAction" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping StaticShortcutAction property when
    the {Peripheral} device button_remapping is first initialized.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.ButtonRemapping.StaticShortcutAction.Pressed"
    enum="DeviceSettingsStaticShortcutAction" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the button_remapping StaticShortcutAction property when
    it's emitted due the {Peripheral} device button presses.
  </summary>
  <token key="Peripheral">
    <variant name="GraphicsTablet"/>
    <variant name="GraphicsTabletPen"/>
    <variant name="Mouse"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.External.NumConnectedLast28Days"
    units="devices" expires_after="2026-09-22">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the number of {Peripheral} devices seen in the last 28 days.
    Recorded everytime a user connects an external {Peripheral}.
  </summary>
  <token key="Peripheral">
    <variant name="Keyboard"/>
    <variant name="Mouse"/>
    <variant name="Touchpad"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.{PeripheralSetting}.Changed"
    enum="Boolean" expires_after="2026-10-26">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {PeripheralSetting} settings when the {Peripheral}
    device settings are updated.
  </summary>
  <token key="Peripheral">
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
  </token>
  <token key="PeripheralSetting">
    <variant name="AccelerationEnabled"/>
    <variant name="ReverseScrolling"/>
    <variant name="ScrollAcceleration"/>
    <variant name="SwapPrimaryButtons"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.{PeripheralSetting}.Initial"
    enum="Boolean" expires_after="2026-10-26">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {PeripheralSetting} settings when the {Peripheral}
    device is first initialized.
  </summary>
  <token key="Peripheral">
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
  </token>
  <token key="PeripheralSetting">
    <variant name="AccelerationEnabled"/>
    <variant name="ReverseScrolling"/>
    <variant name="ScrollAcceleration"/>
    <variant name="SwapPrimaryButtons"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.{SensitivityType}.Changed"
    enum="PointerSensitivity" expires_after="2026-10-12">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {SensitivityType} setting when the {Peripheral}
    device settings are updated. The value ranges from 1 to 5.
  </summary>
  <token key="Peripheral">
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
  </token>
  <token key="SensitivityType">
    <variant name="ScrollSensitivity"/>
    <variant name="Sensitivity"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.{SensitivityType}.Initial"
    enum="PointerSensitivity" expires_after="2026-10-12">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value of the {SensitivityType} setting when the {Peripheral}
    device is is first initialized. The value ranges from 1 to 5.
  </summary>
  <token key="Peripheral">
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
  </token>
  <token key="SensitivityType">
    <variant name="ScrollSensitivity"/>
    <variant name="Sensitivity"/>
  </token>
</histogram>

<histogram
    name="ChromeOS.Settings.Device.{Peripheral}.{SensitivityType}.{Difference}"
    enum="PointerSensitivity" expires_after="2026-10-12">
  <owner>jimmyxgong@chromium.org</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records the value {Difference} when {SensitivityType} setting on
    {Peripheral} device is updated.
  </summary>
  <token key="Peripheral">
    <variant name="Mouse"/>
    <variant name="PointingStick"/>
  </token>
  <token key="SensitivityType">
    <variant name="ScrollSensitivity"/>
    <variant name="Sensitivity"/>
  </token>
  <token key="Difference">
    <variant name="Decrease"/>
    <variant name="Increase"/>
  </token>
</histogram>

<histogram name="ChromeOS.Sharesheet.AppCount2.{AppType}" units="apps"
    expires_after="2026-08-02">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records number of {AppType} apps found for a given intent in the Sharesheet
    when the sharesheet is invoked. Has 100 exponential buckets. (The original
    histogram had 1000 linear buckets).

    Warning: this histogram was expired from M95 to M96; data may be missing.
    Warning: this histogram was expired from 2025-06-01 to 2025-09-12; data may
    be missing.
  </summary>
  <token key="AppType">
    <variant name="All" summary="all apps"/>
    <variant name="Arc" summary="arc app"/>
    <variant name="Web" summary="web app"/>
  </token>
</histogram>

<histogram name="ChromeOS.Sharesheet.FileCount" units="files"
    expires_after="2026-08-02">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records the number of files a user is trying to share from the Sharesheet
    when the sharesheet is invoked.

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

<histogram name="ChromeOS.Sharesheet.LaunchSource"
    enum="ChromeOSSharesheetLaunchSource" expires_after="2026-08-02">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records the source from which the Sharesheet is invoked.

    Warning: this histogram was expired from M95 to M96; data may be missing.
    Warning: this histogram was expired from 2025-06-01 to 2025-09-12; data may
    be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.Sharesheet.UserAction"
    enum="ChromeOSSharesheetAction" expires_after="2026-08-02">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>Records user action on sharesheet invocations.</summary>
</histogram>

<histogram name="ChromeOS.Sharesheet.{Location}.MimeType"
    enum="ChromeOSSharesheetMimeType" expires_after="2026-08-02">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records the mime type of the content being copied at the {Location} point in
    the Sharesheet flow.

    This histogram could record multiple times in a single share in the event
    that the user shares data of mime types at once. However, a single share
    will not record the same mime type twice. E.g. sharing 2 images in one share
    will record the image mimetype once.

    Warning: this histogram was expired from 2024-09-22 to 2025-09-12; data may
    be missing.
  </summary>
  <token key="Location">
    <variant name="CopyToClipboard"
        summary="After copy to clipboard is selected"/>
    <variant name="Invocation" summary="When the sharesheet is first invoked"/>
  </token>
</histogram>

<histogram name="ChromeOS.Stability.{Severity}" enum="CrashSeverityProductType"
    expires_after="2026-07-05">
  <owner>iby@chromium.org</owner>
  <owner>chromeos-data-eng@google.com</owner>
  <summary>
    Records the severity of crashes reported by the ChromeOS crash-reporter,
    broken down by the product type that reported the crash. This is recorded
    from the CrashCollector::FinishCrash() method - refer to it for more
    details.
  </summary>
  <token key="Severity">
    <variant name="Error"/>
    <variant name="Fatal"/>
    <variant name="Info"/>
    <variant name="UnknownValue"/>
    <variant name="Unspecified"/>
    <variant name="Warning"/>
  </token>
</histogram>

<histogram name="ChromeOS.SwapManagement.SwapStart.Status" enum="AbslErrorCode"
    expires_after="never">
<!-- expires-never: Used to identify if swap starts correctly. -->

  <owner>bgeffon@google.com</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    An enum value indicates whether or not swap_management started swap
    successfully. The value is absl error code.
  </summary>
</histogram>

<histogram name="ChromeOS.SwapManagement.SwapStop.Status" enum="AbslErrorCode"
    expires_after="never">
<!-- expires-never: Used to identify if swap stops correctly. -->

  <owner>bgeffon@google.com</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    An enum value indicates whether or not swap_management stopped swap
    successfully. The value is absl error code.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.BlockedNotifiersAfterUpdate"
    units="notifiers" expires_after="2023-05-10">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    Tracks the number of blocked notifiers in the system tray after the user
    blocks one or multiple notifiers. Note that this metric records the number
    of blocked notifiers *after* the update.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.BlockedNotifiersOnOpen" units="notifiers"
    expires_after="2023-05-10">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    Tracks the number of blocked notifiers in the system tray when it is opened.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.FirstInteraction"
    enum="CrosSystemTrayFirstInteraction" expires_after="2025-07-13">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    Records the first interaction the user has with the system tray, which can
    be a click/tap on the quick settings or message center bubble. Note that
    this interaction could be at any time after the user opens the tray (e.g. 30
    seconds later before the first click).
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.Interaction"
    enum="CrosSystemTrayInteraction" expires_after="2023-08-08">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    An enum value how system tray bubble is interacted e.g. by tap (touch
    screen), or click (mouse, trackpad, etc.) Reported every time the region
    inside system tray bubble is tapped or clicked.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.NotificationsRemovedByClearAll"
    units="notifications" expires_after="2025-05-11">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    Records the number of notifications that are removed in a single clear all
    action by the user.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.ShelfPodCount" units="count"
    expires_after="2025-05-11">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    The number of status area item pods (e.g. IME, Palette, Dictation, etc.) in
    the shelf status area whenever a pod appears/disappears. This histogram is
    only logged when the device is not in tablet mode, otherwise
    ChromeOS.SystemTray.Tablet.ShelfPodCount is logged.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.Tablet.ShelfPodCount" units="count"
    expires_after="2023-12-10">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    The number of status area item pods (e.g. IME, Palette, Dictation, etc.) in
    the shelf status area whenever a pod appears/disappears. This histogram is
    only logged when the device is in tablet mode, otherwise
    ChromeOS.SystemTray.ShelfPodCount is logged.
  </summary>
</histogram>

<histogram name="ChromeOS.SystemTray.TimeToClick2" units="ms"
    expires_after="2023-04-01">
  <owner>amehfooz@chromium.org</owner>
  <owner>cros-status-area@google.com</owner>
  <summary>
    The amount of time a user took after opening the system tray bubble, to
    clicking on an item in the system tray bubble.
  </summary>
</histogram>

<histogram name="ChromeOS.TelemetryExtension.RoutineCreation"
    enum="TelemetryExtensionRoutineCategory" expires_after="2026-12-31">
  <owner>weiluanwang@google.com</owner>
  <owner>dennyh@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    The specific routine category created in the Telemetry extension. This is
    emitted every time a routine is created.
  </summary>
</histogram>

<histogram name="ChromeOS.TelemetryExtension.RoutineSupportedStatusQuery"
    enum="TelemetryExtensionRoutineCategory" expires_after="2026-12-31">
  <owner>weiluanwang@google.com</owner>
  <owner>dennyh@google.com</owner>
  <owner>lt-diagnostics@google.com</owner>
  <summary>
    The specific routine category queried in the Telemetry extension. This is
    emitted every time a client queries whether a routine category is supported.
  </summary>
</histogram>

<histogram name="ChromeOS.TypeC.CableSpeed" enum="CableSpeedMetric"
    expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents the speed of the USB Type-C cable which is connected
    to a device. It is recorded every time a new peripheral is connected.
  </summary>
</histogram>

<histogram name="ChromeOS.TypeC.ModeEntry" enum="ModeEntryMetric"
    expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents the result of the Type-C daemon (typecd) attempting
    mode entry with a connected peripheral. This metric will also record cases
    where mode entry is not supported.
  </summary>
</histogram>

<histogram name="ChromeOS.TypeC.PartnerLocation" enum="PartnerLocationMetric"
    expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents the location and order of a USB Type-C peripheral
    (partner) which is connected to a device. It is recorded every time a new
    peripheral is connected.

    Warning: this histogram was expired from March 17, 2024 to July 19, 2024;
    data may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.TypeC.PartnerType" enum="PartnerTypeMetric"
    expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents the type of a USB Type-C peripheral (the Partner)
    which is connected to a device. It is recorded every time a new peripheral
    is connected.
  </summary>
</histogram>

<histogram name="ChromeOS.TypeC.PowerSourceLocation"
    enum="PowerSourceLocationMetric" expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents the location and order of a USB Type-C power source
    which is connected to a device. It is recorded every time a new power source
    is connected.

    Warning: this histogram was expired from March 17, 2024 to July 19, 2024;
    data may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.TypeC.WrongConfiguration"
    enum="WrongConfigurationMetric" expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents events where a USB Type-C peripheral couldn't be
    configured correctly, or experienced some other unexpected behaviour. It is
    recorded every time a new peripheral is connected.

    Warning: this histogram was expired from Oct 10, 2023 to May 9, 2024; data
    may be missing.
  </summary>
</histogram>

<histogram name="ChromeOS.USB.DeviceAttached.{Status}.{USBDeviceClass}"
    enum="ChromeOSUsbEventTiming" expires_after="2027-01-01">
  <owner>allenwebb@chromium.org</owner>
  <owner>jorgelo@chromium.org</owner>
  <owner>mnissler@chromium.org</owner>
  <summary>Timing and number of USB devices attached.</summary>
  <token key="Status">
    <variant name="Recognized"
        summary="A device that was already added to the list of trusted
                 devices."/>
    <variant name="Unrecognized"
        summary="A device that was not in the list of trusted devices yet."/>
  </token>
  <token key="USBDeviceClass">
    <variant name="App"
        summary="A device with only the application specific interface class."/>
    <variant name="Audio" summary="An audio device."/>
    <variant name="AV" summary="An audio/video device."/>
    <variant name="Card" summary="A smart card reader."/>
    <variant name="Comm" summary="A communication device."/>
    <variant name="Health" summary="A personal healthcare device."/>
    <variant name="HID" summary="A human-interface device."/>
    <variant name="Hub" summary="A USB hub."/>
    <variant name="Image" summary="A still image capture device."/>
    <variant name="Misc"
        summary="A device with only the misc. interface class."/>
    <variant name="Other"
        summary="All devices not covered by the other groups."/>
    <variant name="Phys" summary="A physical device."/>
    <variant name="Print" summary="A printer."/>
    <variant name="Sec" summary="A security device (e.g. fingerprint reader)."/>
    <variant name="Storage" summary="A storage device."/>
    <variant name="Vendor"
        summary="A device with only the vendor specific interface class."/>
    <variant name="Video" summary="A video device."/>
    <variant name="Wireless" summary="A wireless controller device."/>
  </token>
</histogram>

<histogram name="ChromeOS.USB.DeviceError" enum="ChromeOSUsbDeviceError"
    expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    This value represents a USB device error detected when a device is
    disconnected.
  </summary>
</histogram>

<histogram
    name="ChromeOS.USB.ExternalDeviceAttached.{USBDeviceRecognized}.{USBDeviceClass}"
    enum="ChromeOSUsbEventTiming" expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>allenwebb@chromium.org</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    Timing and number of external USB devices attached. This is emitted each
    time an external device is attached via USB and when user logs in with an
    external device attached.
  </summary>
  <token key="USBDeviceRecognized">
    <variant name="Recognized"
        summary="A device that was already added to the list of trusted
                 devices"/>
    <variant name="Unrecognized"
        summary="A device that was not in the list of trusted devices yet"/>
  </token>
  <token key="USBDeviceClass">
    <variant name="App"
        summary="A device with only the application specific interface class"/>
    <variant name="Audio" summary="An audio device"/>
    <variant name="AV" summary="An audio/video device"/>
    <variant name="Card" summary="A smart card reader"/>
    <variant name="Comm" summary="A communication device"/>
    <variant name="Health" summary="A personal healthcare device"/>
    <variant name="HID" summary="A human-interface device"/>
    <variant name="Hub" summary="A USB hub"/>
    <variant name="Image" summary="A still image capture device"/>
    <variant name="Misc"
        summary="A device with only the misc. interface class"/>
    <variant name="Other"
        summary="All devices not covered by the other groups"/>
    <variant name="Phys" summary="A physical device"/>
    <variant name="Print" summary="A printer"/>
    <variant name="Sec" summary="A security device (e.g. fingerprint reader)"/>
    <variant name="Storage" summary="A storage device"/>
    <variant name="Vendor"
        summary="A device with only the vendor specific interface class"/>
    <variant name="Video" summary="A video device"/>
    <variant name="Wireless" summary="A wireless controller device"/>
  </token>
</histogram>

<histogram name="ChromeOS.USB.ExternalDeviceAttached.{USBPortType}.DeviceClass"
    enum="ChromeOSUsbDeviceClass" expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    USB device class per {USBPortType}. This is emitted each time an external
    device is attached via USB and when user logs in with an external device
    attached.
  </summary>
  <token key="USBPortType">
    <variant name="TypeA"/>
    <variant name="TypeC"/>
  </token>
</histogram>

<histogram name="ChromeOS.USB.ExternalDeviceAttached.{USBPortType}.DeviceSpeed"
    enum="ChromeOSUsbDeviceSpeed" expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    USB device speed per {USBPortType}. This is emitted each time an external
    device is attached via USB and when user logs in with an external device
    attached.
  </summary>
  <token key="USBPortType">
    <variant name="TypeA"/>
    <variant name="TypeC"/>
  </token>
</histogram>

<histogram name="ChromeOS.USB.UnboundInterface" enum="ChromeOSUsbDeviceClass"
    expires_after="2027-01-01">
  <owner>jthies@google.com</owner>
  <owner>chromeos-usb@google.com</owner>
  <summary>
    Recorded when a USB device enumerates an interface which is not bound to a
    USB driver when handling the device's add uevent. The recorded value is the
    interface/device class.
  </summary>
</histogram>

<histogram name="ChromeOS.UserTypeByDeviceType.LogSegment"
    enum="UserDeviceMatrix" expires_after="2027-01-17">
  <owner>bmalcolm@chromium.org</owner>
  <owner>cros-client-wa@google.com</owner>
  <summary>
    This value is reported at the start of a user session, and is a 32-bit value
    that reports the primary user account type and the device type (umanaged
    user on managed device, K12 user on an education device, etc.). The upper
    16-bits represent the device type (found at http://shortn/_3iFWcdjy0P), and
    the lower 16-bits represent the user type (found at
    http://shortn/_uK3ZM4pC0a). So a nonprofit user (0x03) on an enterprise
    device (0x02) would be 0x00020003 or 131075.
  </summary>
</histogram>

<histogram name="ChromeOS.WebAPK.{InstallType}.Result"
    enum="WebApkInstallResultChromeOS" expires_after="2024-04-28">
  <owner>ovn@google.com</owner>
  <owner>lt-web-apps-team@google.com</owner>
  <summary>
    Records the overall final state of a WebAPK {InstallType} operation on
    ChromeOS. A WebAPK is generated and installed when a PWA which supports Web
    Share Target is installed in the browser, and updated when the PWA's
    manifest updates.
  </summary>
  <token key="InstallType">
    <variant name="Install"/>
    <variant name="Update"/>
  </token>
</histogram>

<histogram name="ChromeOS.WelcomeExperienceCompanionAppState"
    enum="CompanionAppState" expires_after="2027-01-05">
  <owner>michaelcheco@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Records whether companion apps are available or installed on connected
    devices. This metric is recorded once per user session for each connected
    device that has an associated companion app.

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

<histogram name="ChromeOS.WelcomeExperienceNotificationEvent"
    enum="WelcomeExperienceNotificationEventType" expires_after="2027-01-05">
  <owner>michaelcheco@google.com</owner>
  <owner>cros-device-enablement@google.com</owner>
  <summary>
    Recorded when the user is shown or interacts with the first-time connection
    notification.
  </summary>
</histogram>

<histogram name="ChromeOS.WXMountCount" units="count"
    expires_after="2026-12-16">
  <owner>jorgelo@chromium.org</owner>
  <owner>chromeos-hardening@google.com</owner>
  <summary>
    Records the number of writable+executable mounts on the system. The count
    itself is updated every 30 seconds, but this metric is reported every two
    hours of runtime. This metric is reported regardless of whether users are
    logged in or not. This metric is only reported on Chrome OS.
  </summary>
</histogram>

<histogram name="ChromeOS.Zram.{CountMetric}" units="count"
    expires_after="never">
<!-- expires-never: Used to monitor zram key metrics in number. -->

  <owner>bgeffon@chromium.org</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    Records {CountMetric}. Recorded every 10s from boot to shutdown.
  </summary>
  <token key="CountMetric">
    <variant name="BdCount"
        summary="the number of blocks currently written on the backing device"/>
    <variant name="BdReads"
        summary="the number of block reads from backing device"/>
    <variant name="BdWrites"
        summary="the number of block writes to backing device"/>
    <variant name="FailedReads" summary="the number of failed reads in zram"/>
    <variant name="FailedWrites" summary="the number of failed writes in zram"/>
    <variant name="HugePages" summary="the number of incompressible pages"/>
    <variant name="HugePagesSince"
        summary="number of huge pages since zram set up"/>
    <variant name="InvalidIo"
        summary="number of non-page-size-aligned I/O requests in zram"/>
    <variant name="NotifyFree"
        summary="depending on device usage scenario it may account a) the
                 number of pages freed because of swap slot free
                 notifications or b) the number of pages freed because of
                 REQ_OP_DISCARD requests sent by bio"/>
    <variant name="PagesCompacted"
        summary="the number of pages freed during compaction"/>
    <variant name="SamePages"
        summary="the number of same element filled pages written to this disk"/>
    <variant name="WritebackPagesPerDay"
        summary="the number of pages written back per 24 hour period"/>
  </token>
</histogram>

<histogram name="ChromeOS.Zram.{HugePageActivityMetric}" units="pages"
    expires_after="never">
<!-- expires-never: Used to identify zram hugepage activity. -->

  <owner>raging@google.com</owner>
  <owner>bgeffon@chromium.org</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    Records the {HugePageActivityMetric} in a period of time. Recorded every 10s
    from boot to shutdown. Period is the time between recordings (10s).
  </summary>
  <token key="HugePageActivityMetric">
    <variant name="HugePagesRemoved"
        summary="number of incompressible(huge) pages removed"/>
    <variant name="HugePagesStored"
        summary="number of incompressible(huge) pages added"/>
  </token>
</histogram>

<histogram name="ChromeOS.Zram.{PctMetric}" units="%" expires_after="never">
<!-- expires-never: Used to identify zram key metrics in percentage. -->

  <owner>bgeffon@chromium.org</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    Records {PctMetric}. Recorded every 10s from boot to shutdown.
  </summary>
  <token key="PctMetric">
    <variant name="CompressedSizePct"
        summary="the overall compression ratio of data store in zram disk"/>
    <variant name="HugePagesPct"
        summary="the percentage of incompressible pages in zram"/>
    <variant name="SamePagesPct"
        summary="the percentage of stored pages which are same pages, these
                 pages have only repeated content"/>
  </token>
</histogram>

<histogram name="ChromeOS.Zram.{SizeMetric}" units="MB" expires_after="never">
<!-- expires-never: Used to identify zram key metrics in size. -->

  <owner>bgeffon@chromium.org</owner>
  <owner>chromeos-memory@google.com</owner>
  <summary>
    Records {SizeMetric}. Recorded every 10s from boot to shutdown.
  </summary>
  <token key="SizeMetric">
    <variant name="ComprDataSizeMB"
        summary="the compressed size of data stored in zram disk"/>
    <variant name="MemLimitMB"
        summary="the maximum amount of memory zram can use to store The
                 compressed data"/>
    <variant name="MemUsedMaxMB" summary="the peak memory that has zram used"/>
    <variant name="MemUsedTotalMB"
        summary="the total amount of memory in use for a zram disk"/>
    <variant name="OrigDataSizeMB"
        summary="the uncompressed size of data stored in zram disk"/>
  </token>
</histogram>

</histograms>

</histogram-configuration>
