• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
5 #include "remoting/host/win/session_desktop_environment.h"
6 
7 #include "base/logging.h"
8 #include "base/single_thread_task_runner.h"
9 #include "remoting/host/audio_capturer.h"
10 #include "remoting/host/input_injector.h"
11 #include "remoting/host/screen_controls.h"
12 #include "remoting/host/win/session_input_injector.h"
13 #include "third_party/webrtc/modules/desktop_capture/screen_capturer.h"
14 
15 namespace remoting {
16 
~SessionDesktopEnvironment()17 SessionDesktopEnvironment::~SessionDesktopEnvironment() {
18 }
19 
CreateInputInjector()20 scoped_ptr<InputInjector> SessionDesktopEnvironment::CreateInputInjector() {
21   DCHECK(caller_task_runner()->BelongsToCurrentThread());
22 
23   scoped_ptr<InputInjector> input_injector = InputInjector::Create(
24       input_task_runner(), ui_task_runner());
25   input_injector.reset(new SessionInputInjectorWin(input_task_runner(),
26                                                    input_injector.Pass(),
27                                                    ui_task_runner(),
28                                                    inject_sas_));
29   return input_injector.Pass();
30 }
31 
SessionDesktopEnvironment(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,const base::Closure & inject_sas)32 SessionDesktopEnvironment::SessionDesktopEnvironment(
33     scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
34     scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
35     scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
36     const base::Closure& inject_sas)
37     : Me2MeDesktopEnvironment(caller_task_runner,
38                               input_task_runner,
39                               ui_task_runner),
40       inject_sas_(inject_sas) {
41 }
42 
SessionDesktopEnvironmentFactory(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,const base::Closure & inject_sas)43 SessionDesktopEnvironmentFactory::SessionDesktopEnvironmentFactory(
44     scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
45     scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
46     scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
47     const base::Closure& inject_sas)
48     : Me2MeDesktopEnvironmentFactory(caller_task_runner,
49                                      input_task_runner,
50                                      ui_task_runner),
51       inject_sas_(inject_sas) {
52   DCHECK(caller_task_runner->BelongsToCurrentThread());
53 }
54 
~SessionDesktopEnvironmentFactory()55 SessionDesktopEnvironmentFactory::~SessionDesktopEnvironmentFactory() {
56 }
57 
Create(base::WeakPtr<ClientSessionControl> client_session_control)58 scoped_ptr<DesktopEnvironment> SessionDesktopEnvironmentFactory::Create(
59     base::WeakPtr<ClientSessionControl> client_session_control) {
60   DCHECK(caller_task_runner()->BelongsToCurrentThread());
61 
62   scoped_ptr<SessionDesktopEnvironment> desktop_environment(
63       new SessionDesktopEnvironment(caller_task_runner(),
64                                     input_task_runner(),
65                                     ui_task_runner(),
66                                     inject_sas_));
67   if (!desktop_environment->InitializeSecurity(client_session_control,
68                                                curtain_enabled())) {
69     return scoped_ptr<DesktopEnvironment>();
70   }
71 
72   return desktop_environment.PassAs<DesktopEnvironment>();
73 }
74 
75 }  // namespace remoting
76