// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "remoting/host/fake_desktop_environment.h" #include #include #include "base/memory/weak_ptr.h" #include "remoting/host/audio_capturer.h" #include "remoting/host/desktop_capturer_proxy.h" #include "remoting/host/desktop_display_info_monitor.h" #include "remoting/host/fake_keyboard_layout_monitor.h" #include "remoting/host/file_transfer/file_operations.h" #include "remoting/host/input_injector.h" #include "remoting/host/keyboard_layout_monitor.h" #include "remoting/host/remote_open_url/fake_url_forwarder_configurator.h" #include "remoting/host/remote_open_url/url_forwarder_configurator.h" #include "remoting/proto/event.pb.h" #include "remoting/protocol/fake_desktop_capturer.h" namespace remoting { FakeInputInjector::FakeInputInjector() {} FakeInputInjector::~FakeInputInjector() = default; void FakeInputInjector::Start( std::unique_ptr client_clipboard) {} void FakeInputInjector::InjectKeyEvent(const protocol::KeyEvent& event) { if (key_events_) key_events_->push_back(event); } void FakeInputInjector::InjectTextEvent(const protocol::TextEvent& event) { if (text_events_) text_events_->push_back(event); } void FakeInputInjector::InjectMouseEvent(const protocol::MouseEvent& event) { if (mouse_events_) mouse_events_->push_back(event); } void FakeInputInjector::InjectTouchEvent(const protocol::TouchEvent& event) { if (touch_events_) touch_events_->push_back(event); } void FakeInputInjector::InjectClipboardEvent( const protocol::ClipboardEvent& event) { if (clipboard_events_) clipboard_events_->push_back(event); } FakeScreenControls::FakeScreenControls() = default; FakeScreenControls::~FakeScreenControls() = default; void FakeScreenControls::SetScreenResolution( const ScreenResolution& resolution, absl::optional screen_id) {} FakeDesktopEnvironment::FakeDesktopEnvironment( scoped_refptr capture_thread, const DesktopEnvironmentOptions& options) : capture_thread_(std::move(capture_thread)), options_(options) {} FakeDesktopEnvironment::~FakeDesktopEnvironment() = default; // DesktopEnvironment implementation. std::unique_ptr FakeDesktopEnvironment::CreateActionExecutor() { return nullptr; } std::unique_ptr FakeDesktopEnvironment::CreateAudioCapturer() { return nullptr; } std::unique_ptr FakeDesktopEnvironment::CreateInputInjector() { std::unique_ptr result(new FakeInputInjector()); last_input_injector_ = result->weak_factory_.GetWeakPtr(); return std::move(result); } std::unique_ptr FakeDesktopEnvironment::CreateScreenControls() { return std::make_unique(); } std::unique_ptr FakeDesktopEnvironment::CreateVideoCapturer() { auto fake_capturer = std::make_unique(); if (!frame_generator_.is_null()) fake_capturer->set_frame_generator(frame_generator_); auto result = std::make_unique(capture_thread_, capture_thread_); result->set_capturer(std::move(fake_capturer)); return std::move(result); } DesktopDisplayInfoMonitor* FakeDesktopEnvironment::GetDisplayInfoMonitor() { return nullptr; } std::unique_ptr FakeDesktopEnvironment::CreateMouseCursorMonitor() { return std::make_unique(); } std::unique_ptr FakeDesktopEnvironment::CreateKeyboardLayoutMonitor( base::RepeatingCallback callback) { return std::make_unique(); } std::unique_ptr FakeDesktopEnvironment::CreateFileOperations() { return nullptr; } std::unique_ptr FakeDesktopEnvironment::CreateUrlForwarderConfigurator() { return std::make_unique(); } std::string FakeDesktopEnvironment::GetCapabilities() const { return std::string(); } void FakeDesktopEnvironment::SetCapabilities(const std::string& capabilities) {} uint32_t FakeDesktopEnvironment::GetDesktopSessionId() const { return desktop_session_id_; } std::unique_ptr FakeDesktopEnvironment::CreateComposingVideoCapturer() { return nullptr; } std::unique_ptr FakeDesktopEnvironment::CreateRemoteWebAuthnStateChangeNotifier() { return nullptr; } const DesktopEnvironmentOptions& FakeDesktopEnvironment::options() const { return options_; } FakeDesktopEnvironmentFactory::FakeDesktopEnvironmentFactory( scoped_refptr capture_thread) : capture_thread_(std::move(capture_thread)) {} FakeDesktopEnvironmentFactory::~FakeDesktopEnvironmentFactory() = default; // DesktopEnvironmentFactory implementation. std::unique_ptr FakeDesktopEnvironmentFactory::Create( base::WeakPtr client_session_control, base::WeakPtr client_session_events, const DesktopEnvironmentOptions& options) { std::unique_ptr result( new FakeDesktopEnvironment(capture_thread_, options)); result->set_frame_generator(frame_generator_); result->set_desktop_session_id(desktop_session_id_); last_desktop_environment_ = result->weak_factory_.GetWeakPtr(); return std::move(result); } bool FakeDesktopEnvironmentFactory::SupportsAudioCapture() const { return false; } } // namespace remoting