<!--
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 Power histograms
along with a detailed description for each histogram.

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

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

<histogram-configuration>

<histograms>

<variants name="AdaptiveChargingType">
<!--
    Variants describing the type of charging used to charge to full once the hold percent is reached in Adaptive Charging.
  -->

  <variant name=""
      summary="This histogram holds historical data. More recent data can be
               found in the histogram for the `NormalCharging` variant."/>
  <variant name=".MixedCharging"/>
  <variant name=".NormalCharging"/>
  <variant name=".SlowCharging"/>
</variants>

<variants name="BatteryCapacityType">
<!--
    Variants describing the type of battery capacity.
  -->

  <variant name="Actual"
      summary="actual capacity of the battery pack. This is usually a few
               percent over the design capacity for a new battery and
               gradually degrades to 80-90% over the course of 2-4 years."/>
  <variant name="Design"
      summary="design capacity of the battery pack from the manufacturer.
               This is used to calculated the promised battery life claim
               when a device is released."/>
</variants>

<variants name="BatterySaverMode">
<!--
  Variants indicating if battery saver was enabled when the sample was recorded.
-->

  <variant name=""
      summary="all intervals no matter the battery saver mode state"/>
  <variant name=".BatterySaverDisabled"
      summary="intervals with battery saver mode disabled."/>
  <variant name=".BatterySaverEnabled"
      summary="intervals with battery saver mode enabled."/>
</variants>

<variants name="Exclusive">
<!--
  Variants indicating if battery drain can be attributed to Chrome exclusively.
-->

  <variant name="" summary=""/>
  <variant name=".Exclusive"
      summary="However, only battery drain that can be attributed exclusively
               to the time Chrome/WebView was visible is reported: The first
               drain after becoming foregrounded is not reported. As a
               result, this metric typically doesn't include drain related to
               app startup. Note that other apps can still contribute to the
               power consumed/tracked, e.g. due to using resources while they
               are backgrounded or in a multi-window context."/>
</variants>

<variants name="InputScenario">
<!--
  Variants indicating an input scenario.
-->

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

  <variant name="_NoInput" summary="the user is not providing input"/>
  <variant name="_Scroll" summary="the user scrolled"/>
  <variant name="_Tap" summary="the user tapped but not scrolled"/>
  <variant name="_Typing"
      summary="The user typed be neither tapped nor scrolled"/>
  <variant name="_UnknownInputScenario"
      summary="input state could not be detected"/>
<!-- LINT.ThenChange(/content/browser/android/battery_metrics.cc:InputScenarioSuffix) -->

</variants>

<variants name="IntervalType">
<!--
    Variants describing if the histogram contains all samples, only the first
    sample, or only subsequent ones.
  -->

  <variant name="" summary="all recorded samples"/>
  <variant name=".Initial"
      summary="only the first sample recorded of the current Chrome
               execution. The discharge potentially covers an interval of
               time during which Chrome wasn't yet running"/>
  <variant name=".Periodic"
      summary="every sample recorded after the first one"/>
</variants>

<variants name="LoadingScenario">
<!--
  Variants indicating a page loading scenario.
-->

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

  <variant name=".BackgroundPageLoading"
      summary="a background (but not focused or visible) page was loading for
               some part of the 30s interval"/>
  <variant name=".FocusedPageLoading"
      summary="a focused page was loading for some part of the 30s interval"/>
  <variant name=".NoPageLoading" summary="no page is loading"/>
  <variant name=".UnknownLoadingScenario"
      summary="page loading state could not be detected"/>
  <variant name=".VisiblePageLoading"
      summary="a visible (but not focused) page was loading for some part of
               the 30s interval"/>
<!-- LINT.ThenChange(/content/browser/android/battery_metrics.cc:LoadingScenarioSuffix) -->

</variants>

<variants name="ProcessName">
  <variant name="BrowserProcess" summary=""/>
  <variant name="GPUProcess" summary=""/>
  <variant name="NetworkProcess" summary=""/>
  <variant name="PluginProcess" summary=""/>
  <variant name="PPAPIProcess" summary=""/>
  <variant name="RendererExtensionEventProcess" summary=""/>
  <variant name="RendererExtensionPersistentProcess" summary=""/>
  <variant name="RendererProcess" summary=""/>
<!-- "Total" variant used to exist but was folded into the histogram names and could not be made obsolete. -->

  <variant name="UtilityProcess" summary=""/>
  <variant name="WorkerProcess" summary=""/>
</variants>

<variants name="Subsystem">
<!-- LINT.IfChange(SubsystemSuffix) -->

  <variant name="" summary="all subsystems combined"/>
  <variant name=".Cpu" summary="CPU (all cores)"/>
  <variant name=".Display" summary="Display"/>
  <variant name=".Gpu" summary="GPU"/>
  <variant name=".Other"
      summary="Subsystems which aren't CPUs, GPUs, or display."/>
<!-- LINT.ThenChange(/content/browser/android/battery_metrics.cc:SubsystemSuffix) -->

<!--
  Variants indicating a device's subsystem for power attribution (e.g. CPU, display, etc.)
-->

</variants>

<variants name="UsageScenario">
<!--
  Variants describing the usage scenario for a time interval. Consider updating
  both "UsageScenario10Sec" in this file, and "UsageScenario" in
  tools/metrics/histograms/metadata/browser/histograms.xml when updating this.
-->

  <variant name="" summary="all intervals no matter the usage scenario"/>
  <variant name=".AllTabsHidden_Audio"
      summary="intervals during which there was no visible tab and no video
               capture, but there was audio"/>
  <variant name=".AllTabsHidden_NoVideoCaptureOrAudio"
      summary="intervals during which there was no visible tab, no video
               capture and no audio"/>
  <variant name=".AllTabsHidden_VideoCapture"
      summary="intervals during which there was no visible tab, but there was
               video capture"/>
  <variant name=".Audio"
      summary="intervals during which there was audio and at least 1 visible
               tab, but there was no video playback or video capture"/>
  <variant name=".EmbeddedVideo_NoNavigation"
      summary="intervals during which a video played in a visible tab and
               there was no navigation and no video capture"/>
  <variant name=".EmbeddedVideo_WithNavigation"
      summary="intervals during which a video played in a visible tab and
               there was a navigation, but no video capture"/>
  <variant name=".FullscreenVideo"
      summary="intervals during which a video played in fullscreen and there
               was no video capture"/>
  <variant name=".Interaction"
      summary="intervals during which there was at least 1 visible tab and a
               user interaction, but no navigation, audio, video playback or
               video capture"/>
  <variant name=".Navigation"
      summary="intervals during which there was at least 1 visible tab and a
               navigation, but no audio, video playback or video capture"/>
  <variant name=".Passive"
      summary="intervals during which there was at least 1 visible tab, but
               no user interaction, navigation, audio, video playback or
               video capture"/>
  <variant name=".VideoCapture"
      summary="intervals during which there was at least 1 visible tab and
               video capture"/>
  <variant name=".ZeroWindow"
      summary="intervals during which there was no window"/>
</variants>

<variants name="UsageScenario10sec">
<!--
  Variants describing the usage scenario for a 10 seconds intervals. Contains
  more variants than "UsageScenario".
-->

  <variant name="" summary="10 seconds runtime intervals"/>
  <variant name=".AllTabsHidden_Audio"
      summary="10 seconds runtime intervals during which there was no visible
               tab and no video capture, but there was audio"/>
  <variant name=".AllTabsHidden_NoVideoCaptureOrAudio"
      summary="10 seconds runtime intervals ending when there was no visible
               tab, no video capture and no audio in the last 2 minutes"/>
  <variant name=".AllTabsHidden_NoVideoCaptureOrAudio_Recent"
      summary="10 seconds runtime intervals during which there was no visible
               tab, no video capture and no audio, but there was one those in
               the last 2 minutes"/>
  <variant name=".AllTabsHidden_VideoCapture"
      summary="10 seconds runtime intervals during which there was no visible
               tab, but there was video capture"/>
  <variant name=".Audio"
      summary="10 seconds runtime intervals during which there was audio and
               at least 1 visible tab, but there was no video playback or
               video capture"/>
  <variant name=".EmbeddedVideo_NoNavigation"
      summary="10 seconds runtime intervals during which a video played in a
               visible tab and there was no navigation and no video capture"/>
  <variant name=".EmbeddedVideo_WithNavigation"
      summary="10 seconds runtime intervals during which a video played in a
               visible tab and there was a navigation, but no video capture"/>
  <variant name=".FullscreenVideo"
      summary="10 seconds runtime intervals during which a video played in
               fullscreen and there was no video capture"/>
  <variant name=".Interaction"
      summary="10 seconds runtime intervals during which there was at least 1
               visible tab and a user interaction, but no navigation, audio,
               video playback or video capture"/>
  <variant name=".Navigation"
      summary="10 seconds runtime intervals during which there was at least 1
               visible tab and a navigation, but no audio, video playback or
               video capture"/>
  <variant name=".Passive"
      summary="10 seconds runtime intervals during which there was at least 1
               visible tab, but no user interaction, navigation, audio, video
               playback or video capture"/>
  <variant name=".VideoCapture"
      summary="10 seconds runtime intervals during which there was at least 1
               visible tab and video capture"/>
  <variant name=".ZeroWindow"
      summary="10 seconds runtime intervals ending when there was no window
               in the last 2 minutes"/>
  <variant name=".ZeroWindow_Recent"
      summary="10 seconds runtime intervals during which there was no window,
               but there was in the last 2 minutes"/>
