OLD | NEW |
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 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/bind.h" | 6 #include "base/bind.h" |
7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/win/scoped_handle.h" | 9 #include "base/win/scoped_handle.h" |
10 #include "base/win/scoped_process_information.h" | 10 #include "base/win/scoped_process_information.h" |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 | 173 |
174 WorkerProcessLauncher* event_handler_; | 174 WorkerProcessLauncher* event_handler_; |
175 | 175 |
176 // The worker process launcher. | 176 // The worker process launcher. |
177 scoped_ptr<WorkerProcessLauncher> launcher_; | 177 scoped_ptr<WorkerProcessLauncher> launcher_; |
178 | 178 |
179 // An event that is used to emulate the worker process's handle. | 179 // An event that is used to emulate the worker process's handle. |
180 ScopedHandle worker_process_; | 180 ScopedHandle worker_process_; |
181 }; | 181 }; |
182 | 182 |
183 WorkerProcessLauncherTest::WorkerProcessLauncherTest() : event_handler_(NULL) { | 183 WorkerProcessLauncherTest::WorkerProcessLauncherTest() |
| 184 : event_handler_(nullptr) { |
184 } | 185 } |
185 | 186 |
186 WorkerProcessLauncherTest::~WorkerProcessLauncherTest() { | 187 WorkerProcessLauncherTest::~WorkerProcessLauncherTest() { |
187 } | 188 } |
188 | 189 |
189 void WorkerProcessLauncherTest::SetUp() { | 190 void WorkerProcessLauncherTest::SetUp() { |
190 task_runner_ = new AutoThreadTaskRunner( | 191 task_runner_ = new AutoThreadTaskRunner( |
191 message_loop_.message_loop_proxy(), | 192 message_loop_.message_loop_proxy(), |
192 base::Bind(&WorkerProcessLauncherTest::QuitMainMessageLoop, | 193 base::Bind(&WorkerProcessLauncherTest::QuitMainMessageLoop, |
193 base::Unretained(this))); | 194 base::Unretained(this))); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
252 | 253 |
253 event_handler->OnFatalError(); | 254 event_handler->OnFatalError(); |
254 | 255 |
255 task_runner_->PostTask( | 256 task_runner_->PostTask( |
256 FROM_HERE, | 257 FROM_HERE, |
257 base::Bind(&WorkerProcessLauncherTest::StopWorker, | 258 base::Bind(&WorkerProcessLauncherTest::StopWorker, |
258 base::Unretained(this))); | 259 base::Unretained(this))); |
259 } | 260 } |
260 | 261 |
261 void WorkerProcessLauncherTest::KillProcess() { | 262 void WorkerProcessLauncherTest::KillProcess() { |
262 event_handler_ = NULL; | 263 event_handler_ = nullptr; |
263 | 264 |
264 if (worker_process_.IsValid()) { | 265 if (worker_process_.IsValid()) { |
265 TerminateProcess(worker_process_.Get(), CONTROL_C_EXIT); | 266 TerminateProcess(worker_process_.Get(), CONTROL_C_EXIT); |
266 worker_process_.Close(); | 267 worker_process_.Close(); |
267 } | 268 } |
268 } | 269 } |
269 | 270 |
270 void WorkerProcessLauncherTest::TerminateWorker(DWORD exit_code) { | 271 void WorkerProcessLauncherTest::TerminateWorker(DWORD exit_code) { |
271 if (worker_process_.IsValid()) | 272 if (worker_process_.IsValid()) |
272 TerminateProcess(worker_process_.Get(), exit_code); | 273 TerminateProcess(worker_process_.Get(), exit_code); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 &server_listener_)); | 317 &server_listener_)); |
317 | 318 |
318 launcher_->SetKillProcessTimeoutForTest(base::TimeDelta::FromMilliseconds(0)); | 319 launcher_->SetKillProcessTimeoutForTest(base::TimeDelta::FromMilliseconds(0)); |
319 } | 320 } |
320 | 321 |
321 void WorkerProcessLauncherTest::StopWorker() { | 322 void WorkerProcessLauncherTest::StopWorker() { |
322 launcher_.reset(); | 323 launcher_.reset(); |
323 DisconnectClient(); | 324 DisconnectClient(); |
324 channel_name_.clear(); | 325 channel_name_.clear(); |
325 channel_server_.reset(); | 326 channel_server_.reset(); |
326 task_runner_ = NULL; | 327 task_runner_ = nullptr; |
327 } | 328 } |
328 | 329 |
329 void WorkerProcessLauncherTest::QuitMainMessageLoop() { | 330 void WorkerProcessLauncherTest::QuitMainMessageLoop() { |
330 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); | 331 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); |
331 } | 332 } |
332 | 333 |
333 void WorkerProcessLauncherTest::DoLaunchProcess() { | 334 void WorkerProcessLauncherTest::DoLaunchProcess() { |
334 EXPECT_TRUE(event_handler_); | 335 EXPECT_TRUE(event_handler_); |
335 EXPECT_FALSE(worker_process_.IsValid()); | 336 EXPECT_FALSE(worker_process_.IsValid()); |
336 | 337 |
337 WCHAR notepad[MAX_PATH + 1]; | 338 WCHAR notepad[MAX_PATH + 1]; |
338 ASSERT_GT(ExpandEnvironmentStrings( | 339 ASSERT_GT(ExpandEnvironmentStrings( |
339 L"\045SystemRoot\045\\system32\\notepad.exe", notepad, MAX_PATH), 0u); | 340 L"\045SystemRoot\045\\system32\\notepad.exe", notepad, MAX_PATH), 0u); |
340 | 341 |
341 STARTUPINFOW startup_info = { 0 }; | 342 STARTUPINFOW startup_info = { 0 }; |
342 startup_info.cb = sizeof(startup_info); | 343 startup_info.cb = sizeof(startup_info); |
343 | 344 |
344 PROCESS_INFORMATION temp_process_info = {}; | 345 PROCESS_INFORMATION temp_process_info = {}; |
345 ASSERT_TRUE(CreateProcess(NULL, | 346 ASSERT_TRUE(CreateProcess(nullptr, |
346 notepad, | 347 notepad, |
347 NULL, // default process attibutes | 348 nullptr, // default process attibutes |
348 NULL, // default thread attibutes | 349 nullptr, // default thread attibutes |
349 FALSE, // do not inherit handles | 350 FALSE, // do not inherit handles |
350 CREATE_SUSPENDED, | 351 CREATE_SUSPENDED, |
351 NULL, // no environment | 352 nullptr, // no environment |
352 NULL, // default current directory | 353 nullptr, // default current directory |
353 &startup_info, | 354 &startup_info, |
354 &temp_process_info)); | 355 &temp_process_info)); |
355 base::win::ScopedProcessInformation process_information(temp_process_info); | 356 base::win::ScopedProcessInformation process_information(temp_process_info); |
356 worker_process_.Set(process_information.TakeProcessHandle()); | 357 worker_process_.Set(process_information.TakeProcessHandle()); |
357 ASSERT_TRUE(worker_process_.IsValid()); | 358 ASSERT_TRUE(worker_process_.IsValid()); |
358 | 359 |
359 channel_name_ = IPC::Channel::GenerateUniqueRandomChannelID(); | 360 channel_name_ = IPC::Channel::GenerateUniqueRandomChannelID(); |
360 ScopedHandle pipe; | 361 ScopedHandle pipe; |
361 ASSERT_TRUE(CreateIpcChannel(channel_name_, kIpcSecurityDescriptor, &pipe)); | 362 ASSERT_TRUE(CreateIpcChannel(channel_name_, kIpcSecurityDescriptor, &pipe)); |
362 | 363 |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 EXPECT_CALL(client_listener_, OnCrash(_, _, _)) | 524 EXPECT_CALL(client_listener_, OnCrash(_, _, _)) |
524 .Times(1) | 525 .Times(1) |
525 .WillOnce(InvokeWithoutArgs( | 526 .WillOnce(InvokeWithoutArgs( |
526 this, &WorkerProcessLauncherTest::SendFakeMessageToLauncher)); | 527 this, &WorkerProcessLauncherTest::SendFakeMessageToLauncher)); |
527 | 528 |
528 StartWorker(); | 529 StartWorker(); |
529 message_loop_.Run(); | 530 message_loop_.Run(); |
530 } | 531 } |
531 | 532 |
532 } // namespace remoting | 533 } // namespace remoting |
OLD | NEW |