// Copyright 2021 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_METRICS_POWER_POWER_METRICS_REPORTER_H_ #define CHROME_BROWSER_METRICS_POWER_POWER_METRICS_REPORTER_H_ #include <memory> #include <optional> #include <utility> #include "base/power_monitor/battery_level_provider.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "build/build_config.h" #include "chrome/browser/metrics/power/power_metrics.h" #include "chrome/browser/metrics/power/process_monitor.h" #include "chrome/browser/metrics/usage_scenario/usage_scenario.h" #include "chrome/browser/metrics/usage_scenario/usage_scenario_data_store.h" #include "chrome/browser/metrics/usage_scenario/usage_scenario_tracker.h" #include "components/performance_manager/public/power/battery_level_provider_creator.h" // Reports metrics related to power (battery discharge, cpu time, etc.). // // Metrics are reported for 2 minutes intervals, with suffixes describing what // the user did during the interval. These intervals are long enough to capture // most side-effects of what the user did (e.g. a navigation increases memory // usage which may cause a major GC after some time). // // A few metrics are also reported for 10 seconds intervals. They are meant to // be used as triggers to upload traces from the field. Traces from the field // only cover a few seconds and it is only possible to correctly analyze a trace // if it covers the full interval associated with the trigger metric. // // This class should be created shortly after ProcessMonitor. // // Previous histograms reported by this class: // - Main screen brightness, removed by https://crrev.com/c/3431905 // Historical data: go/chrome-historical-power-histograms class PowerMetricsReporter : public ProcessMonitor::Observer { … }; #endif // CHROME_BROWSER_METRICS_POWER_POWER_METRICS_REPORTER_H_