</variants>

<!--
Taken from the list in UtilityProcessNameHash enum in
tools/metrics/histograms/metadata/stability/enums.xml
-->

<variants name="UtilityProcessSubtype">
  <variant name="auction_worklet.mojom.AuctionWorkletService"/>
  <variant name="audio"/>
  <variant name="audio.mojom.AudioService"/>
  <variant name="autoclick_app"/>
  <variant name="catalog"/>
  <variant name="cdm"/>
  <variant name="chrome.mojom.DocumentAnalysisService"/>
  <variant name="chrome.mojom.FileUtilService"/>
  <variant name="chrome.mojom.ProcessorMetrics"/>
  <variant name="chrome.mojom.ProfileImport"/>
  <variant name="chrome.mojom.RemovableStorageWriter"/>
  <variant name="chrome.mojom.UtilReadIcon"/>
  <variant name="chrome.mojom.UtilWin"/>
  <variant name="chrome_printing"/>
  <variant name="content_gpu"/>
  <variant name="data_decoder"/>
  <variant name="data_decoder.mojom.DataDecoderService"/>
  <variant name="device"/>
  <variant name="device.mojom.XRDeviceService"/>
  <variant name="echo"/>
  <variant name="file"/>
  <variant name="file_util"/>
  <variant name="font_service"/>
  <variant name="heap_profiling"/>
  <variant name="identity"/>
  <variant name="local_state"/>
  <variant name="media.mojom.CdmService"/>
  <variant name="media.mojom.CdmServiceBroker"/>
  <variant name="media.mojom.MediaFoundationServiceBroker"/>
  <variant name="media.mojom.SpeechRecognitionService"/>
  <variant name="media_gallery_util"/>
  <variant name="metrics"/>
  <variant name="mirroring.mojom.MirroringService"/>
  <variant name="mus_demo"/>
  <variant name="network"/>
  <variant name="network.mojom.NetworkService"/>
  <variant name="on_device_model.mojom.OnDeviceModelService"/>
  <variant name="patch.mojom.FilePatcher"/>
  <variant name="patch_service"/>
  <variant name="pdf_compositor"/>
  <variant name="preferences"/>
  <variant name="printing.mojom.PrintCompositor"/>
  <variant name="printing.mojom.PrintingService"/>
  <variant name="profile_import"/>
  <variant name="proxy_resolver"/>
  <variant name="proxy_resolver.mojom.ProxyResolverFactory"/>
  <variant name="quarantine.mojom.Quarantine"/>
  <variant name="quick_launch_app"/>
  <variant name="removable_storage_writer"/>
  <variant name="resource_coordinator"/>
  <variant name="screen_ai.mojom.ScreenAIServiceFactory"/>
  <variant name="service_manager"/>
  <variant name="shape_detection"/>
  <variant name="sharing.mojom.Sharing"/>
  <variant name="shortcut_viewer_app"/>
  <variant name="storage.mojom.StorageService"/>
  <variant name="tap_visualizer_app"/>
  <variant name="tracing"/>
  <variant name="tracing.mojom.TracingService"/>
  <variant name="ui"/>
<!-- Catch all for processes not explicitly listed -->

  <variant name="Unknown"/>
  <variant name="unzip.mojom.Unzipper"/>
  <variant name="unzip_service"/>
  <variant name="user_id"/>
  <variant name="util_win"/>
  <variant name="video_capture"/>
  <variant name="video_capture.mojom.VideoCaptureService"/>
  <variant name="viz"/>
</variants>

<histogram name="PerformanceMonitor.AverageCPU10.Total{UsageScenario}"
    units="1/100 %" expires_after="2027-02-28">
  <owner>fdoray@chromium.org</owner>
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    See definition of PerformanceClass.AverageCPU10.ProcessName. This is
    recorded every 2 minutes for {UsageScenario} (see
    go/chrome_power_use_per_scenario).
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
</histogram>

<histogram name="PerformanceMonitor.AverageCPU10.UtilityProcess.{Subtype}"
    units="1/100 %" expires_after="2027-02-13">
  <owner>anthonyvd@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Sum of the average CPU utilization of each utility process of the subtype
    {Subtype}, read out at each two-minute interval. The utilization is in the
    0-100% range per CPU, which is then summed up and multiplied by 100. I.e. 4
    cores busy at 25% each will read as 25 * 4 * 100 = 10000. Capped at 160,000
    (equivalent to 16 cores fully loaded) to accomodate the long tail of heavy
    workloads.

    If no process of type {Subtype} existed during the interval, a sample of
    zero is still emitted.

    Not recorded on Android. On Windows, this is not recorded on CPUs that do
    not support constant rate TSC.
  </summary>
  <token key="Subtype" variants="UtilityProcessSubtype"/>
</histogram>

<histogram name="PerformanceMonitor.AverageCPU10.{ProcessName}" units="1/100 %"
    expires_after="2027-02-28">
  <owner>fdoray@chromium.org</owner>
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Sum of the average CPU utilization of each process of the type
    {ProcessName}, read out at each two-minute interval. The utilization is in
    the 0-100% range per CPU, which is then summed up and multiplied by 100.
    I.e. 4 cores busy at 25% each will read as 25 * 4 * 100 = 10000. Capped at
    160,000 (equivalent to 16 cores fully loaded) to accomodate the long tail of
    heavy workloads.

    If no process of type {ProcessName} existed during the interval, a sample of
    zero is still emitted.

    Not recorded on Android. On Windows, this is not recorded on CPUs that do
    not support constant rate TSC.
  </summary>
  <token key="ProcessName" variants="ProcessName"/>
</histogram>

<histogram name="PerformanceMonitor.HasPreciseCPUUsage" enum="Boolean"
    expires_after="2022-09-30">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Records whether or not the CPU supports constant rate TSC, which allows a
    more precise calculation of the CPU usage of a process. Recorded during
    startup when the ProcessMonitor is instantiated.

    Only Recorded on Windows.
  </summary>
</histogram>

<histogram name="PerformanceMonitor.IdleWakeups2.Total{UsageScenario}"
    units="WakeupsPerSecond" expires_after="2026-11-29">
  <owner>olivierli@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    See definition of PerformanceMonitor.IdleWakeups2.ProcessName. This is
    recorded every 2 minutes for {UsageScenario} (see
    go/chrome_power_use_per_scenario).
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
</histogram>

<histogram name="PerformanceMonitor.IdleWakeups2.{ProcessName}"
    units="WakeupsPerSecond" expires_after="2025-04-13">
  <owner>olivierli@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    The sum of the average CPU idle wakeups per second of each process of the
    type {ProcessName}, sampled every two minutes.

    NOTE: This metric has one signigicant limitation, it doesn't report the CPU
    usage of processes that terminate before the end of the interval. This means
    that short lived processes will rarely be included in the data. Furthermore,
    we know that short-lived processes are very common (see
    Renderer.ProcessLifetime). A future version of this metric will address this
    limitation.
  </summary>
  <token key="ProcessName" variants="ProcessName"/>
</histogram>

<histogram
    name="PerformanceMonitor.PackageExitIdleWakeups2.Total{UsageScenario}"
    units="WakeupsPerSecond" expires_after="2025-08-24">
  <owner>olivierli@chromium.org</owner>
  <owner>catan-team@chromium.orgg</owner>
  <summary>
    See definition of PerformanceMonitor.PackageExitIdleWakeups2.ProcessName.
    This is recorded every 2 minutes for {UsageScenario} (see
    go/chrome_power_use_per_scenario).
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
</histogram>

<histogram name="PerformanceMonitor.PackageExitIdleWakeups2.{ProcessName}"
    units="WakeupsPerSecond" expires_after="2025-06-22">
  <owner>olivierli@chromium.org</owner>
  <owner>catan-team@chromium.orgg</owner>
  <summary>
    (Mac only) The sum of the average package exit idle wakeups per second of
    each process of the type {ProcessName}, sampled every two minutes. This is a
    subset of wakeups that indicate that the processor complex was taken out of
    low-power state. For more info, see the powermetrics man page on macOS.

    NOTE: This metric has one signigicant limitation, it doesn't report the CPU
    usage of processes that terminate before the end of the interval. This means
    that short lived processes will rarely be included in the data. Furthermore,
    we know that short-lived processes are very common (see
    Renderer.ProcessLifetime). A future version of this metric will address this
    limitation.
  </summary>
  <token key="ProcessName" variants="ProcessName"/>
