blob: a826d28adab29c660931243f780091923bd7c1f7 [file] [log] [blame]
Joe Downing505ae0d02018-10-17 17:47:301// Copyright 2018 The Chromium Authors. All rights reserved.
2// 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"
10#include "base/macros.h"
Patrick Monette643cdf62021-10-15 19:13:4211#include "base/task/single_thread_task_runner.h"
Joe Downing505ae0d02018-10-17 17:47:3012#include "remoting/proto/action.pb.h"
13
14namespace remoting {
15
16using protocol::ActionRequest;
17
18SessionActionExecutor::SessionActionExecutor(
19 scoped_refptr<base::SingleThreadTaskRunner> execute_action_task_runner,
20 const base::RepeatingClosure& inject_sas,
21 const base::RepeatingClosure& lock_workstation)
22 : execute_action_task_runner_(execute_action_task_runner),
23 inject_sas_(inject_sas),
24 lock_workstation_(lock_workstation) {}
25
26SessionActionExecutor::~SessionActionExecutor() = default;
27
28void SessionActionExecutor::ExecuteAction(const ActionRequest& request) {
29 DCHECK(request.has_action());
30
31 switch (request.action()) {
Joe Downingb511e4a92018-11-16 21:10:1332 case ActionRequest::SEND_ATTENTION_SEQUENCE:
Joe Downing505ae0d02018-10-17 17:47:3033 execute_action_task_runner_->PostTask(FROM_HERE, inject_sas_);
34 break;
35
Joe Downingb511e4a92018-11-16 21:10:1336 case ActionRequest::LOCK_WORKSTATION:
Joe Downing505ae0d02018-10-17 17:47:3037 execute_action_task_runner_->PostTask(FROM_HERE, lock_workstation_);
38 break;
39
40 default:
41 NOTREACHED() << "Unknown action type: " << request.action();
42 }
43}
44
45} // namespace remoting