mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2025-02-26 20:03:26 +03:00
114 lines
3.8 KiB
C++
114 lines
3.8 KiB
C++
// Copyright 2013 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef BASE_TEST_POWER_MONITOR_TEST_H_
|
|
#define BASE_TEST_POWER_MONITOR_TEST_H_
|
|
|
|
#include "base/power_monitor/power_monitor.h"
|
|
#include "base/power_monitor/power_monitor_source.h"
|
|
#include "base/power_monitor/power_observer.h"
|
|
|
|
namespace base {
|
|
|
|
namespace test {
|
|
|
|
// Use PowerMonitorTestSource via ScopedPowerMonitorTestSource wrapper when you
|
|
// need to simulate power events (suspend and resume).
|
|
class PowerMonitorTestSource;
|
|
|
|
// ScopedPowerMonitorTestSource initializes the PowerMonitor with a Mock
|
|
// PowerMonitorSource. Mock power notifications can be simulated through this
|
|
// helper class.
|
|
//
|
|
// Example:
|
|
// base::test::ScopedPowerMonitorTestSource power_monitor_source;
|
|
// power_monitor_source.Suspend();
|
|
// [...]
|
|
// power_monitor_source.Resume();
|
|
class ScopedPowerMonitorTestSource {
|
|
public:
|
|
ScopedPowerMonitorTestSource();
|
|
~ScopedPowerMonitorTestSource();
|
|
|
|
ScopedPowerMonitorTestSource(const ScopedPowerMonitorTestSource&) = delete;
|
|
ScopedPowerMonitorTestSource& operator=(const ScopedPowerMonitorTestSource&) =
|
|
delete;
|
|
|
|
// Retrieve current states.
|
|
PowerThermalObserver::DeviceThermalState GetCurrentThermalState();
|
|
bool IsOnBatteryPower();
|
|
|
|
// Sends asynchronous notifications to registered observers.
|
|
void Suspend();
|
|
void Resume();
|
|
void SetOnBatteryPower(bool on_battery_power);
|
|
|
|
void GenerateSuspendEvent();
|
|
void GenerateResumeEvent();
|
|
void GeneratePowerStateEvent(bool on_battery_power);
|
|
void GenerateThermalThrottlingEvent(
|
|
PowerThermalObserver::DeviceThermalState new_thermal_state);
|
|
void GenerateSpeedLimitEvent(int speed_limit);
|
|
|
|
private:
|
|
// Owned by PowerMonitor.
|
|
PowerMonitorTestSource* power_monitor_test_source_ = nullptr;
|
|
};
|
|
|
|
class PowerMonitorTestObserver : public PowerSuspendObserver,
|
|
public PowerThermalObserver,
|
|
public PowerStateObserver {
|
|
public:
|
|
PowerMonitorTestObserver();
|
|
~PowerMonitorTestObserver() override;
|
|
|
|
// PowerStateObserver overrides.
|
|
void OnPowerStateChange(bool on_battery_power) override;
|
|
// PowerSuspendObserver overrides.
|
|
void OnSuspend() override;
|
|
void OnResume() override;
|
|
// PowerThermalObserver overrides.
|
|
void OnThermalStateChange(
|
|
PowerThermalObserver::DeviceThermalState new_state) override;
|
|
void OnSpeedLimitChange(int speed_limit) override;
|
|
|
|
// Test status counts.
|
|
int power_state_changes() const { return power_state_changes_; }
|
|
int suspends() const { return suspends_; }
|
|
int resumes() const { return resumes_; }
|
|
int thermal_state_changes() const { return thermal_state_changes_; }
|
|
int speed_limit_changes() const { return speed_limit_changes_; }
|
|
|
|
bool last_power_state() const { return last_power_state_; }
|
|
PowerThermalObserver::DeviceThermalState last_thermal_state() const {
|
|
return last_thermal_state_;
|
|
}
|
|
int last_speed_limit() const { return last_speed_limit_; }
|
|
|
|
private:
|
|
// Count of OnPowerStateChange notifications.
|
|
int power_state_changes_ = 0;
|
|
// Count of OnSuspend notifications.
|
|
int suspends_ = 0;
|
|
// Count of OnResume notifications.
|
|
int resumes_ = 0;
|
|
// Count of OnThermalStateChange notifications.
|
|
int thermal_state_changes_ = 0;
|
|
// Count of OnSpeedLimitChange notifications.
|
|
int speed_limit_changes_ = 0;
|
|
|
|
// Last power state we were notified of.
|
|
bool last_power_state_ = false;
|
|
// Last power thermal we were notified of.
|
|
PowerThermalObserver::DeviceThermalState last_thermal_state_ =
|
|
PowerThermalObserver::DeviceThermalState::kUnknown;
|
|
// Last speed limit we were notified of.
|
|
int last_speed_limit_ = PowerThermalObserver::kSpeedLimitMax;
|
|
};
|
|
|
|
} // namespace test
|
|
} // namespace base
|
|
|
|
#endif // BASE_TEST_POWER_MONITOR_TEST_H_
|