</histogram>

<histogram name="PerformanceMonitor.UsageScenario.LongInterval"
    enum="PerformanceMonitor.UsageScenario.LongInterval"
    expires_after="2027-02-07">
  <owner>olivierli@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Record the usage scenario that applies to the last 2 mins of Chrome use.
    Recorded every two minutes on a timer. For more information on user
    scenarios see go/chrome_power_use_per_scenario.

    Values in the enum match the variants present in the
    &quot;UsageScenario&quot; variants.
  </summary>
</histogram>

<histogram
    name="Power.AdaptiveChargingBatteryPercentageOnUnplug{AdaptiveChargingType}"
    units="%" expires_after="2023-07-30">
  <owner>dbasehore@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The battery percentage of the system when the AC charger is unplugged. This
    metric is recorded upon unplug of an AC charger, unless the system is
    shutdown. Since this metric is only reported when the battery percentage has
    reached the hold percent (the battery charge % that charging is delayed at,
    which is 80%) for Adaptive Charging, most values should be high.

    We record this under several variants, which split this result by the type
    of charging that is used to charge to full once the hold percent is reached.
    Normal charging uses the default rate of charging, slow charging uses a
    battery charge current limit of 0.1C (10% of battery design capacity) and
    mixed charging is a combination of both normal and slow charging which can
    occur when the unplug time prediction moves sooner, resulting in the switch
    from slow charging to normal charging in order to finish charging by the
    unplug time predicted.

    {AdaptiveChargingType}
  </summary>
  <token key="AdaptiveChargingType" variants="AdaptiveChargingType"/>
</histogram>

<histogram
    name="Power.AdaptiveChargingDelayDelta.{AdaptiveChargingState}.{OnTimeStatus}"
    units="minutes" expires_after="2027-02-07">
  <owner>dbasehore@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The difference between the correct delay time and the actual delay time for
    Adaptive Charging, as computed by (correct delay - actual delay) in minutes.
    Adaptive Charging delays charging from a hold charge percentage, 80%, to
    full if it predicts the charger will be unplugged more than 3 hours in the
    future. The correct delay time ends exactly 3 hours before the user unplugs
    the charger, or 2 hours before the user unplugs if the available time is
    less than 3 hours. This metric is recorded upon unplug of an AC charger, if
    the hold percent was reached.

    We record this under several variants, which split this result by whether
    Adaptive Charging is enabled and active, a heuristic disabled the feature,
    the user canceled the feature for this use, the user disabled the feature,
    or the feature is not supported on the hardware class. We still record the
    metric if the feature is not supported, since we may backport support to
    older systems, and we'd like to know how well the ML model does before
    enabling support.

    Since metrics don't work with negative values, this is additionally split
    across Late and Early variants. The absolute values of negatives are
    reported under the Late variant. Positive and 0 values are reported under
    the Early variant.
  </summary>
  <token key="AdaptiveChargingState">
    <variant name="Active"/>
    <variant name="HeuristicDisabled"/>
    <variant name="NotSupported"/>
    <variant name="UserCanceled"/>
    <variant name="UserDisabled"/>
  </token>
  <token key="OnTimeStatus">
    <variant name="Early"/>
    <variant name="Late"/>
  </token>
</histogram>

<histogram name="Power.AdaptiveChargingMinutes.{ReportType}" units="minutes"
    expires_after="2027-02-07">
  <owner>dbasehore@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Total time, in minutes, for Adaptive Charging. This metric is recorded upon
    unplug unplug of an AC charger, if the hold percent (the battery charge %
    that charging is delayed at, which is 80%) for Adaptive Charging was
    reached. This is split by two variants, Available and Delay, which report
    the available time for Adaptive Charging and the delay time for Adaptive
    Charging.
  </summary>
  <token key="ReportType">
    <variant name="Available"/>
    <variant name="Delay"/>
  </token>
</histogram>

<histogram
    name="Power.AdaptiveChargingMinutesDelta.{AdaptiveChargingState}.{OnTimeStatus}"
    units="minutes" expires_after="2023-06-13">
  <owner>dbasehore@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The difference, in minutes, between when the AC charger is unplugged and
    when it was predicted to be unplugged by the Adaptive Charging feature.
    Computed as (actual - predicted). This metric is recorded upon unplug of an
    AC charger, if the hold percent (the battery charge % that charging is
    delayed at, which is 80%) for Adaptive Charging was reached.

    We record this under several variants, which split this result by whether
    Adaptive Charging is enabled and active, a heuristic disabled the feature,
    the user canceled the feature for this use, the user disabled the feature,
    or the feature is not supported on the hardware class. We still record the
    metric if the feature is not supported, since we may backport support to
    older systems, and we'd like to know how well the ML model does before
    enabling support.

    Since metrics don't work with negative values, this is additionally split
    across Late and Early variants. The absolute values of negatives are
    reported under the Late variant. Positive and 0 values are reported under
    the Early variant.
  </summary>
  <token key="AdaptiveChargingState">
    <variant name="Active"/>
    <variant name="HeuristicDisabled"/>
    <variant name="NotSupported"/>
    <variant name="UserCanceled"/>
    <variant name="UserDisabled"/>
  </token>
  <token key="OnTimeStatus">
    <variant name="Early"/>
    <variant name="Late"/>
  </token>
</histogram>

<histogram name="Power.AdaptiveChargingMinutesFullOnAC.{AdaptiveChargingState}"
    units="minutes" expires_after="2023-10-26">
  <owner>dbasehore@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    This shows the time spent fully charged while on AC in minutes.

    We record this under several variants, which split this result by whether
    Adaptive Charging is enabled and active, a heuristic disabled the feature,
    the user canceled the feature for this use, the user disabled the feature,
    or the feature is not supported on the hardware class. We still record the
    metric if the feature is not supported, since we may backport support to
    older systems, and we'd like to know how well the ML model does before
    enabling support.
  </summary>
  <token key="AdaptiveChargingState">
    <variant name="Active"/>
    <variant name="HeuristicDisabled"/>
    <variant name="NotSupported"/>
    <variant name="UserCanceled"/>
    <variant name="UserDisabled"/>
  </token>
</histogram>

<histogram name="Power.AdaptiveChargingMinutesToFull{AdaptiveChargingType}"
    units="minutes" expires_after="2023-07-30">
  <owner>dbasehore@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The time it takes to fully charge from the Adaptive Charging hold percent
    (the battery charge % that we delay charging at). This is recorded to make
    sure that we leave enough time for systems to fully charge to full from the
    hold percent.

    We record this under several variants, which split this result by the type
    of charging that is used to charge to full once the hold percent is reached.
    Normal charging uses the default rate of charging, slow charging uses a
    battery charge current limit of 0.1C (10% of battery design capacity) and
    mixed charging is a combination of both normal and slow charging which can
    occur when the unplug time prediction moves sooner, resulting in the switch
    from slow charging to normal charging in order to finish charging by the
    unplug time predicted.

    {AdaptiveChargingType}
  </summary>
  <token key="AdaptiveChargingType" variants="AdaptiveChargingType"/>
</histogram>

<histogram name="Power.AmbientLightOnResume" units="lux"
    expires_after="2027-01-03">
  <owner>bkersten@chromium.org</owner>
  <owner>slangley@chromium.org</owner>
  <summary>
    The Ambient Light Sensor reading sampled on resume from suspend. Only
    applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="Power.AvgCpuLoad.{ProcessType}" units="%"
    expires_after="2027-01-03">
  <owner>eseckler@chromium.org</owner>
  <owner>khokhlov@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Records the average CPU load caused by the corresponding process over the
    last 30 (or more) seconds. Emitted at the end of each such period, so not
    more often that once in 30 sec. Note that CPU load can be greater than 100%
    on milti-core systems.
  </summary>
  <token key="ProcessType">
    <variant name="Browser"/>
    <variant name="GPU"/>
    <variant name="Other"/>
    <variant name="Renderer"/>
  </token>
</histogram>

<histogram name="Power.BacklightLevel{PrivacyScreenState}{PowerSource}"
    units="%" expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>mqg@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The level of the backlight as a percentage {PrivacyScreenState} when the
    device is {PowerSource}. Sampled every 30 seconds. Chrome OS only.
  </summary>
  <token key="PrivacyScreenState">
    <variant name="" summary=""/>
    <variant name="PrivacyScreenDisabled"
        summary="with privacy screens disabled for ChromeOS devices with
                 privacy screens only"/>
    <variant name="PrivacyScreenEnabled"
        summary="with privacy screens enabled for ChromeOS devices with
                 privacy screens only"/>
  </token>
  <token key="PowerSource">
    <variant name="OnAC" summary="on AC"/>
    <variant name="OnBattery" summary="powered by battery"/>
  </token>
