Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Unified Diff: remoting/host/ipc_desktop_environment.cc

Issue 12096071: Adding a unit test to verify the IPC channel between the network and desktop processes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/host/ipc_desktop_environment.cc
diff --git a/remoting/host/ipc_desktop_environment.cc b/remoting/host/ipc_desktop_environment.cc
index d94a3816041e0856ba648dda5dc02f99a1f9bdb9..cb853195b48fa1c3d57dcbaf840099e781e90360 100644
--- a/remoting/host/ipc_desktop_environment.cc
+++ b/remoting/host/ipc_desktop_environment.cc
@@ -9,6 +9,7 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/logging.h"
+#include "base/process_util.h"
#include "base/single_thread_task_runner.h"
#include "ipc/ipc_channel_proxy.h"
#include "media/video/capture/screen/screen_capturer.h"
@@ -21,6 +22,7 @@ namespace remoting {
IpcDesktopEnvironment::IpcDesktopEnvironment(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
+ scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
const std::string& client_jid,
const base::Closure& disconnect_callback,
base::WeakPtr<DesktopSessionConnector> desktop_session_connector)
@@ -28,6 +30,7 @@ IpcDesktopEnvironment::IpcDesktopEnvironment(
connected_(false),
desktop_session_connector_(desktop_session_connector),
desktop_session_proxy_(new DesktopSessionProxy(caller_task_runner,
+ io_task_runner,
client_jid,
disconnect_callback)) {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
@@ -79,8 +82,10 @@ void IpcDesktopEnvironment::ConnectToDesktopSession() {
IpcDesktopEnvironmentFactory::IpcDesktopEnvironmentFactory(
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner,
+ scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
IPC::ChannelProxy* daemon_channel)
: caller_task_runner_(caller_task_runner),
+ io_task_runner_(io_task_runner),
daemon_channel_(daemon_channel),
connector_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
next_id_(0) {
@@ -96,7 +101,7 @@ scoped_ptr<DesktopEnvironment> IpcDesktopEnvironmentFactory::Create(
DCHECK(caller_task_runner_->BelongsToCurrentThread());
return scoped_ptr<DesktopEnvironment>(new IpcDesktopEnvironment(
- caller_task_runner_, client_jid, disconnect_callback,
+ caller_task_runner_, io_task_runner_, client_jid, disconnect_callback,
connector_factory_.GetWeakPtr()));
}
@@ -140,7 +145,7 @@ void IpcDesktopEnvironmentFactory::DisconnectTerminal(
void IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached(
int terminal_id,
- IPC::PlatformFileForTransit desktop_process,
+ base::ProcessHandle desktop_process,
IPC::PlatformFileForTransit desktop_pipe) {
if (!caller_task_runner_->BelongsToCurrentThread()) {
caller_task_runner_->PostTask(FROM_HERE, base::Bind(
@@ -154,15 +159,13 @@ void IpcDesktopEnvironmentFactory::OnDesktopSessionAgentAttached(
i->second->DetachFromDesktop();
i->second->AttachToDesktop(desktop_process, desktop_pipe);
} else {
+ base::CloseProcessHandle(desktop_process);
+
#if defined(OS_POSIX)
- DCHECK(desktop_process.auto_close);
DCHECK(desktop_pipe.auto_close);
- base::ClosePlatformFile(desktop_process.fd);
base::ClosePlatformFile(desktop_pipe.fd);
-#elif defined(OS_WIN)
- base::ClosePlatformFile(desktop_process);
-#endif // defined(OS_WIN)
+#endif // defined(OS_POSIX)
}
}

Powered by Google App Engine
This is Rietveld 408576698