1// Copyright 2014 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#ifndef REMOTING_HOST_FAKE_DESKTOP_ENVIRONMENT_H_
6#define REMOTING_HOST_FAKE_DESKTOP_ENVIRONMENT_H_
7
8#include "remoting/host/desktop_environment.h"
9#include "remoting/host/fake_desktop_capturer.h"
10#include "remoting/host/fake_mouse_cursor_monitor.h"
11#include "remoting/host/input_injector.h"
12#include "remoting/host/screen_controls.h"
13
14namespace remoting {
15
16class FakeInputInjector : public InputInjector {
17 public:
18  FakeInputInjector();
19  virtual ~FakeInputInjector();
20
21  virtual void Start(
22      scoped_ptr<protocol::ClipboardStub> client_clipboard) OVERRIDE;
23  virtual void InjectKeyEvent(const protocol::KeyEvent& event) OVERRIDE;
24  virtual void InjectTextEvent(const protocol::TextEvent& event) OVERRIDE;
25  virtual void InjectMouseEvent(const protocol::MouseEvent& event) OVERRIDE;
26  virtual void InjectClipboardEvent(
27      const protocol::ClipboardEvent& event) OVERRIDE;
28};
29
30class FakeScreenControls : public ScreenControls {
31 public:
32  FakeScreenControls();
33  virtual ~FakeScreenControls();
34
35  // ScreenControls implementation.
36  virtual void SetScreenResolution(const ScreenResolution& resolution) OVERRIDE;
37};
38
39class FakeDesktopEnvironment : public DesktopEnvironment {
40 public:
41  FakeDesktopEnvironment();
42  virtual ~FakeDesktopEnvironment();
43
44  // Sets frame generator to be used for FakeDesktopCapturer created by
45  // FakeDesktopEnvironment.
46  void set_frame_generator(
47      FakeDesktopCapturer::FrameGenerator frame_generator) {
48    frame_generator_ = frame_generator;
49  }
50
51  // DesktopEnvironment implementation.
52  virtual scoped_ptr<AudioCapturer> CreateAudioCapturer() OVERRIDE;
53  virtual scoped_ptr<InputInjector> CreateInputInjector() OVERRIDE;
54  virtual scoped_ptr<ScreenControls> CreateScreenControls() OVERRIDE;
55  virtual scoped_ptr<webrtc::DesktopCapturer> CreateVideoCapturer() OVERRIDE;
56  virtual scoped_ptr<webrtc::MouseCursorMonitor> CreateMouseCursorMonitor()
57      OVERRIDE;
58  virtual std::string GetCapabilities() const OVERRIDE;
59  virtual void SetCapabilities(const std::string& capabilities) OVERRIDE;
60  virtual scoped_ptr<GnubbyAuthHandler> CreateGnubbyAuthHandler(
61      protocol::ClientStub* client_stub) OVERRIDE;
62
63 private:
64  FakeDesktopCapturer::FrameGenerator frame_generator_;
65
66  DISALLOW_COPY_AND_ASSIGN(FakeDesktopEnvironment);
67};
68
69class FakeDesktopEnvironmentFactory : public DesktopEnvironmentFactory {
70 public:
71  FakeDesktopEnvironmentFactory();
72  virtual ~FakeDesktopEnvironmentFactory();
73
74  // Sets frame generator to be used for FakeDesktopCapturer created by
75  // FakeDesktopEnvironment.
76  void set_frame_generator(
77      FakeDesktopCapturer::FrameGenerator frame_generator) {
78    frame_generator_ = frame_generator;
79  }
80
81  // DesktopEnvironmentFactory implementation.
82  virtual scoped_ptr<DesktopEnvironment> Create(
83      base::WeakPtr<ClientSessionControl> client_session_control) OVERRIDE;
84  virtual void SetEnableCurtaining(bool enable) OVERRIDE;
85  virtual bool SupportsAudioCapture() const OVERRIDE;
86  virtual void SetEnableGnubbyAuth(bool enable) OVERRIDE;
87
88 private:
89  FakeDesktopCapturer::FrameGenerator frame_generator_;
90
91  DISALLOW_COPY_AND_ASSIGN(FakeDesktopEnvironmentFactory);
92};
93
94}  // namespace remoting
95
96#endif  // REMOTING_HOST_FAKE_DESKTOP_ENVIRONMENT_H_
97