</histogram>

<histogram name="Power.BatteryCapacity.{BatteryCapacityType}" units="mWh"
    expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS {BatteryCapacityType} battery capacity in milliwatt-hours.
  </summary>
  <token key="BatteryCapacityType" variants="BatteryCapacityType"/>
</histogram>

<histogram name="Power.BatteryChargeHealth" units="%"
    expires_after="2027-01-17">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS battery charge health percentage. Sampled once when device starts
    charging.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeGranularityAvailable"
    enum="BooleanAvailable" expires_after="2024-02-11">
  <owner>pmonette@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    The availability of the battery discharge granularity. If true,
    Power.BatteryDischargeGranularity is reported for this client.

    This is reported at the end of every valid 1 minute interval. An invalid
    interval is one that deviate too much from 1 minute, which can be caused by
    the computer going to sleep, or the OS sending multiple notifications in a
    row.

    Reported only on Windows, when a single battery is installed and the
    operating system says that the unit is mWh.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeGranularityIsOrdered"
    enum="BooleanOrdered" expires_after="2024-02-11">
  <owner>pmonette@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    Reports if the battery discharge granularities are ordered according to the
    MSDN documentation.

    The documentation states that the most coarse granularity is the first
    element among all reporting scales.

    Reported only on Windows, every time the battery state is queried.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeGranularityMilliwattHours2"
    units="milliwatt-hours" expires_after="2024-04-28">
  <owner>pmonette@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    The granularity of the battery discharge rate value as reported by the
    operating system, if available. Always the most coarse granularity among all
    the reporting scales of the battery, regardless of the current capacity.

    This is reported at the end of every valid 1 minute interval. An invalid
    interval is one that deviate too much from 1 minute, which can be caused by
    the computer going to sleep, or the OS sending multiple notifications in a
    row.

    Reported only on Windows, when a single battery is installed and the
    operating system says that the unit is mWh.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeGranularityRelative2"
    units="hundredth of a percent" expires_after="2024-02-11">
  <owner>pmonette@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    The granularity of the battery discharge rate value as reported by the
    operating system, if available. Always the most coarse granularity among all
    the reporting scales of the battery, regardless of the current capacity.

    This is reported at the end of every valid 1 minute interval. An invalid
    interval is one that deviate too much from 1 minute, which can be caused by
    the computer going to sleep, or the OS sending multiple notifications in a
    row.

    Reported only on Windows, when a single battery is installed and the
    operating system says that the unit is mWh.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeMode5.TenMinutes"
    enum="BatteryDischargeMode" expires_after="2024-03-31">
  <owner>pmonette@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    Battery discharge mode describing whether
    Power.BatteryDischargeRateMilliwatts6.TenMinutes could be reported, and why.
    Windows only.

    This is reported when a 1 minute periodic timer fires and at least 10
    minutes have elapsed since the last report or startup.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeMode5{UsageScenario}{IntervalType}"
    enum="BatteryDischargeMode" expires_after="2027-02-07">
  <owner>etiennep@chromium.org</owner>
  <owner>olivierli@chromium.org</owner>
  <summary>
    Battery discharge mode describing whether
    Power.BatteryDischargeRateMilliwatts6 could be reported, and why.

    On Windows and ChromeOS, this is reported when a 1 minute periodic timer
    fires. On macOS, this is reported when an IOPMPowerSource state change
    notification fires (typically every minute but may happen more frequently).

    This is recorded for {UsageScenario}.

    This contains {IntervalType}.
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
  <token key="IntervalType" variants="IntervalType"/>
</histogram>

<histogram name="Power.BatteryDischargeRate" units="mW"
    expires_after="2027-01-03">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS battery discharge rate in mW sampled every 30 seconds while the
    device runs on battery.
  </summary>
</histogram>

<histogram name="Power.BatteryDischargeRateMilliwatts6.TenMinutes"
    units="milliwatts" expires_after="2027-01-17">
  <owner>pmonette@chromium.org</owner>
  <owner>fdoray@chromium.org</owner>
  <summary>
    Battery discharge in milliwatts over a 10 minutes interval. Windows only.

    Example: Used capacity at the beginning of the interval: 1000 mWh, used
    capacity at the end of the interval: 1010 mWh, Discharge: (1010-1000) = 10
    mWh per 10 minutes, reported value: 60 mW.

    Reported when &quot;discharging&quot; is reported to
    Power.BatteryDischargeMode5.TenMinutes.
  </summary>
</histogram>

<histogram
    name="Power.BatteryDischargeRateMilliwatts6{UsageScenario}{IntervalType}{BatterySaverMode}"
    units="milliwatts" expires_after="2027-01-10">
  <owner>etiennep@chromium.org</owner>
  <owner>olivierli@chromium.org</owner>
  <owner>lgrey@chromium.org</owner>
  <summary>
    Battery discharge in milliwatts over a 1 minute interval.

    Example: Used capacity at the beginning of the interval: 1000 mWh, used
    capacity at the end of the interval: 1010 mWh, Discharge: (1010-1000) = 10
    mWh per 1 minute, reported value: 600 mW.

    Reported when &quot;discharging&quot; is reported to
    Power.BatteryDischargeMode5.

    This is recorded for {UsageScenario}.

    This contains {IntervalType}.

    This is recorded for {BatterySaverMode}.
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
  <token key="IntervalType" variants="IntervalType"/>
  <token key="BatterySaverMode" variants="BatterySaverMode"/>
</histogram>

<histogram
    name="Power.BatteryDischargeRatePreciseMilliwatts{UsageScenario}{IntervalType}{BatterySaverMode}"
    units="milliwatts" expires_after="2027-02-07">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Battery discharge in milliwatts, example: - Used capacity at the beginning
    of the interval: 1000 mWh; - Used capacity at the end of the interval: 1010
    mWh; - Discharge: (1010-1000) = 10 mWh per minute - Reported value: 600 mW.

    This is reported at the end of every valid 1 minute interval. An invalid
    interval is one that deviate too much from 1 minute, which can be caused by
    the computer going to sleep, or the OS sending multiple notifications in a
    row.

    Clients with a coarse battery discharge granularity (&gt;17 mWh) are
    excluded.

    This is recorded for {UsageScenario}.

    This contains {IntervalType}.

    This is recorded for {BatterySaverMode}.
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
  <token key="IntervalType" variants="IntervalType"/>
  <token key="BatterySaverMode" variants="BatterySaverMode"/>
</histogram>

<histogram
    name="Power.BatteryDischargeRateRelative5{UsageScenario}{IntervalType}{BatterySaverMode}"
    units="hundredth of percent" expires_after="2027-01-10">
  <owner>etiennep@chromium.org</owner>
  <owner>olivierli@chromium.org</owner>
  <owner>lgrey@chromium.org</owner>
  <summary>
    Battery discharge rate per minute, with 1/10000 of full charge resolution,
    example: - Battery capacity = 4000 mAh; - Battery charge at the beginning of
    the interval: 3900 mAh; - Battery charge at the end of the interval: 3700
    mAh; - Discharge proportion: (3900-3700) / 4000 = 0.05 - Reported value:
    500.

    This is reported at the end of every valid 1 minute interval. An invalid
    interval is one that deviate too much from 1 minute, which can be caused by
    the computer going to sleep, or the OS sending multiple notifications in a
    row.

    This is recorded for {UsageScenario}.

    This contains {IntervalType}.

    This is recorded for {BatterySaverMode}.
  </summary>
  <token key="UsageScenario" variants="UsageScenario"/>
  <token key="IntervalType" variants="IntervalType"/>
  <token key="BatterySaverMode" variants="BatterySaverMode"/>
</histogram>

<histogram name="Power.BatteryDischargeRateWhileSuspended" units="mW"
    expires_after="2027-01-17">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS battery discharge rate in mW while the system was suspended,
    sampled at resume. Only reported if the system was on battery power both
    before suspending and after resuming, if the energy level didn't increase
    while suspended (which would indicate that an AC adapter was connected), and
    if the system was suspended for at least a minute.
  </summary>
</histogram>

<histogram name="Power.BatteryLife.Detail.RollingAverage.{BatteryCapacityType}"
    units="minute" expires_after="2026-02-22">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    ChromeOS rolling average of the battery life while in active state, measured
    in minutes using the {BatteryCapacityType}.

    This is calculated by taking the average of the last 10 samples of the
    Power.BatteryLife.{BatteryCapacityType} metrics.

    The detail version put the data outside of 5-13 hours in to the underflow
    and overflow bucket to have more data resolution at the median range.
  </summary>
  <token key="BatteryCapacityType" variants="BatteryCapacityType"/>
