Index: remoting/host/ipc_desktop_environment_factory.cc |
diff --git a/remoting/host/ipc_desktop_environment_factory.cc b/remoting/host/ipc_desktop_environment_factory.cc |
index 250b4f4101f42b508e66f80ce71e895f6e5a2717..b5bdbb2fa9f6b0efa0a0f1713e580d4c9628b2b5 100644 |
--- a/remoting/host/ipc_desktop_environment_factory.cc |
+++ b/remoting/host/ipc_desktop_environment_factory.cc |
@@ -21,39 +21,31 @@ |
namespace remoting { |
IpcDesktopEnvironmentFactory::IpcDesktopEnvironmentFactory( |
- IPC::ChannelProxy* daemon_channel, |
- scoped_refptr<base::SingleThreadTaskRunner> audio_capture_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> video_capture_task_runner) |
- : DesktopEnvironmentFactory(input_task_runner, ui_task_runner), |
+ scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
+ IPC::ChannelProxy* daemon_channel) |
+ : DesktopEnvironmentFactory(caller_task_runner), |
daemon_channel_(daemon_channel), |
- audio_capture_task_runner_(audio_capture_task_runner), |
- network_task_runner_(network_task_runner), |
- video_capture_task_runner_(video_capture_task_runner), |
+ connector_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
next_id_(0) { |
} |
IpcDesktopEnvironmentFactory::~IpcDesktopEnvironmentFactory() { |
+ DCHECK(caller_task_runner()->BelongsToCurrentThread()); |
} |
-scoped_ptr<DesktopEnvironment> IpcDesktopEnvironmentFactory::Create() { |
- DCHECK(network_task_runner_->BelongsToCurrentThread()); |
- |
- scoped_refptr<DesktopSessionProxy> desktop_session_proxy( |
- new DesktopSessionProxy(audio_capture_task_runner_, |
- network_task_runner_, |
- video_capture_task_runner_)); |
+scoped_ptr<DesktopEnvironment> IpcDesktopEnvironmentFactory::Create( |
+ const std::string& client_jid, |
+ const base::Closure& disconnect_callback) { |
+ DCHECK(caller_task_runner()->BelongsToCurrentThread()); |
return scoped_ptr<DesktopEnvironment>(new IpcDesktopEnvironment( |
- input_task_runner_, network_task_runner_, ui_task_runner_, |
- this, desktop_session_proxy)); |
+ caller_task_runner(), client_jid, disconnect_callback, |
+ connector_factory_.GetWeakPtr())); |
} |
void IpcDesktopEnvironmentFactory::ConnectTerminal( |
scoped_refptr<DesktopSessionProxy> desktop_session_proxy) { |
- DCHECK(network_task_runner_->BelongsToCurrentThread()); |
+ DCHECK(caller_task_runner()->BelongsToCurrentThread()); |
int id = next_id_++; |
bool inserted = active_connections_.insert( |
@@ -66,7 +58,7 @@ void IpcDesktopEnvironmentFactory::ConnectTerminal( |
void IpcDesktopEnvironmentFactory::DisconnectTerminal( |
scoped_refptr<DesktopSessionProxy> desktop_session_proxy) { |
- DCHECK(network_task_runner_->BelongsToCurrentThread()); |
+ DCHECK(caller_task_runner()->BelongsToCurrentThread()); |
ActiveConnectionsList::iterator i; |
for (i = active_connections_.begin(); i != active_connections_.end(); ++i) { |
@@ -87,8 +79,8 @@ void IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached( |
int terminal_id, |
IPC::PlatformFileForTransit desktop_process, |
IPC::PlatformFileForTransit desktop_pipe) { |
- if (!network_task_runner_->BelongsToCurrentThread()) { |
- network_task_runner_->PostTask(FROM_HERE, base::Bind( |
+ if (!caller_task_runner()->BelongsToCurrentThread()) { |
+ caller_task_runner()->PostTask(FROM_HERE, base::Bind( |
&IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached, |
base::Unretained(this), terminal_id, desktop_process, desktop_pipe)); |
return; |
@@ -112,8 +104,8 @@ void IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached( |
} |
void IpcDesktopEnvironmentFactory::OnTerminalDisconnected(int terminal_id) { |
- if (!network_task_runner_->BelongsToCurrentThread()) { |
- network_task_runner_->PostTask(FROM_HERE, base::Bind( |
+ if (!caller_task_runner()->BelongsToCurrentThread()) { |
+ caller_task_runner()->PostTask(FROM_HERE, base::Bind( |
&IpcDesktopEnvironmentFactory::OnTerminalDisconnected, |
base::Unretained(this), terminal_id)); |
return; |