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

Side by Side Diff: remoting/host/win/wts_session_process_delegate.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « remoting/host/win/wts_session_process_delegate.h ('k') | remoting/protocol/audio_reader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // This file implements the Windows service controlling Me2Me host processes 5 // This file implements the Windows service controlling Me2Me host processes
6 // running within user sessions. 6 // running within user sessions.
7 7
8 #include "remoting/host/win/wts_session_process_delegate.h" 8 #include "remoting/host/win/wts_session_process_delegate.h"
9 9
10 #include <utility> 10 #include <utility>
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 // A private class actually implementing the functionality provided by 44 // A private class actually implementing the functionality provided by
45 // |WtsSessionProcessDelegate|. This class is ref-counted and implements 45 // |WtsSessionProcessDelegate|. This class is ref-counted and implements
46 // asynchronous fire-and-forget shutdown. 46 // asynchronous fire-and-forget shutdown.
47 class WtsSessionProcessDelegate::Core 47 class WtsSessionProcessDelegate::Core
48 : public base::RefCountedThreadSafe<Core>, 48 : public base::RefCountedThreadSafe<Core>,
49 public base::MessagePumpForIO::IOHandler, 49 public base::MessagePumpForIO::IOHandler,
50 public IPC::Listener { 50 public IPC::Listener {
51 public: 51 public:
52 Core(scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, 52 Core(scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
53 scoped_ptr<base::CommandLine> target, 53 std::unique_ptr<base::CommandLine> target,
54 bool launch_elevated, 54 bool launch_elevated,
55 const std::string& channel_security); 55 const std::string& channel_security);
56 56
57 // Initializes the object returning true on success. 57 // Initializes the object returning true on success.
58 bool Initialize(uint32_t session_id); 58 bool Initialize(uint32_t session_id);
59 59
60 // Stops the object asynchronously. 60 // Stops the object asynchronously.
61 void Stop(); 61 void Stop();
62 62
63 // Mirrors WorkerProcessLauncher::Delegate. 63 // Mirrors WorkerProcessLauncher::Delegate.
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 void ReportProcessLaunched(base::win::ScopedHandle worker_process); 104 void ReportProcessLaunched(base::win::ScopedHandle worker_process);
105 105
106 // The task runner all public methods of this class should be called on. 106 // The task runner all public methods of this class should be called on.
107 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_; 107 scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner_;
108 108
109 // The task runner serving job object notifications. 109 // The task runner serving job object notifications.
110 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; 110 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
111 111
112 // The server end of the IPC channel used to communicate to the worker 112 // The server end of the IPC channel used to communicate to the worker
113 // process. 113 // process.
114 scoped_ptr<IPC::ChannelProxy> channel_; 114 std::unique_ptr<IPC::ChannelProxy> channel_;
115 115
116 // Security descriptor (as SDDL) to be applied to |channel_|. 116 // Security descriptor (as SDDL) to be applied to |channel_|.
117 std::string channel_security_; 117 std::string channel_security_;
118 118
119 WorkerProcessLauncher* event_handler_; 119 WorkerProcessLauncher* event_handler_;
120 120
121 // Pointer to GetNamedPipeClientProcessId() API if it is available. 121 // Pointer to GetNamedPipeClientProcessId() API if it is available.
122 typedef BOOL (WINAPI * GetNamedPipeClientProcessIdFn)(HANDLE, DWORD*); 122 typedef BOOL (WINAPI * GetNamedPipeClientProcessIdFn)(HANDLE, DWORD*);
123 GetNamedPipeClientProcessIdFn get_named_pipe_client_pid_; 123 GetNamedPipeClientProcessIdFn get_named_pipe_client_pid_;
124 124
125 // The job object used to control the lifetime of child processes. 125 // The job object used to control the lifetime of child processes.
126 base::win::ScopedHandle job_; 126 base::win::ScopedHandle job_;
127 127
128 // True if the worker process should be launched elevated. 128 // True if the worker process should be launched elevated.
129 bool launch_elevated_; 129 bool launch_elevated_;
130 130
131 // True if a laucnh attemp is pending. 131 // True if a laucnh attemp is pending.
132 bool launch_pending_; 132 bool launch_pending_;
133 133
134 // The named pipe used as the transport by |channel_|. 134 // The named pipe used as the transport by |channel_|.
135 base::win::ScopedHandle pipe_; 135 base::win::ScopedHandle pipe_;
136 136
137 // The token to be used to launch a process in a different session. 137 // The token to be used to launch a process in a different session.
138 base::win::ScopedHandle session_token_; 138 base::win::ScopedHandle session_token_;
139 139
140 // Command line of the launched process. 140 // Command line of the launched process.
141 scoped_ptr<base::CommandLine> target_command_; 141 std::unique_ptr<base::CommandLine> target_command_;
142 142
143 // The handle of the worker process, if launched. 143 // The handle of the worker process, if launched.
144 base::win::ScopedHandle worker_process_; 144 base::win::ScopedHandle worker_process_;
145 145
146 DISALLOW_COPY_AND_ASSIGN(Core); 146 DISALLOW_COPY_AND_ASSIGN(Core);
147 }; 147 };
148 148
149 WtsSessionProcessDelegate::Core::Core( 149 WtsSessionProcessDelegate::Core::Core(
150 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, 150 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
151 scoped_ptr<base::CommandLine> target_command, 151 std::unique_ptr<base::CommandLine> target_command,
152 bool launch_elevated, 152 bool launch_elevated,
153 const std::string& channel_security) 153 const std::string& channel_security)
154 : caller_task_runner_(base::ThreadTaskRunnerHandle::Get()), 154 : caller_task_runner_(base::ThreadTaskRunnerHandle::Get()),
155 io_task_runner_(io_task_runner), 155 io_task_runner_(io_task_runner),
156 channel_security_(channel_security), 156 channel_security_(channel_security),
157 event_handler_(nullptr), 157 event_handler_(nullptr),
158 get_named_pipe_client_pid_(nullptr), 158 get_named_pipe_client_pid_(nullptr),
159 launch_elevated_(launch_elevated), 159 launch_elevated_(launch_elevated),
160 launch_pending_(false), 160 launch_pending_(false),
161 target_command_(std::move(target_command)) {} 161 target_command_(std::move(target_command)) {}
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 375
376 // Create the server end of the IPC channel. 376 // Create the server end of the IPC channel.
377 std::string channel_name = IPC::Channel::GenerateUniqueRandomChannelID(); 377 std::string channel_name = IPC::Channel::GenerateUniqueRandomChannelID();
378 ScopedHandle pipe; 378 ScopedHandle pipe;
379 if (!CreateIpcChannel(channel_name, channel_security_, &pipe)) { 379 if (!CreateIpcChannel(channel_name, channel_security_, &pipe)) {
380 ReportFatalError(); 380 ReportFatalError();
381 return; 381 return;
382 } 382 }
383 383
384 // Wrap the pipe into an IPC channel. 384 // Wrap the pipe into an IPC channel.
385 scoped_ptr<IPC::ChannelProxy> channel( 385 std::unique_ptr<IPC::ChannelProxy> channel(IPC::ChannelProxy::Create(
386 IPC::ChannelProxy::Create(IPC::ChannelHandle(pipe.Get()), 386 IPC::ChannelHandle(pipe.Get()), IPC::Channel::MODE_SERVER, this,
387 IPC::Channel::MODE_SERVER, 387 io_task_runner_));
388 this,
389 io_task_runner_));
390 388
391 // Pass the name of the IPC channel to use. 389 // Pass the name of the IPC channel to use.
392 command_line.AppendSwitchNative(kDaemonPipeSwitchName, 390 command_line.AppendSwitchNative(kDaemonPipeSwitchName,
393 base::UTF8ToWide(channel_name)); 391 base::UTF8ToWide(channel_name));
394 392
395 // Try to launch the process. 393 // Try to launch the process.
396 ScopedHandle worker_process; 394 ScopedHandle worker_process;
397 ScopedHandle worker_thread; 395 ScopedHandle worker_thread;
398 if (!LaunchProcessWithToken(command_line.GetProgram(), 396 if (!LaunchProcessWithToken(command_line.GetProgram(),
399 command_line.GetCommandLineString(), 397 command_line.GetCommandLineString(),
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 ReportFatalError(); 520 ReportFatalError();
523 return; 521 return;
524 } 522 }
525 ScopedHandle limited_handle(temp_handle); 523 ScopedHandle limited_handle(temp_handle);
526 524
527 event_handler_->OnProcessLaunched(std::move(limited_handle)); 525 event_handler_->OnProcessLaunched(std::move(limited_handle));
528 } 526 }
529 527
530 WtsSessionProcessDelegate::WtsSessionProcessDelegate( 528 WtsSessionProcessDelegate::WtsSessionProcessDelegate(
531 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, 529 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
532 scoped_ptr<base::CommandLine> target_command, 530 std::unique_ptr<base::CommandLine> target_command,
533 bool launch_elevated, 531 bool launch_elevated,
534 const std::string& channel_security) { 532 const std::string& channel_security) {
535 core_ = new Core(io_task_runner, std::move(target_command), launch_elevated, 533 core_ = new Core(io_task_runner, std::move(target_command), launch_elevated,
536 channel_security); 534 channel_security);
537 } 535 }
538 536
539 WtsSessionProcessDelegate::~WtsSessionProcessDelegate() { 537 WtsSessionProcessDelegate::~WtsSessionProcessDelegate() {
540 core_->Stop(); 538 core_->Stop();
541 } 539 }
542 540
(...skipping 12 matching lines...) Expand all
555 553
556 void WtsSessionProcessDelegate::CloseChannel() { 554 void WtsSessionProcessDelegate::CloseChannel() {
557 core_->CloseChannel(); 555 core_->CloseChannel();
558 } 556 }
559 557
560 void WtsSessionProcessDelegate::KillProcess() { 558 void WtsSessionProcessDelegate::KillProcess() {
561 core_->KillProcess(); 559 core_->KillProcess();
562 } 560 }
563 561
564 } // namespace remoting 562 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/win/wts_session_process_delegate.h ('k') | remoting/protocol/audio_reader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698