</histogram>

<histogram name="Power.BatteryLife.Detail.{BatteryCapacityType}" units="minute"
    expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS battery life while in active state, measured in minutes using the
    {BatteryCapacityType}.

    This is calculated using size of the battery divided by the battery
    discharge rate sampling, i.e., Power.BatteryDischargeRate. Note that the
    size of the battery is derated by the low battery shutdown percent.

    The detail version put the data outside of 5-13 hours in to the underflow
    and overflow bucket to have more data resolution at the median range.
  </summary>
  <token key="BatteryCapacityType" variants="BatteryCapacityType"/>
</histogram>

<histogram name="Power.BatteryLife.RollingAverage.{BatteryCapacityType}"
    units="minute" expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    ChromeOS rolling average of the battery life while in active state, measured
    in minutes using the {BatteryCapacityType}.

    This is calculated by taking the average of the last 10 samples of the
    Power.BatteryLife.{BatteryCapacityType} metrics.
  </summary>
  <token key="BatteryCapacityType" variants="BatteryCapacityType"/>
</histogram>

<histogram name="Power.BatteryLife.{BatteryCapacityType}" units="minute"
    expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <improvement direction="HIGHER_IS_BETTER"/>
  <summary>
    Chrome OS battery life while in active state, measured in minutes using the
    {BatteryCapacityType}.

    This is calculated using size of the battery divided by the battery
    discharge rate sampling, i.e., Power.BatteryDischargeRate. Note that the
    size of the battery is derated by the low battery shutdown percent.
  </summary>
  <token key="BatteryCapacityType" variants="BatteryCapacityType"/>
</histogram>

<histogram name="Power.BatteryLifeWhileSuspended.{BatteryCapacityType}"
    units="hour" expires_after="2027-01-03">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS battery life while suspended, measured in hours using the
    {BatteryCapacityType}.

    This is calculated using size of the battery divided by the battery
    discharge rate sampling, i.e., Power.BatteryDischargeRateWhileSuspended.
  </summary>
  <token key="BatteryCapacityType" variants="BatteryCapacityType"/>
</histogram>

<histogram name="Power.BatteryPercentDrop" units="%" expires_after="2025-08-24">
  <owner>ryansturm@chromium.org</owner>
  <owner>tbansal@chromium.org</owner>
  <summary>
    The drop in battery since the last operating system battery update as a
    percent of total device battery. If the drop is not a round percentage
    point, the unreported amount will be carried over until the battery level
    drops by a full percentage point. Recorded when the battery level drops by
    more than a percentage point. If the user charges the device, the battery
    tracking is reset (the amount carried over is reset). This histograms sum is
    most likely the most useful figure when comparing experiments. Recorded even
    when Chrome is in the background.
  </summary>
</histogram>

<histogram name="Power.BatteryRemainingWhenChargeStarts" units="%"
    expires_after="2026-03-08">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Chrome OS remaining battery charge as percent of the maximum battery charge,
    sampled when charging starts.

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

<histogram name="Power.BatterySaver.UserBrightenedSec" units="seconds"
    expires_after="2027-07-26">
  <owner>zactu@google.com</owner>
  <owner>chromeos-bsm@google.com</owner>
  <summary>
    ChromeOS time from Battery Saver activation that it took the user to
    increase the backlight brightness above what Battery Saver set.
  </summary>
</histogram>

<histogram name="Power.ConnectedChargingPorts"
    enum="PowerConnectedChargingPorts" expires_after="2026-04-10">
  <owner>bleung@chromium.org</owner>
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    Connected charging ports on Chrome OS. A sample is reported every time that
    the power manager polls sysfs (typically every 30 seconds). Ordinals are
    assigned based on the lexicographical ordering of power supply names from
    sysfs and have no implied correspondence with ports' physical locations. For
    example, with ports 'CROS_USB_PD_CHARGER0' and 'CROS_USB_PD_CHARGER1',
    'first' refers to the former and 'second' to the latter. To determine a
    port's physical location, see the powerd charging_ports pref in the device's
    overlay.

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

<histogram name="Power.CpuTimeSecondsPerProcessType2" enum="ShortProcessType"
    expires_after="2027-01-24">
  <owner>eseckler@chromium.org</owner>
  <owner>skyostil@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Total seconds of CPU time consumed by Chrome, split by process type.
    Currently only implemented on Android. For every second of CPU time consumed
    by one process, a sample is recorded into the bucket for the process's type.
    Samples are recorded periodically depending on the task load of each
    process's main thread. The histogram thus shows the total sum of CPU time
    seconds spent per process type across all users.

    For a histogram of daily per-user values, select &quot;Per-Client
    Aggregation Mode&quot;.
  </summary>
</histogram>

<histogram name="Power.CpuTimeSecondsPerProcessType2.{Visibility}"
    enum="ShortProcessType" expires_after="2027-02-07">
  <owner>eseckler@chromium.org</owner>
  <owner>skyostil@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Total seconds of CPU time consumed by Chrome/WebView in the {Visibility}
    state, split by process type. Currently only implemented on Android. For
    every second of CPU time consumed by one process, a sample is recorded into
    the bucket for the process's type. Samples are recorded periodically
    depending on the task load of each process's main thread. The histogram thus
    shows the total sum of CPU time seconds spent per process type across all
    users.

    For a histogram of daily per-user values, select &quot;Per-Client
    Aggregation Mode&quot;.
  </summary>
  <token key="Visibility">
    <variant name="Background" summary="backgrounded"/>
    <variant name="Foreground" summary="foregrounded"/>
    <variant name="Unattributed" summary="undetermined visibility"/>
  </token>
</histogram>

<histogram name="Power.CpuTimeSecondsPerThreadType.{ProcessType}"
    enum="CpuTimeMetricsThreadType" expires_after="2027-01-03">
  <owner>eseckler@chromium.org</owner>
  <owner>skyostil@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Total seconds of CPU time consumed by Chrome's {ProcessType} process, split
    by thread type. Currently only implemented on Android. For every second of
    CPU time consumed by one thread, a sample is recorded into the bucket for
    the thread's type. CPU time consumed by a process that cannot be attributed
    to a specific thread is recorded into the &quot;UnattributedThread&quot;
    bucket. Samples are recorded periodically depending on the task load of each
    process's main thread. The histogram thus shows the total sum of CPU time
    seconds spent per thread type (within {ProcessType} processes) across all
    users.

    For a histogram of daily per-user values, select &quot;Per-Client
    Aggregation Mode&quot;.
  </summary>
  <token key="ProcessType">
    <variant name="Browser" summary="browser"/>
    <variant name="GPU" summary="GPU"/>
    <variant name="Other" summary="other type of"/>
    <variant name="Renderer" summary="renderer"/>
  </token>
</histogram>

<histogram name="Power.CpuTimeSecondsPerThreadType.{ProcessType}.{Visibility}"
    enum="CpuTimeMetricsThreadType" expires_after="2027-01-03">
  <owner>eseckler@chromium.org</owner>
  <owner>mthiesse@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Total seconds of CPU time consumed by Chrome's {ProcessType} process, split
    by thread type and process visibility. Currently only implemented on
    Android. For every second of CPU time consumed by one thread, a sample is
    recorded into the bucket for the thread's type. CPU time consumed by a
    process that cannot be attributed to a specific thread is recorded into the
    &quot;UnattributedThread&quot; bucket. Samples are recorded periodically
    depending on the task load of each process's main thread. The histogram thus
    shows the total sum of CPU time seconds spent per thread type (within
    {ProcessType} processes) across all users when the process {Visibility}.

    For a histogram of daily per-user values, select &quot;Per-Client
    Aggregation Mode&quot;.
  </summary>
  <token key="ProcessType">
    <variant name="Browser" summary="browser"/>
    <variant name="GPU" summary="GPU"/>
    <variant name="Other" summary="other type of"/>
    <variant name="Renderer" summary="renderer"/>
  </token>
  <token key="Visibility">
    <variant name="Background" summary="is in the background"/>
    <variant name="Foreground" summary="is in the foreground"/>
    <variant name="Unattributed" summary="visibility is unknown"/>
  </token>
</histogram>

<histogram name="Power.DarkResumeWakeDurationMs" units="ms"
    expires_after="2026-04-10">
  <owner>mka@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The amount of time a system spent awake every time it woke up in dark
    resume.

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

<histogram name="Power.DarkResumeWakeDurationMs.Other" units="ms"
    expires_after="2026-04-10">
  <owner>mka@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The amount of time a system spent awake every time it woke up in dark resume
    triggered by an unknown or unsupported wake trigger.

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

