#ifndef SERVICES_DEVICE_COMPUTE_PRESSURE_VIRTUAL_PROBES_MANAGER_H_
#define SERVICES_DEVICE_COMPUTE_PRESSURE_VIRTUAL_PROBES_MANAGER_H_
#include "base/containers/enum_set.h"
#include "base/sequence_checker.h"
#include "services/device/compute_pressure/probes_manager.h"
#include "services/device/public/mojom/pressure_manager.mojom-forward.h"
#include "services/device/public/mojom/pressure_update.mojom-shared.h"
namespace device {
class VirtualProbesManager final : public ProbesManager {
public:
explicit VirtualProbesManager(base::TimeDelta sampling_interval);
~VirtualProbesManager() override;
VirtualProbesManager(const VirtualProbesManager&) = delete;
VirtualProbesManager& operator=(const VirtualProbesManager&) = delete;
bool AddOverrideForSource(mojom::PressureSource source,
mojom::VirtualPressureSourceMetadataPtr metadata);
void RemoveOverrideForSource(mojom::PressureSource source);
void AddDataUpdate(mojom::PressureSource source,
mojom::PressureState state,
double own_contribution_estimate);
bool IsOverriding(mojom::PressureSource source) const;
private:
SEQUENCE_CHECKER(sequence_checker_);
base::EnumSet<mojom::PressureSource,
mojom::PressureSource::kMinValue,
mojom::PressureSource::kMaxValue>
overridden_sources_;
};
}
#endif