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