<histogram name="Power.DarkResumeWakeDurationMs.WiFi.Disconnect" units="ms"
    expires_after="2026-04-10">
  <owner>mka@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The amount of time a system spent awake every time it woke up in dark resume
    triggered by a WiFi disconnect.

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

<histogram name="Power.DarkResumeWakeDurationMs.WiFi.Pattern" units="ms"
    expires_after="2026-04-10">
  <owner>mka@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The amount of time a system spent awake every time it woke up in dark resume
    triggered by a WiFi packet pattern match.

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

<histogram name="Power.DarkResumeWakeDurationMs.WiFi.SSID" units="ms"
    expires_after="2026-04-10">
  <owner>mka@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The amount of time a system spent awake every time it woke up in dark resume
    triggered by a net detect SSID match.

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

<histogram name="Power.DarkResumeWakeupsPerHour" units="units"
    expires_after="2025-08-24">
  <owner>mka@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The number of times a system woke up in dark resume in an hour. Note that
    this value is scaled up or down to an hour based on the amount of time the
    system spent in suspend. So if the system suspended for 20 minutes and woke
    up 3 times, it would report a value of 9.

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

<histogram name="Power.DimEvent{PowerSource}" enum="PowerDimEvent"
    expires_after="2027-03-01">
  <owner>mqg@chromium.org</owner>
  <owner>amoylan@chromium.org</owner>
  <owner>chromeos-power-team@google.com</owner>
  <summary>
    The dimming events inside power_manager.metrics.DimEvent, recorded when a
    quick-dim/standard-dim starts or ends. The device is on {PowerSource} when
    the metrics is recorded.
  </summary>
  <token key="PowerSource">
    <variant name="OnAC" summary="charging"/>
    <variant name="OnBattery" summary="battery"/>
  </token>
</histogram>

<histogram name="Power.DisplayAfterResumeDurationMs{PowerSource}" units="ms"
    expires_after="2027-02-07">
  <owner>mhiramat@google.com</owner>
  <owner>cros-suspend-resume@google.com</owner>
  <summary>
    The time that the user process took to display UI on the Chrome OS device
    from suspend-to-RAM and suspend-to-Disk state, which starts when user
    processes are woken up by the kernel, and stops when SetIsProjecting signal
    is caught by power_manager. This is recorded when resuming from suspend. The
    device is on {PowerSource} when the metrics is recorded.
  </summary>
  <token key="PowerSource">
    <variant name="OnAC" summary="charging"/>
    <variant name="OnBattery" summary="battery"/>
  </token>
</histogram>

<histogram
    name="Power.ForegroundBatteryDrain.30SecondsAvg2{Exclusive}{DarkeningType}"
    units="uAh" expires_after="never">
<!-- expires-never: guiding metric (internal: go/chrome-browser-guiding-metrics) -->

  <owner>eseckler@chromium.org</owner>
  <owner>khokhlov@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <owner>chrome-analysis-team@google.com</owner>
  <improvement direction="LOWER_IS_BETTER"/>
  <summary>
    Periodically samples the battery capacity drained while Chrome is a
    foreground app and the device is on battery power {DarkeningType}. Sampled
    every 30 seconds while foregrounded. Also sampled when Chrome is
    backgrounded or the device connects to a charger. {Exclusive}

    Sample values are reported in microampere-hours and averaged over successive
    sampling points without a change in capacity counter values. Since the
    capacity counter resolution differs between device models, averaging the
    values allows us to make comparisons between frequent small capacity drops
    and infrequent large drops. For example, a 20,000 uAh drop over two
    successive periods of 30 seconds will be reported as two samples of 10,000
    uAh.

    For more details, see http://bit.ly/chrome-android-foreground-battery-drain.

    Only supported on Android. For WebView, the metric considers the time during
    in which at least one WebView is visible on the screen as
    &quot;foreground&quot; time. For Chrome, it considers any time the Chrome
    app is visible, including when in multi-window mode.

    Note that the capacity counter can be implemented in different ways by
    different devices/OEMs and its accuracy can vary (across devices and at
    different times on the same device, also due to environmental factors like
    device temperature or charge level).

    We've found looking at the 99%ile-trimmed mean more useful than looking at
    specific percentiles, especially when filtering for specific device models.

    This histogram is of special interest to the chrome-analysis-team@. Do not
    change its semantics or retire it without talking to them first.
  </summary>
  <token key="Exclusive" variants="Exclusive"/>
  <token key="DarkeningType">
    <variant name="" summary=""/>
    <variant name=".DarkMode"
        summary="and the browser has dark theme preferred (web page darkening
                 only) for all WebContents"/>
    <variant name=".ForcedDarkMode"
        summary="and the browser has forced dark mode (user-agent darkening)
                 enabled for all WebContents"/>
    <variant name=".LightMode"
        summary="and the browser has forced dark mode disabled and light
                 theme preferred for all WebContents"/>
    <variant name=".MixedMode"
        summary="and there is a mix of WebContents that have forced dark mode
                 enabled, dark theme preferred, or light theme preferred"/>
  </token>
</histogram>

<histogram name="Power.ForegroundBatteryDrain.30Seconds{Exclusive}" units="uAh"
    expires_after="2027-02-07">
  <owner>eseckler@chromium.org</owner>
  <owner>skyostil@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Periodically samples the battery capacity drained while Chrome is a
    foreground app and the device is on battery power. Sampled every 30 seconds
    while foregrounded. Also sampled when Chrome is backgrounded or the device
    connects to a charger. {Exclusive}

    Sample values are reported as provided by the battery capacity counter (in
    microampere-hours). Because the resolution of this counter is rather coarse
    (usually between 500 and 50,000 uAh), the uAh value may have been drained
    over a longer time period than 30 seconds. See also
    Power.ForegroundBatteryDrain.30SecondsAvg, which averages the values over
    successive sampling points without change in counter values.

    Only supported on Android. For WebView, the metric considers the time during
    in which at least one WebView is visible on the screen as
    &quot;foreground&quot; time. For Chrome, it considers any time the Chrome
    app is visible, including when in multi-window mode.

    Note that the capacity counter can be implemented in different ways by
    different devices/OEMs and its accuracy can vary (across devices and at
    different times on the same device, also due to environmental factors like
    device temperature or charge level).
  </summary>
  <token key="Exclusive" variants="Exclusive"/>
</histogram>

<histogram
    name="Power.ForegroundBatteryDrainPerScenario.30Seconds{Exclusive}{LoadingScenario}{InputScenario}"
    units="uAh" expires_after="2027-02-07">
  <owner>kraskevich@google.com</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Similar to Power.ForegroundBatteryDrain.30Seconds, with additional Chrome
    usage scenario classification: {LoadingScenario} and {InputScenario}.
    {Exclusive}
  </summary>
  <token key="Exclusive" variants="Exclusive"/>
  <token key="LoadingScenario" variants="LoadingScenario"/>
  <token key="InputScenario" variants="InputScenario"/>
</histogram>

<histogram name="Power.ForegroundBatteryDrain{Exclusive}" units="0.1 mAh"
    expires_after="2027-02-07">
  <owner>eseckler@chromium.org</owner>
  <owner>skyostil@chromium.org</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Records a sample for every 0.1 milliampere-hours of battery capacity that
    are drained while Chrome is a foreground app and the device is on battery
    power. The battery counter is inspected every 30 seconds while foregrounded.
    It is also inspected when Chrome is backgrounded or the device connects to a
    charger. The histogram thus shows the total sum of battery capacity consumed
    across all users. {Exclusive}

    Only supported on Android. For WebView, the metric considers the time during
    in which at least one WebView is visible on the screen as
    &quot;foreground&quot; time. For Chrome, it considers any time the Chrome
    app is visible, including when in multi-window mode.

    Note that the capacity counter can be implemented in different ways by
    different devices/OEMs and its accuracy can vary (across devices and at
    different times on the same device, also due to environmental factors like
    device temperature or charge level).

    For a histogram of daily per-user values, see the computed histogram
    Power.DailyForegroundBatteryDrain.
  </summary>
  <token key="Exclusive" variants="Exclusive"/>
</histogram>

<histogram
    name="Power.ForegroundEnergyConsumedPerScenario.30Seconds{Exclusive}{LoadingScenario}{InputScenario}{Subsystem}"
    units="uWh" expires_after="2027-01-03">
  <owner>kraskevich@google.com</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Similar to Power.ForegroundBatteryDrain.30Seconds, with additional Chrome
    usage scenario classification: {LoadingScenario} and {InputScenario}, and
    device's subsystem classification: {Subsystem} {Exclusive}

    This metric uses a more accurate (but less widely supported) underlying API
    https://developer.android.com/reference/android/os/health/SystemHealthManager.

    The reported value is energy consumed during the 30s interval in
    microwatt-hours.
  </summary>
  <token key="Exclusive" variants="Exclusive"/>
  <token key="LoadingScenario" variants="LoadingScenario"/>
  <token key="InputScenario" variants="InputScenario"/>
  <token key="Subsystem" variants="Subsystem"/>
