#ifndef REMOTING_BASE_AUTO_THREAD_TASK_RUNNER_H_
#define REMOTING_BASE_AUTO_THREAD_TASK_RUNNER_H_
#include "base/functional/callback.h"
#include "base/task/single_thread_task_runner.h"
#include "build/buildflag.h"
namespace remoting {
class AutoThreadTaskRunner : public base::SingleThreadTaskRunner {
public:
#if BUILDFLAG(IS_CHROMEOS)
explicit AutoThreadTaskRunner(
scoped_refptr<base::SingleThreadTaskRunner> task_runner);
#endif
AutoThreadTaskRunner(scoped_refptr<base::SingleThreadTaskRunner> task_runner,
base::OnceClosure stop_task);
AutoThreadTaskRunner(const AutoThreadTaskRunner&) = delete;
AutoThreadTaskRunner& operator=(const AutoThreadTaskRunner&) = delete;
bool PostDelayedTask(const base::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) override;
bool PostNonNestableDelayedTask(const base::Location& from_here,
base::OnceClosure task,
base::TimeDelta delay) override;
bool RunsTasksInCurrentSequence() const override;
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner() {
return task_runner_;
}
private:
~AutoThreadTaskRunner() override;
base::OnceClosure stop_task_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
};
}
#endif