basic_desktop_environment.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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/basic_desktop_environment.h"
6
7#include "base/bind.h"
8#include "base/logging.h"
9#include "base/single_thread_task_runner.h"
10#include "media/video/capture/screen/screen_capturer.h"
11#include "remoting/host/audio_capturer.h"
12#include "remoting/host/client_session_control.h"
13#include "remoting/host/input_injector.h"
14#include "remoting/host/screen_controls.h"
15
16namespace remoting {
17
18BasicDesktopEnvironment::~BasicDesktopEnvironment() {
19  DCHECK(caller_task_runner_->BelongsToCurrentThread());
20}
21
22scoped_ptr<AudioCapturer> BasicDesktopEnvironment::CreateAudioCapturer() {
23  DCHECK(caller_task_runner_->BelongsToCurrentThread());
24
25  return AudioCapturer::Create();
26}
27
28scoped_ptr<InputInjector> BasicDesktopEnvironment::CreateInputInjector() {
29  DCHECK(caller_task_runner_->BelongsToCurrentThread());
30
31  return InputInjector::Create(input_task_runner(), ui_task_runner());
32}
33
34scoped_ptr<ScreenControls> BasicDesktopEnvironment::CreateScreenControls() {
35  DCHECK(caller_task_runner_->BelongsToCurrentThread());
36
37  return scoped_ptr<ScreenControls>();
38}
39
40std::string BasicDesktopEnvironment::GetCapabilities() const {
41  return std::string();
42}
43
44void BasicDesktopEnvironment::SetCapabilities(const std::string& capabilities) {
45}
46
47scoped_ptr<media::ScreenCapturer>
48BasicDesktopEnvironment::CreateVideoCapturer() {
49  DCHECK(caller_task_runner_->BelongsToCurrentThread());
50
51  // The basic desktop environment does not use X DAMAGE, since it is
52  // broken on many systems - see http://crbug.com/73423.
53  return media::ScreenCapturer::Create();
54}
55
56BasicDesktopEnvironment::BasicDesktopEnvironment(
57    scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
58    scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
59    scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
60    base::WeakPtr<ClientSessionControl> client_session_control,
61    const UiStrings& ui_strings)
62    : caller_task_runner_(caller_task_runner),
63      input_task_runner_(input_task_runner),
64      ui_task_runner_(ui_task_runner) {
65  DCHECK(caller_task_runner_->BelongsToCurrentThread());
66}
67
68BasicDesktopEnvironmentFactory::BasicDesktopEnvironmentFactory(
69    scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
70    scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
71    scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
72    const UiStrings& ui_strings)
73    : caller_task_runner_(caller_task_runner),
74      input_task_runner_(input_task_runner),
75      ui_task_runner_(ui_task_runner),
76      ui_strings_(ui_strings) {
77}
78
79BasicDesktopEnvironmentFactory::~BasicDesktopEnvironmentFactory() {
80}
81
82scoped_ptr<DesktopEnvironment> BasicDesktopEnvironmentFactory::Create(
83    base::WeakPtr<ClientSessionControl> client_session_control) {
84  DCHECK(caller_task_runner_->BelongsToCurrentThread());
85
86  return scoped_ptr<DesktopEnvironment>(
87      new BasicDesktopEnvironment(caller_task_runner(),
88                                  input_task_runner(),
89                                  ui_task_runner(),
90                                  client_session_control,
91                                  ui_strings_));
92}
93
94bool BasicDesktopEnvironmentFactory::SupportsAudioCapture() const {
95  DCHECK(caller_task_runner_->BelongsToCurrentThread());
96
97  return AudioCapturer::IsSupported();
98}
99
100}  // namespace remoting
101