#include "remoting/host/session_terminator.h"
#include <memory>
#include "base/logging.h"
#include "base/memory/scoped_refptr.h"
#include "base/task/single_thread_task_runner.h"
#include "remoting/host/chromeos/ash_proxy.h"
namespace remoting {
namespace {
class SessionTerminatorChromeOs : public SessionTerminator {
public:
explicit SessionTerminatorChromeOs(
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner)
: ui_task_runner_(ui_task_runner) {}
SessionTerminatorChromeOs(const SessionTerminatorChromeOs&) = delete;
SessionTerminatorChromeOs& operator=(const SessionTerminatorChromeOs&) =
delete;
~SessionTerminatorChromeOs() override {
LOG(INFO) << "Force signing out of the current user as the CRD curtained "
"session is terminating.";
ui_task_runner_->PostTask(
FROM_HERE, base::BindOnce(&AshProxy::RequestSignOut,
base::Unretained(&AshProxy::Get())));
}
private:
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
};
}
std::unique_ptr<SessionTerminator> SessionTerminator::Create(
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
return std::make_unique<SessionTerminatorChromeOs>(ui_task_runner);
}
}