me2me_desktop_environment.h 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // Copyright (c) 2012 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. #ifndef REMOTING_HOST_ME2ME_DESKTOP_ENVIRONMENT_H_
  5. #define REMOTING_HOST_ME2ME_DESKTOP_ENVIRONMENT_H_
  6. #include "base/task/single_thread_task_runner.h"
  7. #include "remoting/host/basic_desktop_environment.h"
  8. namespace remoting {
  9. class CurtainMode;
  10. class HostWindow;
  11. class LocalInputMonitor;
  12. // Same as BasicDesktopEnvironment but supports desktop resizing and X DAMAGE
  13. // notifications on Linux.
  14. class Me2MeDesktopEnvironment : public BasicDesktopEnvironment {
  15. public:
  16. Me2MeDesktopEnvironment(const Me2MeDesktopEnvironment&) = delete;
  17. Me2MeDesktopEnvironment& operator=(const Me2MeDesktopEnvironment&) = delete;
  18. ~Me2MeDesktopEnvironment() override;
  19. // DesktopEnvironment interface.
  20. std::unique_ptr<ActionExecutor> CreateActionExecutor() override;
  21. std::unique_ptr<ScreenControls> CreateScreenControls() override;
  22. std::string GetCapabilities() const override;
  23. protected:
  24. friend class Me2MeDesktopEnvironmentFactory;
  25. Me2MeDesktopEnvironment(
  26. scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
  27. scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
  28. scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
  29. scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
  30. base::WeakPtr<ClientSessionControl> client_session_control,
  31. const DesktopEnvironmentOptions& options);
  32. // Initializes security features of the desktop environment (the curtain mode
  33. // and in-session UI).
  34. bool InitializeSecurity(
  35. base::WeakPtr<ClientSessionControl> client_session_control);
  36. private:
  37. // "Curtains" the session making sure it is disconnected from the local
  38. // console.
  39. std::unique_ptr<CurtainMode> curtain_;
  40. // Presents the disconnect window to the local user.
  41. std::unique_ptr<HostWindow> disconnect_window_;
  42. // Notifies the client session about the local mouse movements.
  43. std::unique_ptr<LocalInputMonitor> local_input_monitor_;
  44. };
  45. // Used to create |Me2MeDesktopEnvironment| instances.
  46. class Me2MeDesktopEnvironmentFactory : public BasicDesktopEnvironmentFactory {
  47. public:
  48. Me2MeDesktopEnvironmentFactory(
  49. scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
  50. scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner,
  51. scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
  52. scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
  53. Me2MeDesktopEnvironmentFactory(const Me2MeDesktopEnvironmentFactory&) =
  54. delete;
  55. Me2MeDesktopEnvironmentFactory& operator=(
  56. const Me2MeDesktopEnvironmentFactory&) = delete;
  57. ~Me2MeDesktopEnvironmentFactory() override;
  58. // DesktopEnvironmentFactory interface.
  59. std::unique_ptr<DesktopEnvironment> Create(
  60. base::WeakPtr<ClientSessionControl> client_session_control,
  61. base::WeakPtr<ClientSessionEvents> client_session_events,
  62. const DesktopEnvironmentOptions& options) override;
  63. };
  64. } // namespace remoting
  65. #endif // REMOTING_HOST_ME2ME_DESKTOP_ENVIRONMENT_H_