1// Copyright 2013 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_IT2ME_DESKTOP_ENVIRONMENT_H_
6#define REMOTING_HOST_IT2ME_DESKTOP_ENVIRONMENT_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "base/memory/weak_ptr.h"
10#include "remoting/host/basic_desktop_environment.h"
11
12namespace remoting {
13
14class HostWindow;
15class LocalInputMonitor;
16
17// Same as BasicDesktopEnvironment but also presents the Continue window to
18// the local user.
19class It2MeDesktopEnvironment : public BasicDesktopEnvironment {
20 public:
21  virtual ~It2MeDesktopEnvironment();
22
23 protected:
24  friend class It2MeDesktopEnvironmentFactory;
25  It2MeDesktopEnvironment(
26      scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
27      scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
28      scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
29      base::WeakPtr<ClientSessionControl> client_session_control);
30
31 private:
32  // Presents the continue window to the local user.
33  scoped_ptr<HostWindow> continue_window_;
34
35  // Presents the disconnect window to the local user.
36  scoped_ptr<HostWindow> disconnect_window_;
37
38  // Notifies the client session about the local mouse movements.
39  scoped_ptr<LocalInputMonitor> local_input_monitor_;
40
41  DISALLOW_COPY_AND_ASSIGN(It2MeDesktopEnvironment);
42};
43
44// Used to create |It2MeDesktopEnvironment| instances.
45class It2MeDesktopEnvironmentFactory : public BasicDesktopEnvironmentFactory {
46 public:
47  It2MeDesktopEnvironmentFactory(
48      scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
49      scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
50      scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
51  virtual ~It2MeDesktopEnvironmentFactory();
52
53  // DesktopEnvironmentFactory interface.
54  virtual scoped_ptr<DesktopEnvironment> Create(
55      base::WeakPtr<ClientSessionControl> client_session_control) OVERRIDE;
56
57 private:
58  DISALLOW_COPY_AND_ASSIGN(It2MeDesktopEnvironmentFactory);
59};
60
61}  // namespace remoting
62
63#endif  // REMOTING_HOST_IT2ME_DESKTOP_ENVIRONMENT_H_
64