</histogram>

<histogram name="Power.HasPreciseBatteryDischargeGranularity" enum="Boolean"
    expires_after="2024-02-11">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Records whether or not the reporting client has a battery discharge
    granularity less or equal to 17 mWh, which is the threshold to report the
    Power.BatteryDischargeRatePreciseMilliwatts histogram.

    This is reported at the end of every valid 1 minute interval. An invalid
    interval is one that deviate too much from 1 minute, which can be caused by
    the computer going to sleep, or the OS sending multiple notifications in a
    row.

    Only Recorded on Windows.
  </summary>
</histogram>

<histogram name="Power.HighestFanSpeed" units="100rpm"
    expires_after="2027-01-10">
  <owner>eshimanovich@google.com</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    ChromeOS highest current fan speed, reported every 30 seconds from the EC.
    This is logged only on a periodic tick; no other events trigger this report.
    This is only reported from Chromebooks with fans that interface with the
    CrOS EC. Multiply value by 100 to get the fan speed in rpm.
  </summary>
</histogram>

<histogram name="Power.IOPMPowerSource.SamplingEventDelta" units="ms"
    expires_after="2024-04-28">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Records the time between each IOPMPowerSource event. The recorded value is
    clamped between 55 seconds and 65 seconds for maximum precision around the
    expected value. Only recorded on MacOS.
  </summary>
</histogram>

<histogram name="Power.IOPMPowerSource.SamplingEventDelta.MediumTimes"
    units="ms" expires_after="2024-03-17">
  <owner>pmonette@chromium.org</owner>
  <owner>catan-team@chromium.org</owner>
  <summary>
    Records the time between each IOPMPowerSource event. The recorded value is
    not clamped and covers the range from zero seconds to 3 minutes. Only
    recorded on MacOS.
  </summary>
</histogram>

<histogram name="Power.KernelResumeTimeOnAC" units="ms"
    expires_after="2027-01-17">
  <owner>puthik@chromium.org</owner>
  <owner>mhiramat@google.com</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <owner>cros-suspend-resume@google.com</owner>
  <summary>
    The time that the kernel took to resume the Chrome OS device from
    suspend-to-RAM state when running on AC at pre-suspend time.
  </summary>
</histogram>

<histogram name="Power.KernelResumeTimeOnBattery" units="ms"
    expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>mhiramat@google.com</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <owner>cros-suspend-resume@google.com</owner>
  <summary>
    The time that the kernel took to resume the Chrome OS device from
    suspend-to-RAM state when running on battery at pre-suspend time.

    Warning: this histogram was expired from 2024-05-26 to 2024-07-15; data may
    be missing.
  </summary>
</histogram>

<histogram name="Power.KernelSuspendTimeOnAC" units="ms"
    expires_after="2027-01-17">
  <owner>puthik@chromium.org</owner>
  <owner>mhiramat@google.com</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <owner>cros-suspend-resume@google.com</owner>
  <summary>
    The time that the kernel took to suspend-to-RAM the Chrome OS device when
    running on AC.

    Warning: this histogram was expired from 2020-01-26 to 2024-07-15; data may
    be missing.
  </summary>
</histogram>

<histogram name="Power.KernelSuspendTimeOnBattery" units="ms"
    expires_after="2026-12-27">
  <owner>puthik@chromium.org</owner>
  <owner>mhiramat@google.com</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <owner>cros-suspend-resume@google.com</owner>
  <summary>
    The time that the kernel took to suspend-to-RAM the Chrome OS device when
    running on battery.

    Warning: this histogram was expired from 2022-04-10 to 2024-07-15; data may
    be missing.
  </summary>
</histogram>

<histogram name="Power.KeyboardBacklightLevel" units="%"
    expires_after="2027-02-07">
  <owner>tbroch@chromium.org</owner>
  <summary>
    The level of the keyboard backlight as a percentage. Sampled every 30
    seconds.
  </summary>
</histogram>

<histogram name="Power.LockEvent{PowerSource}" enum="PowerLockEvent"
    expires_after="2027-03-01">
  <owner>mqg@chromium.org</owner>
  <owner>amoylan@chromium.org</owner>
  <owner>chromeos-power-team@google.com</owner>
  <summary>
    The lock events inside power_manager.metrics.LockEvent, recorded when a
    quick-lock/standard-lock starts. The device is on {PowerSource} when the
    metrics is recorded.
  </summary>
  <token key="PowerSource">
    <variant name="OnAC" summary="charging"/>
    <variant name="OnBattery" summary="battery"/>
  </token>
</histogram>

<histogram name="Power.Mac.ThermalState" enum="MacThermalState"
    expires_after="2023-11-30">
  <owner>lgrey@chromium.org</owner>
  <owner>olivierli@chromium.org</owner>
  <summary>
    Thermal state of the user's machine as reported by macOS's [NSProcessInfo
    thermalState]. Sampled once per minute.
  </summary>
</histogram>

<histogram name="Power.Mac.{PowerConsumptionSources}.{PowerConsumptionTimes}"
    units="mW" expires_after="2025-09-14">
  <owner>olivierli@chromium.org</owner>
  <owner>markchang@chromium.org</owner>
  <summary>
    Instantaneous power consution in milliwatts, for the system as a whole and
    broken down by component. Only recorded on macOS. Only valid on Intel based
    systems. NB: The collection method was changed in May 2019, which may look
    like a regression in timeline view. {PowerConsumptionSources}
  </summary>
  <token key="PowerConsumptionSources">
    <variant name="CPU" summary="Instantaneous power used by the CPU."/>
    <variant name="GPU0"
        summary="Instantaneous power used by the first dedicated GPU, if any."/>
    <variant name="GPU1"
        summary="Instantaneous power used by the second dedicated GPU, if
                 any."/>
    <variant name="GPUi"
        summary="Instantaneous power used by the integrated GPU, if any."/>
    <variant name="Total"
        summary="Instantaneous power used by the whole system. May be less
                 useful than other power metrics because it includes
                 peripherals like the display backlight."/>
  </token>
  <token key="PowerConsumptionTimes">
    <variant name="All" summary="Sampled once per minute."/>
    <variant name="DuringStartup"
        summary="Sampled once per second during the first 30 seconds after
                 launch."/>
  </token>
</histogram>

<histogram name="Power.PowerButtonMenuAction" enum="PowerButtonMenuActionType"
    expires_after="2025-04-30">
  <owner>minch@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>Actions performed while the power button menu is open.</summary>
</histogram>

<histogram name="Power.PowerButtonPressed" units="units"
    expires_after="2024-06-30">
  <owner>emaamari@google.com</owner>
  <owner>chromeos-commercial-identity@google.com</owner>
  <summary>
    Indicates a press of the power button, recorded when PowerManagerClient
    receives a signal that the power button was pressed and notifies
    FingerprintPowerButtonRaceDetector.
  </summary>
</histogram>

<histogram name="Power.PowerButtonPressInLaptopMode"
    enum="PowerButtonPressType" expires_after="2025-04-30">
  <owner>minch@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Press power button in laptop mode will result in different scenarios
    according to the power button up state. Counts the different power button
    press scenarios in laptop mode.
  </summary>
</histogram>

<histogram name="Power.PowerButtonPressInTabletMode"
    enum="PowerButtonPressType" expires_after="2025-04-30">
  <owner>minch@chromium.org</owner>
  <owner>xdai@chromium.org</owner>
  <summary>
    Press power button in tablet mode will result in different scenarios
    according to the power button up state. Counts the different power button
    press scenarios in tablet mode.
  </summary>
</histogram>

<histogram name="Power.PowerSupplyMaxPower" units="W"
    expires_after="2026-08-23">
  <owner>bleung@chromium.org</owner>
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The maximum power supported by the connected power supply on Chrome OS. A
    sample is reported every time that the power manager polls sysfs (typically
    every 30 seconds) and sees a connected supply.

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

<histogram name="Power.PowerSupplyMaxVoltage" units="V"
    expires_after="2026-12-27">
  <owner>bleung@chromium.org</owner>
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The maximum voltage supported by the connected power supply on Chrome OS. A
    sample is reported every time that the power manager polls sysfs (typically
    every 30 seconds) and sees a connected supply.

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

