summaryrefslogtreecommitdiffstats
path: root/remoting/host/ipc_desktop_environment.cc
diff options
context:
space:
mode:
authoralexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-25 06:01:12 +0000
committeralexeypa@chromium.org <alexeypa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-25 06:01:12 +0000
commit231316ac73519128e33c4cf0dcf3777cc362755a (patch)
tree52aac28e7dc43325efc860a8f8cdf64503b79c50 /remoting/host/ipc_desktop_environment.cc
parentcf32b6c125778c8c116a51bc4035e39a85627aa0 (diff)
downloadchromium_src-231316ac73519128e33c4cf0dcf3777cc362755a.zip
chromium_src-231316ac73519128e33c4cf0dcf3777cc362755a.tar.gz
chromium_src-231316ac73519128e33c4cf0dcf3777cc362755a.tar.bz2
Removed task runners from the DesktopEnviroment interface and introduced ScreenControls/ClientSessionControl interfaces.
This CL removes all task runners that used to be passed to methods of DesktopEnviroment and DesktopEnviromentFactory interfaces. Instead each object implementing these interfaces receives the set of task runners it needs in the constructor. This change makes DesktopEnviroment and DesktopEnviromentFactory interfaces cleaner and easier to implement. Added the ScreenControls interface used by the client session to change the screen resolution. Objects implementing ScreenControls are created by DesktopEnvironment::CreateScreenControls() method. DesktopEnviromentFactory::Create() now receives a pointer to the ClientSessionControl interface providing a way to pause, resume, and disconnect the client session. It also receives notifications about the local mouse movements to temporarily block the remote input. The ClientSessionControl interface will be hooked up to the local impit monitor and the host UI once they will be moved to DesktopEnvironment. BUG=104544 Review URL: https://chromiumcodereview.appspot.com/12879006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190345 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/ipc_desktop_environment.cc')
-rw-r--r--remoting/host/ipc_desktop_environment.cc76
1 files changed, 35 insertions, 41 deletions
diff --git a/remoting/host/ipc_desktop_environment.cc b/remoting/host/ipc_desktop_environment.cc
index 59373a8..797cbd5 100644
--- a/remoting/host/ipc_desktop_environment.cc
+++ b/remoting/host/ipc_desktop_environment.cc
@@ -6,7 +6,6 @@
#include <utility>
-#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/process_util.h"
@@ -15,71 +14,62 @@
#include "media/video/capture/screen/screen_capturer.h"
#include "remoting/host/audio_capturer.h"
#include "remoting/host/chromoting_messages.h"
+#include "remoting/host/client_session_control.h"
#include "remoting/host/desktop_session.h"
#include "remoting/host/desktop_session_proxy.h"
#include "remoting/host/input_injector.h"
-#include "remoting/host/session_controller.h"
+#include "remoting/host/screen_controls.h"
namespace remoting {
IpcDesktopEnvironment::IpcDesktopEnvironment(
+ scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
+ scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
- const std::string& client_jid,
- const base::Closure& disconnect_callback,
+ base::WeakPtr<ClientSessionControl> client_session_control,
base::WeakPtr<DesktopSessionConnector> desktop_session_connector,
- bool virtual_terminal)
- : caller_task_runner_(caller_task_runner),
- desktop_session_proxy_(new DesktopSessionProxy(caller_task_runner,
- io_task_runner,
- client_jid,
- disconnect_callback)) {
- DCHECK(caller_task_runner_->BelongsToCurrentThread());
+ bool virtual_terminal) {
+ DCHECK(caller_task_runner->BelongsToCurrentThread());
+
+ desktop_session_proxy_ = new DesktopSessionProxy(audio_task_runner,
+ caller_task_runner,
+ io_task_runner,
+ capture_task_runner,
+ client_session_control);
desktop_session_proxy_->ConnectToDesktopSession(desktop_session_connector,
virtual_terminal);
}
IpcDesktopEnvironment::~IpcDesktopEnvironment() {
- DCHECK(caller_task_runner_->BelongsToCurrentThread());
}
-scoped_ptr<AudioCapturer> IpcDesktopEnvironment::CreateAudioCapturer(
- scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner) {
- DCHECK(caller_task_runner_->BelongsToCurrentThread());
-
- return desktop_session_proxy_->CreateAudioCapturer(audio_task_runner);
+scoped_ptr<AudioCapturer> IpcDesktopEnvironment::CreateAudioCapturer() {
+ return desktop_session_proxy_->CreateAudioCapturer();
}
-scoped_ptr<InputInjector> IpcDesktopEnvironment::CreateInputInjector(
- scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
- DCHECK(caller_task_runner_->BelongsToCurrentThread());
-
- return desktop_session_proxy_->CreateInputInjector(input_task_runner,
- ui_task_runner);
+scoped_ptr<InputInjector> IpcDesktopEnvironment::CreateInputInjector() {
+ return desktop_session_proxy_->CreateInputInjector();
}
-scoped_ptr<SessionController> IpcDesktopEnvironment::CreateSessionController() {
- DCHECK(caller_task_runner_->BelongsToCurrentThread());
-
- return desktop_session_proxy_->CreateSessionController();
+scoped_ptr<ScreenControls> IpcDesktopEnvironment::CreateScreenControls() {
+ return desktop_session_proxy_->CreateScreenControls();
}
-scoped_ptr<media::ScreenCapturer> IpcDesktopEnvironment::CreateVideoCapturer(
- scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
- scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner) {
- DCHECK(caller_task_runner_->BelongsToCurrentThread());
-
- return desktop_session_proxy_->CreateVideoCapturer(capture_task_runner,
- encode_task_runner);
+scoped_ptr<media::ScreenCapturer> IpcDesktopEnvironment::CreateVideoCapturer() {
+ return desktop_session_proxy_->CreateVideoCapturer();
}
IpcDesktopEnvironmentFactory::IpcDesktopEnvironmentFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> audio_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
+ scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
IPC::Sender* daemon_channel)
- : caller_task_runner_(caller_task_runner),
+ : audio_task_runner_(audio_task_runner),
+ caller_task_runner_(caller_task_runner),
+ capture_task_runner_(capture_task_runner),
io_task_runner_(io_task_runner),
curtain_activated_(false),
daemon_channel_(daemon_channel),
@@ -97,13 +87,17 @@ void IpcDesktopEnvironmentFactory::SetActivated(bool activated) {
}
scoped_ptr<DesktopEnvironment> IpcDesktopEnvironmentFactory::Create(
- const std::string& client_jid,
- const base::Closure& disconnect_callback) {
+ base::WeakPtr<ClientSessionControl> client_session_control) {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
- return scoped_ptr<DesktopEnvironment>(new IpcDesktopEnvironment(
- caller_task_runner_, io_task_runner_, client_jid, disconnect_callback,
- connector_factory_.GetWeakPtr(), curtain_activated_));
+ return scoped_ptr<DesktopEnvironment>(
+ new IpcDesktopEnvironment(audio_task_runner_,
+ caller_task_runner_,
+ capture_task_runner_,
+ io_task_runner_,
+ client_session_control,
+ connector_factory_.GetWeakPtr(),
+ curtain_activated_));
}
bool IpcDesktopEnvironmentFactory::SupportsAudioCapture() const {