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 "remoting/host/desktop_session_win.h" | 5 #include "remoting/host/desktop_session_win.h" |
6 | 6 |
7 #include <sddl.h> | 7 #include <sddl.h> |
| 8 |
8 #include <limits> | 9 #include <limits> |
| 10 #include <utility> |
9 | 11 |
10 #include "base/base_switches.h" | 12 #include "base/base_switches.h" |
11 #include "base/command_line.h" | 13 #include "base/command_line.h" |
12 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
13 #include "base/guid.h" | 15 #include "base/guid.h" |
14 #include "base/macros.h" | 16 #include "base/macros.h" |
15 #include "base/memory/ref_counted.h" | 17 #include "base/memory/ref_counted.h" |
16 #include "base/memory/scoped_ptr.h" | 18 #include "base/memory/scoped_ptr.h" |
17 #include "base/memory/weak_ptr.h" | 19 #include "base/memory/weak_ptr.h" |
18 #include "base/strings/stringprintf.h" | 20 #include "base/strings/stringprintf.h" |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 | 364 |
363 } // namespace | 365 } // namespace |
364 | 366 |
365 // static | 367 // static |
366 scoped_ptr<DesktopSession> DesktopSessionWin::CreateForConsole( | 368 scoped_ptr<DesktopSession> DesktopSessionWin::CreateForConsole( |
367 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, | 369 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, |
368 scoped_refptr<AutoThreadTaskRunner> io_task_runner, | 370 scoped_refptr<AutoThreadTaskRunner> io_task_runner, |
369 DaemonProcess* daemon_process, | 371 DaemonProcess* daemon_process, |
370 int id, | 372 int id, |
371 const ScreenResolution& resolution) { | 373 const ScreenResolution& resolution) { |
372 scoped_ptr<ConsoleSession> session(new ConsoleSession( | 374 return make_scoped_ptr(new ConsoleSession( |
373 caller_task_runner, io_task_runner, daemon_process, id, | 375 caller_task_runner, io_task_runner, daemon_process, id, |
374 HostService::GetInstance())); | 376 HostService::GetInstance())); |
375 | |
376 return session.Pass(); | |
377 } | 377 } |
378 | 378 |
379 // static | 379 // static |
380 scoped_ptr<DesktopSession> DesktopSessionWin::CreateForVirtualTerminal( | 380 scoped_ptr<DesktopSession> DesktopSessionWin::CreateForVirtualTerminal( |
381 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, | 381 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, |
382 scoped_refptr<AutoThreadTaskRunner> io_task_runner, | 382 scoped_refptr<AutoThreadTaskRunner> io_task_runner, |
383 DaemonProcess* daemon_process, | 383 DaemonProcess* daemon_process, |
384 int id, | 384 int id, |
385 const ScreenResolution& resolution) { | 385 const ScreenResolution& resolution) { |
386 scoped_ptr<RdpSession> session(new RdpSession( | 386 scoped_ptr<RdpSession> session(new RdpSession( |
387 caller_task_runner, io_task_runner, daemon_process, id, | 387 caller_task_runner, io_task_runner, daemon_process, id, |
388 HostService::GetInstance())); | 388 HostService::GetInstance())); |
389 if (!session->Initialize(resolution)) | 389 if (!session->Initialize(resolution)) |
390 return nullptr; | 390 return nullptr; |
391 | 391 |
392 return session.Pass(); | 392 return std::move(session); |
393 } | 393 } |
394 | 394 |
395 DesktopSessionWin::DesktopSessionWin( | 395 DesktopSessionWin::DesktopSessionWin( |
396 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, | 396 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, |
397 scoped_refptr<AutoThreadTaskRunner> io_task_runner, | 397 scoped_refptr<AutoThreadTaskRunner> io_task_runner, |
398 DaemonProcess* daemon_process, | 398 DaemonProcess* daemon_process, |
399 int id, | 399 int id, |
400 WtsTerminalMonitor* monitor) | 400 WtsTerminalMonitor* monitor) |
401 : DesktopSession(daemon_process, id), | 401 : DesktopSession(daemon_process, id), |
402 caller_task_runner_(caller_task_runner), | 402 caller_task_runner_(caller_task_runner), |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 | 530 |
531 session_attach_timer_.Stop(); | 531 session_attach_timer_.Stop(); |
532 | 532 |
533 scoped_ptr<base::CommandLine> target(new base::CommandLine(desktop_binary)); | 533 scoped_ptr<base::CommandLine> target(new base::CommandLine(desktop_binary)); |
534 target->AppendSwitchASCII(kProcessTypeSwitchName, kProcessTypeDesktop); | 534 target->AppendSwitchASCII(kProcessTypeSwitchName, kProcessTypeDesktop); |
535 // Copy the command line switches enabling verbose logging. | 535 // Copy the command line switches enabling verbose logging. |
536 target->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(), | 536 target->CopySwitchesFrom(*base::CommandLine::ForCurrentProcess(), |
537 kCopiedSwitchNames, arraysize(kCopiedSwitchNames)); | 537 kCopiedSwitchNames, arraysize(kCopiedSwitchNames)); |
538 | 538 |
539 // Create a delegate capable of launching a process in a different session. | 539 // Create a delegate capable of launching a process in a different session. |
540 scoped_ptr<WtsSessionProcessDelegate> delegate( | 540 scoped_ptr<WtsSessionProcessDelegate> delegate(new WtsSessionProcessDelegate( |
541 new WtsSessionProcessDelegate(io_task_runner_, | 541 io_task_runner_, std::move(target), launch_elevated, |
542 target.Pass(), | 542 base::WideToUTF8(kDaemonIpcSecurityDescriptor))); |
543 launch_elevated, | |
544 base::WideToUTF8( | |
545 kDaemonIpcSecurityDescriptor))); | |
546 if (!delegate->Initialize(session_id)) { | 543 if (!delegate->Initialize(session_id)) { |
547 TerminateSession(); | 544 TerminateSession(); |
548 return; | 545 return; |
549 } | 546 } |
550 | 547 |
551 // Create a launcher for the desktop process, using the per-session delegate. | 548 // Create a launcher for the desktop process, using the per-session delegate. |
552 launcher_.reset(new WorkerProcessLauncher(delegate.Pass(), this)); | 549 launcher_.reset(new WorkerProcessLauncher(std::move(delegate), this)); |
553 } | 550 } |
554 | 551 |
555 void DesktopSessionWin::OnSessionDetached() { | 552 void DesktopSessionWin::OnSessionDetached() { |
556 DCHECK(caller_task_runner_->BelongsToCurrentThread()); | 553 DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
557 | 554 |
558 launcher_.reset(); | 555 launcher_.reset(); |
559 | 556 |
560 if (monitoring_notifications_) { | 557 if (monitoring_notifications_) { |
561 ReportElapsedTime("detached"); | 558 ReportElapsedTime("detached"); |
562 | 559 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 exploded.hour, | 596 exploded.hour, |
600 exploded.minute, | 597 exploded.minute, |
601 exploded.second, | 598 exploded.second, |
602 exploded.millisecond, | 599 exploded.millisecond, |
603 passed.c_str()); | 600 passed.c_str()); |
604 | 601 |
605 last_timestamp_ = now; | 602 last_timestamp_ = now; |
606 } | 603 } |
607 | 604 |
608 } // namespace remoting | 605 } // namespace remoting |
OLD | NEW |