| 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 4a2a30de6b6dfa0e5b6232b4c881c09bf60048a8..c2ba5d67eb91d52b33997a585fc95dc65bac426f 100644
|
| --- a/remoting/host/win/wts_session_process_delegate.cc
|
| +++ b/remoting/host/win/wts_session_process_delegate.cc
|
| @@ -7,6 +7,8 @@
|
|
|
| #include "remoting/host/win/wts_session_process_delegate.h"
|
|
|
| +#include <utility>
|
| +
|
| #include "base/bind.h"
|
| #include "base/command_line.h"
|
| #include "base/files/file_path.h"
|
| @@ -89,10 +91,10 @@ class WtsSessionProcessDelegate::Core
|
|
|
| // Creates and initializes the job object that will sandbox the launched child
|
| // processes.
|
| - void InitializeJob(scoped_ptr<base::win::ScopedHandle> job);
|
| + void InitializeJob(ScopedHandle job);
|
|
|
| // Notified that the job object initialization is complete.
|
| - void InitializeJobCompleted(scoped_ptr<base::win::ScopedHandle> job);
|
| + void InitializeJobCompleted(ScopedHandle job);
|
|
|
| // Called when the number of processes running in the job reaches zero.
|
| void OnActiveProcessZero();
|
| @@ -155,8 +157,7 @@ WtsSessionProcessDelegate::Core::Core(
|
| get_named_pipe_client_pid_(nullptr),
|
| launch_elevated_(launch_elevated),
|
| launch_pending_(false),
|
| - target_command_(target_command.Pass()) {
|
| -}
|
| + target_command_(std::move(target_command)) {}
|
|
|
| bool WtsSessionProcessDelegate::Core::Initialize(uint32_t session_id) {
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
| @@ -198,19 +199,13 @@ bool WtsSessionProcessDelegate::Core::Initialize(uint32_t session_id) {
|
| return false;
|
| }
|
|
|
| - // ScopedHandle is not compatible with base::Passed, so we wrap it to
|
| - // a scoped pointer.
|
| - scoped_ptr<ScopedHandle> job_wrapper(new ScopedHandle());
|
| - *job_wrapper = job.Pass();
|
| -
|
| // To receive job object notifications the job object is registered with
|
| // the completion port represented by |io_task_runner|. The registration has
|
| // to be done on the I/O thread because
|
| // MessageLoopForIO::RegisterJobObject() can only be called via
|
| // MessageLoopForIO::current().
|
| io_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&Core::InitializeJob, this, base::Passed(&job_wrapper)));
|
| + FROM_HERE, base::Bind(&Core::InitializeJob, this, base::Passed(&job)));
|
| }
|
|
|
| // Create a session token for the launched process.
|
| @@ -331,7 +326,7 @@ void WtsSessionProcessDelegate::Core::OnChannelConnected(int32_t peer_pid) {
|
| return;
|
| }
|
|
|
| - ReportProcessLaunched(worker_process.Pass());
|
| + ReportProcessLaunched(std::move(worker_process));
|
| }
|
|
|
| if (event_handler_)
|
| @@ -422,14 +417,14 @@ void WtsSessionProcessDelegate::Core::DoLaunchProcess() {
|
| return;
|
| }
|
|
|
| - channel_ = channel.Pass();
|
| - pipe_ = pipe.Pass();
|
| + channel_ = std::move(channel);
|
| + pipe_ = std::move(pipe);
|
|
|
| // Report success if the worker process is lauched directly. Otherwise, PID of
|
| // the client connected to the pipe will be used later. See
|
| // OnChannelConnected().
|
| if (!launch_elevated_)
|
| - ReportProcessLaunched(worker_process.Pass());
|
| + ReportProcessLaunched(std::move(worker_process));
|
| }
|
|
|
| void WtsSessionProcessDelegate::Core::DrainJobNotifications() {
|
| @@ -455,12 +450,11 @@ void WtsSessionProcessDelegate::Core::DrainJobNotificationsCompleted() {
|
| }
|
| }
|
|
|
| -void WtsSessionProcessDelegate::Core::InitializeJob(
|
| - scoped_ptr<base::win::ScopedHandle> job) {
|
| +void WtsSessionProcessDelegate::Core::InitializeJob(ScopedHandle job) {
|
| DCHECK(io_task_runner_->BelongsToCurrentThread());
|
|
|
| // Register to receive job notifications via the I/O thread's completion port.
|
| - if (!base::MessageLoopForIO::current()->RegisterJobObject(job->Get(), this)) {
|
| + if (!base::MessageLoopForIO::current()->RegisterJobObject(job.Get(), this)) {
|
| PLOG(ERROR) << "Failed to associate the job object with a completion port";
|
| return;
|
| }
|
| @@ -470,12 +464,11 @@ void WtsSessionProcessDelegate::Core::InitializeJob(
|
| &Core::InitializeJobCompleted, this, base::Passed(&job)));
|
| }
|
|
|
| -void WtsSessionProcessDelegate::Core::InitializeJobCompleted(
|
| - scoped_ptr<ScopedHandle> job) {
|
| +void WtsSessionProcessDelegate::Core::InitializeJobCompleted(ScopedHandle job) {
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
| DCHECK(!job_.IsValid());
|
|
|
| - job_ = job->Pass();
|
| + job_ = std::move(job);
|
|
|
| if (launch_pending_)
|
| DoLaunchProcess();
|
| @@ -507,19 +500,15 @@ void WtsSessionProcessDelegate::Core::ReportProcessLaunched(
|
| DCHECK(caller_task_runner_->BelongsToCurrentThread());
|
| DCHECK(!worker_process_.IsValid());
|
|
|
| - worker_process_ = worker_process.Pass();
|
| + worker_process_ = std::move(worker_process);
|
|
|
| // Report a handle that can be used to wait for the worker process completion,
|
| // query information about the process and duplicate handles.
|
| DWORD desired_access =
|
| SYNCHRONIZE | PROCESS_DUP_HANDLE | PROCESS_QUERY_INFORMATION;
|
| HANDLE temp_handle;
|
| - if (!DuplicateHandle(GetCurrentProcess(),
|
| - worker_process_.Get(),
|
| - GetCurrentProcess(),
|
| - &temp_handle,
|
| - desired_access,
|
| - FALSE,
|
| + if (!DuplicateHandle(GetCurrentProcess(), worker_process_.Get(),
|
| + GetCurrentProcess(), &temp_handle, desired_access, FALSE,
|
| 0)) {
|
| PLOG(ERROR) << "Failed to duplicate a handle";
|
| ReportFatalError();
|
| @@ -527,7 +516,7 @@ void WtsSessionProcessDelegate::Core::ReportProcessLaunched(
|
| }
|
| ScopedHandle limited_handle(temp_handle);
|
|
|
| - event_handler_->OnProcessLaunched(limited_handle.Pass());
|
| + event_handler_->OnProcessLaunched(std::move(limited_handle));
|
| }
|
|
|
| WtsSessionProcessDelegate::WtsSessionProcessDelegate(
|
| @@ -535,9 +524,7 @@ WtsSessionProcessDelegate::WtsSessionProcessDelegate(
|
| scoped_ptr<base::CommandLine> target_command,
|
| bool launch_elevated,
|
| const std::string& channel_security) {
|
| - core_ = new Core(io_task_runner,
|
| - target_command.Pass(),
|
| - launch_elevated,
|
| + core_ = new Core(io_task_runner, std::move(target_command), launch_elevated,
|
| channel_security);
|
| }
|
|
|
|
|