blob: dd7f77d61ec97d67406d11ec0b7c2115147b6bd2 [file] [log] [blame]
Avi Drissmand6cdf9b2022-09-15 19:52:531// Copyright 2012 The Chromium Authors
[email protected]da457fc2013-03-14 16:32:122// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef REMOTING_HOST_ME2ME_DESKTOP_ENVIRONMENT_H_
6#define REMOTING_HOST_ME2ME_DESKTOP_ENVIRONMENT_H_
7
Patrick Monette643cdf62021-10-15 19:13:428#include "base/task/single_thread_task_runner.h"
[email protected]da457fc2013-03-14 16:32:129#include "remoting/host/basic_desktop_environment.h"
10
11namespace remoting {
12
[email protected]96361d02013-05-08 18:26:1813class CurtainMode;
[email protected]ac115ce2013-04-24 20:44:3814class HostWindow;
15class LocalInputMonitor;
16
[email protected]da457fc2013-03-14 16:32:1217// Same as BasicDesktopEnvironment but supports desktop resizing and X DAMAGE
18// notifications on Linux.
19class Me2MeDesktopEnvironment : public BasicDesktopEnvironment {
20 public:
Peter Boströme9178e42021-09-22 18:11:4921 Me2MeDesktopEnvironment(const Me2MeDesktopEnvironment&) = delete;
22 Me2MeDesktopEnvironment& operator=(const Me2MeDesktopEnvironment&) = delete;
23
dcheng562aba52014-10-21 12:30:1424 ~Me2MeDesktopEnvironment() override;
[email protected]da457fc2013-03-14 16:32:1225
26 // DesktopEnvironment interface.
Joe Downing505ae0d02018-10-17 17:47:3027 std::unique_ptr<ActionExecutor> CreateActionExecutor() override;
dcheng0765c492016-04-06 22:41:5328 std::unique_ptr<ScreenControls> CreateScreenControls() override;
dcheng562aba52014-10-21 12:30:1429 std::string GetCapabilities() const override;
[email protected]da457fc2013-03-14 16:32:1230
31 protected:
32 friend class Me2MeDesktopEnvironmentFactory;
[email protected]231316a2013-03-25 06:01:1233 Me2MeDesktopEnvironment(
34 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
sergeyu85df3c482016-02-15 05:59:0835 scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
[email protected]231316a2013-03-25 06:01:1236 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
zijiehe4aa6ea42016-11-12 01:28:1637 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
Gary Kacmarcika7e33e42019-02-22 19:23:2838 base::WeakPtr<ClientSessionControl> client_session_control,
zijiehe4aa6ea42016-11-12 01:28:1639 const DesktopEnvironmentOptions& options);
[email protected]96361d02013-05-08 18:26:1840
41 // Initializes security features of the desktop environment (the curtain mode
42 // and in-session UI).
43 bool InitializeSecurity(
zijiehe4aa6ea42016-11-12 01:28:1644 base::WeakPtr<ClientSessionControl> client_session_control);
[email protected]da457fc2013-03-14 16:32:1245
46 private:
[email protected]96361d02013-05-08 18:26:1847 // "Curtains" the session making sure it is disconnected from the local
48 // console.
dcheng0765c492016-04-06 22:41:5349 std::unique_ptr<CurtainMode> curtain_;
[email protected]96361d02013-05-08 18:26:1850
[email protected]ac115ce2013-04-24 20:44:3851 // Presents the disconnect window to the local user.
dcheng0765c492016-04-06 22:41:5352 std::unique_ptr<HostWindow> disconnect_window_;
[email protected]ac115ce2013-04-24 20:44:3853
54 // Notifies the client session about the local mouse movements.
dcheng0765c492016-04-06 22:41:5355 std::unique_ptr<LocalInputMonitor> local_input_monitor_;
[email protected]da457fc2013-03-14 16:32:1256};
57
58// Used to create |Me2MeDesktopEnvironment| instances.
59class Me2MeDesktopEnvironmentFactory : public BasicDesktopEnvironmentFactory {
60 public:
[email protected]231316a2013-03-25 06:01:1261 Me2MeDesktopEnvironmentFactory(
62 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
sergeyu85df3c482016-02-15 05:59:0863 scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
[email protected]231316a2013-03-25 06:01:1264 scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
Scott Violet9778dcd2019-06-20 21:59:3765 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
Peter Boströme9178e42021-09-22 18:11:4966
67 Me2MeDesktopEnvironmentFactory(const Me2MeDesktopEnvironmentFactory&) =
68 delete;
69 Me2MeDesktopEnvironmentFactory& operator=(
70 const Me2MeDesktopEnvironmentFactory&) = delete;
71
dcheng562aba52014-10-21 12:30:1472 ~Me2MeDesktopEnvironmentFactory() override;
[email protected]da457fc2013-03-14 16:32:1273
74 // DesktopEnvironmentFactory interface.
dcheng0765c492016-04-06 22:41:5375 std::unique_ptr<DesktopEnvironment> Create(
zijiehe4aa6ea42016-11-12 01:28:1676 base::WeakPtr<ClientSessionControl> client_session_control,
Yuwei Huang3628aa52021-12-08 23:00:5577 base::WeakPtr<ClientSessionEvents> client_session_events,
zijiehe4aa6ea42016-11-12 01:28:1678 const DesktopEnvironmentOptions& options) override;
[email protected]da457fc2013-03-14 16:32:1279};
80
81} // namespace remoting
82
83#endif // REMOTING_HOST_ME2ME_DESKTOP_ENVIRONMENT_H_