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

Unified Diff: remoting/host/win/wts_session_process_delegate.cc

Issue 2680973006: Mojo EDK: Add safe process connection API (Closed)
Patch Set: . Created 3 years, 10 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
« no previous file with comments | « remoting/host/win/unprivileged_process_delegate.cc ('k') | services/service_manager/README.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/win/wts_session_process_delegate.cc
diff --git a/remoting/host/win/wts_session_process_delegate.cc b/remoting/host/win/wts_session_process_delegate.cc
index 635bd04b68dadb4923ac4a836a2add44aba5847e..c665a59c4571a3ce7ecce4adc4a9a623fe2d7d36 100644
--- a/remoting/host/win/wts_session_process_delegate.cc
+++ b/remoting/host/win/wts_session_process_delegate.cc
@@ -7,6 +7,7 @@
#include "remoting/host/win/wts_session_process_delegate.h"
+#include <memory>
#include <utility>
#include "base/bind.h"
@@ -27,6 +28,7 @@
#include "ipc/ipc_message.h"
#include "mojo/edk/embedder/embedder.h"
#include "mojo/edk/embedder/named_platform_channel_pair.h"
+#include "mojo/edk/embedder/pending_process_connection.h"
#include "mojo/edk/embedder/platform_channel_pair.h"
#include "mojo/edk/embedder/platform_handle_utils.h"
#include "mojo/edk/embedder/scoped_platform_handle.h"
@@ -155,8 +157,8 @@ class WtsSessionProcessDelegate::Core
// Tracks the id of the worker process.
base::ProcessId worker_process_pid_ = base::kNullProcessId;
- // The mojo child token for the process being launched.
- std::string mojo_child_token_;
+ // The pending process connection for the process being launched.
+ std::unique_ptr<mojo::edk::PendingProcessConnection> process_connection_;
DISALLOW_COPY_AND_ASSIGN(Core);
};
@@ -257,10 +259,7 @@ void WtsSessionProcessDelegate::Core::CloseChannel() {
channel_.reset();
elevated_server_handle_.reset();
elevated_launcher_pid_ = base::kNullProcessId;
- if (!mojo_child_token_.empty()) {
- mojo::edk::ChildProcessLaunchFailed(mojo_child_token_);
- mojo_child_token_.clear();
- }
+ process_connection_.reset();
}
void WtsSessionProcessDelegate::Core::KillProcess() {
@@ -391,14 +390,12 @@ void WtsSessionProcessDelegate::Core::DoLaunchProcess() {
target_command_->GetProgram());
}
- const std::string mojo_message_pipe_token = mojo::edk::GenerateRandomToken();
- mojo_child_token_ = mojo::edk::GenerateRandomToken();
+ std::string mojo_pipe_token;
+ process_connection_ = base::MakeUnique<mojo::edk::PendingProcessConnection>();
std::unique_ptr<IPC::ChannelProxy> channel = IPC::ChannelProxy::Create(
- mojo::edk::CreateParentMessagePipe(mojo_message_pipe_token,
- mojo_child_token_)
- .release(),
+ process_connection_->CreateMessagePipe(&mojo_pipe_token).release(),
IPC::Channel::MODE_SERVER, this, io_task_runner_);
- command_line.AppendSwitchASCII(kMojoPipeToken, mojo_message_pipe_token);
+ command_line.AppendSwitchASCII(kMojoPipeToken, mojo_pipe_token);
std::unique_ptr<mojo::edk::PlatformChannelPair> normal_mojo_channel;
std::unique_ptr<mojo::edk::NamedPlatformChannelPair> elevated_mojo_channel;
@@ -558,10 +555,8 @@ void WtsSessionProcessDelegate::Core::ReportProcessLaunched(
DCHECK(caller_task_runner_->BelongsToCurrentThread());
DCHECK(!worker_process_.IsValid());
- mojo::edk::ChildProcessLaunched(worker_process.Get(),
- std::move(server_handle),
- mojo_child_token_);
- mojo_child_token_.clear();
+ process_connection_->Connect(worker_process.Get(), std::move(server_handle));
+ process_connection_.reset();
worker_process_ = std::move(worker_process);
// Report a handle that can be used to wait for the worker process completion,
« no previous file with comments | « remoting/host/win/unprivileged_process_delegate.cc ('k') | services/service_manager/README.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698