chromium/components/power_metrics/system_power_monitor.h

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

#ifndef COMPONENTS_POWER_METRICS_SYSTEM_POWER_MONITOR_H_
#define COMPONENTS_POWER_METRICS_SYSTEM_POWER_MONITOR_H_

#include <memory>
#include <vector>

#include "base/threading/sequence_bound.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "base/trace_event/trace_log.h"
#include "components/power_metrics/energy_metrics_provider.h"

namespace power_metrics {

// A delegate to isolate System Power Monitor functionality mainly for
// testing.
class SystemPowerMonitorDelegate {};

// Manages a timer to regularly sample and emit trace events, whose start and
// stop are controlled by System Power Monitor.
class SystemPowerMonitorHelper {};

// Monitors system-wide power consumption. Gets data from EnergyMetricsProvider.
class SystemPowerMonitor
    : public base::trace_event::TraceLog::EnabledStateObserver {};

}  // namespace power_metrics

#endif  // COMPONENTS_POWER_METRICS_SYSTEM_POWER_MONITOR_H_