<histogram name="Power.PowerSupplyMaxVoltageHPBCharger" units="V"
    expires_after="2027-04-10">
  <owner>mqg@chromium.org</owner>
  <owner>chromeos-power-team@google.com</owner>
  <summary>
    The maximum voltage supported by the connected power supply on ChromeOS. A
    sample is reported every time the power manager polls sysfs. Polling occurs
    at a regular 30-second interval and is also triggered by connecting or
    disconnecting a power supply. Polling is temporarily more frequent (every
    second) after other events such as system boot, system resume and battery
    saver state change. This metric is only reported on devices with Hybrid
    Power Boost chargers. The connected power supply includes both compatible
    power supply and low voltage power supply.
  </summary>
</histogram>

<histogram name="Power.PowerSupplyType" enum="PowerSupplyType"
    expires_after="2027-02-07">
  <owner>bleung@chromium.org</owner>
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The type of the connected power supply on Chrome OS. A sample is reported
    every time that the power manager polls sysfs (typically every 30 seconds)
    and sees a connected supply.

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

<histogram name="Power.ShutdownReason" enum="ShutdownReason"
    expires_after="2026-12-27">
  <owner>mqg@chromium.org</owner>
  <owner>sammc@chromium.org</owner>
  <owner>chromeos-power-team@google.com</owner>
  <summary>
    The reason for the Chrome OS power manager shutting down or rebooting the
    system.

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

<histogram name="Power.SmartCharging.Messages" enum="SmartChargingMessages"
    expires_after="2027-02-01">
  <owner>amoylan@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>Type of messages that are reported by smart charging.</summary>
</histogram>

<histogram name="Power.SuspendAttempt" enum="SuspendAttempt"
    expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The number of suspend attempts on Chrome OS. Samples are reported before
    each attempt, so this histogram may include cases where the system crashed
    instead of suspending.
  </summary>
</histogram>

<histogram name="Power.SuspendAttemptsBeforeCancel" units="units"
    expires_after="2025-07-13">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The number of suspend attempts performed for a single suspend request (e.g.
    triggered by the lid being closed) that was eventually canceled on Chrome
    OS. This also includes requests that were canceled due to the system
    eventually shutting down due to repeated suspend failures. This is recorded
    just after the SuspendDone signal is emitted, while cleaning up from the
    canceled attempt.
  </summary>
</histogram>

<histogram name="Power.SuspendAttemptsBeforeSuccess" units="units"
    expires_after="2025-07-13">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The number of suspend attempts performed for a single suspend request (e.g.
    triggered by the lid being closed) that eventually succeeded on Chrome OS.
    This includes the successful attempt. This is recorded after the system
    resumes, just after the SuspendDone signal is emitted, while unwinding the
    suspend preparations.
  </summary>
</histogram>

<histogram name="Power.SuspendDelay" units="seconds" expires_after="2025-10-12">
  <owner>niwa@chromium.org</owner>
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The amount of time powerd waited until all clients (e.g. Bluetooth Manager)
    to be ready to suspend after receiving a suspend request. The maximum
    recorded value is 60 seconds.
  </summary>
</histogram>

<histogram name="Power.SuspendJourneyResult" enum="SuspendJourneyResult"
    expires_after="2027-01-17">
  <owner>eizan@chromium.org</owner>
  <owner>chromeos-power-team@google.com</owner>
  <summary>
    The results of suspend journeys on Chrome OS which might comprise multiple
    suspend attempts. Samples are reported after each journey.
  </summary>
</histogram>

<histogram name="Power.SuspendResult" enum="SuspendResult"
    expires_after="2027-02-07">
  <owner>puthik@chromium.org</owner>
  <owner>chromeos-platform-power@google.com</owner>
  <summary>
    The results of suspend attempts on Chrome OS. Samples are reported after
    each attempt.
  </summary>
</histogram>

<histogram name="Power.SystemHealthManagerError"
    enum="SystemHealthManagerError" expires_after="2026-04-15">
  <owner>kraskevich@google.com</owner>
  <owner>woa-performance@google.com</owner>
  <summary>
    Records errors for SystemHealthManager API calls.

    The SystemHealthManager API is used for computing
    Power.ForegroundEnergyConsumedPerScenario.30Seconds.
  </summary>
</histogram>

<histogram name="Power.TimeInSuspendAtBoot" units="minutes"
    expires_after="2027-01-17">
  <owner>tbroch@chromium.org</owner>
  <summary>
    Chrome OS time in minutes spent in suspend-to-RAM mode sampled at boot
    (i.e., the device most likely ran out of battery while in suspend).
  </summary>
</histogram>

<histogram name="Power.TimeInSuspendAtResume" units="minutes"
    expires_after="2027-01-17">
  <owner>tbroch@chromium.org</owner>
  <summary>
    Chrome OS time in minutes spent in suspend-to-RAM mode sampled at resume.
  </summary>
</histogram>

<histogram name="Power.UserBrightnessAdjustmentsPerSessionOnAC" units="units"
    expires_after="2026-11-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    The number of times that the user adjusted the brightness during a session
    when on AC. Values for this metric are clamped to 10k count, so the last
    bucket should be considered to be including all metrics above 10k.
  </summary>
</histogram>

<histogram name="Power.UserBrightnessAdjustmentsPerSessionOnBattery"
    units="units" expires_after="2027-02-07">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    The number of times that the user adjusted the brightness during a session
    when on battery. Values for this metric are clamped to 10k count, so the
    last bucket should be considered to be including all metrics above 10k.
  </summary>
</histogram>

<histogram name="Power.{HpsEvent}.DurationSeconds" units="seconds"
    expires_after="2027-03-01">
  <owner>mqg@chromium.org</owner>
  <owner>amoylan@chromium.org</owner>
  <owner>chromeos-power-team@google.com</owner>
  <summary>
    The duration of a {HpsEvent}, recorded on undimming/deferring.
  </summary>
  <token key="HpsEvent">
    <variant name="QuickDimRevertedByHps"
        summary="quick dimming undimmed by hps"/>
    <variant name="QuickDimRevertedByUser"
        summary="quick dimming undimmed by user"/>
    <variant name="StandardDimDeferredByHps"
        summary="standard dimming deferred by hps"/>
    <variant name="StandardDimRevertedByUser"
        summary="standard dimming undimmed by user"/>
  </token>
</histogram>

<histogram name="PowerML.DimImminent.Action" enum="PowerMLDimImminentAction"
    expires_after="2027-02-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    What happens when UserActivityManager receives a screen dim imminent
    notification. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.ModelDim.Result" enum="PowerMLFinalResult"
    expires_after="2027-01-10">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    What happens after screen is dimmed following model instruction. Only
    applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.ModelNoDim.Result" enum="PowerMLFinalResult"
    expires_after="2027-01-03">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    What happens after screen dim is deferred following model instruction. Only
    applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.NonModelDim.Result" enum="PowerMLFinalResult"
    expires_after="2027-01-03">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    What happens after screen is dimmed by powerd by ignoring the model
    instruction. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.PreviousEventLogging.Result"
    enum="PowerMLPreviousEventLoggingResult" expires_after="2020-12-13">
  <owner>napper@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <summary>
    Status of logging previous idle event after a screen dim imminent signal is
    received. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimComponent.LoadComponentEvent"
    enum="PowerMLSmartDimComponentLoadComponentEvent"
    expires_after="2026-11-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records the event (various failures or success) of loading smart dim
    component. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimComponent.VersionType"
    enum="PowerMLSmartDimComponentVersionType" expires_after="2026-11-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records the type of expected version (default, experimental or empty) used
    by smart dim component installer. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimComponent.WorkerType"
    enum="PowerMLSmartDimComponentWorkerType" expires_after="2026-11-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    Records the worker type that is used by smart dim ml agent to make a
    decision. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimModel.RequestCanceledDuration" units="ms"
    expires_after="2027-02-14">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>pmalani@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    The time elapsed between a Smart Dim Inference Request being sent to the ML
    model, and the request being canceled before the result is returned.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimModel.RequestCompleteDuration" units="ms"
    expires_after="2027-01-31">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>pmalani@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    The time elapsed between a Smart Dim Inference Request being sent to the ML
    model and a result being returned.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimModel.Result"
    enum="PowerMLSmartDimModelResult" expires_after="2027-02-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    This is the status code returned by the model when calculating a user
    inactivity score. If it is any value other than 0 (success), then some issue
    has occurred in the score calculation, either because preprocess was not
    loaded or parsed correctly, or the preprocessor failed to process a
    RankerExample. Only applicable to Chrome OS.
  </summary>
</histogram>

<histogram name="PowerML.SmartDimParameter.Result"
    enum="PowerMLSmartDimParameterResult" expires_after="2026-11-01">
  <owner>amoylan@chromium.org</owner>
  <owner>napper@chromium.org</owner>
  <owner>thanhdng@chromium.org</owner>
  <owner>chrome-knowledge-eng@google.com</owner>
  <summary>
    The result of parsing the dim threshold parameter value. Only applicable to
    Chrome OS.
  </summary>
</histogram>

</histograms>

</histogram-configuration>
