blob: a6763217b0ab23634d9513e783a4c13d4d99881f [file] [log] [blame]
Avi Drissmand6cdf9b2022-09-15 19:52:531// Copyright 2018 The Chromium Authors
Joe Downing505ae0d02018-10-17 17:47:302// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "remoting/host/win/session_action_executor.h"
6
7#include "base/bind.h"
8#include "base/callback.h"
9#include "base/location.h"
Patrick Monette643cdf62021-10-15 19:13:4210#include "base/task/single_thread_task_runner.h"
Joe Downing505ae0d02018-10-17 17:47:3011#include "remoting/proto/action.pb.h"
12
13namespace remoting {
14
15using protocol::ActionRequest;
16
17SessionActionExecutor::SessionActionExecutor(
18 scoped_refptr<base::SingleThreadTaskRunner> execute_action_task_runner,
19 const base::RepeatingClosure& inject_sas,
20 const base::RepeatingClosure& lock_workstation)
21 : execute_action_task_runner_(execute_action_task_runner),
22 inject_sas_(inject_sas),
23 lock_workstation_(lock_workstation) {}
24
25SessionActionExecutor::~SessionActionExecutor() = default;
26
27void SessionActionExecutor::ExecuteAction(const ActionRequest& request) {
28 DCHECK(request.has_action());
29
30 switch (request.action()) {
Joe Downingb511e4a92018-11-16 21:10:1331 case ActionRequest::SEND_ATTENTION_SEQUENCE:
Joe Downing505ae0d02018-10-17 17:47:3032 execute_action_task_runner_->PostTask(FROM_HERE, inject_sas_);
33 break;
34
Joe Downingb511e4a92018-11-16 21:10:1335 case ActionRequest::LOCK_WORKSTATION:
Joe Downing505ae0d02018-10-17 17:47:3036 execute_action_task_runner_->PostTask(FROM_HERE, lock_workstation_);
37 break;
38
39 default:
40 NOTREACHED() << "Unknown action type: " << request.action();
41 }
42}
43
44} // namespace remoting