#ifndef REMOTING_HOST_HOST_POWER_SAVE_BLOCKER_H_
#define REMOTING_HOST_HOST_POWER_SAVE_BLOCKER_H_
#include <memory>
#include <string>
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/task/sequenced_task_runner.h"
#include "remoting/host/host_status_observer.h"
#include "services/device/wake_lock/power_save_blocker/power_save_blocker.h"
namespace base {
class SingleThreadTaskRunner;
}
namespace remoting {
class HostStatusMonitor;
class HostPowerSaveBlocker : public HostStatusObserver {
public:
HostPowerSaveBlocker(
scoped_refptr<HostStatusMonitor> monitor,
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner);
~HostPowerSaveBlocker() override;
void OnClientConnected(const std::string& jid) override;
void OnClientDisconnected(const std::string& jid) override;
private:
friend class HostPowerSaveBlockerTest;
scoped_refptr<HostStatusMonitor> monitor_;
scoped_refptr<base::SequencedTaskRunner> ui_task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_;
std::unique_ptr<device::PowerSaveBlocker> blocker_;
};
}
#endif