Index: remoting/host/wts_session_process_launcher_win.h |
diff --git a/remoting/host/wts_session_process_launcher_win.h b/remoting/host/wts_session_process_launcher_win.h |
index eaf9c67d666641e7f9ebb02929e71f358a73d8a1..efcb93a75d01f1b72eeefb70304ec2c0b6e71577 100644 |
--- a/remoting/host/wts_session_process_launcher_win.h |
+++ b/remoting/host/wts_session_process_launcher_win.h |
@@ -15,29 +15,49 @@ |
#include "base/timer.h" |
#include "base/win/scoped_handle.h" |
#include "base/win/object_watcher.h" |
+#include "ipc/ipc_channel.h" |
#include "remoting/host/wts_console_observer_win.h" |
+namespace base { |
+ |
+class Thread; |
+ |
+} // namespace base |
+ |
+namespace IPC { |
+ |
+class ChannelProxy; |
+class Message; |
+ |
+} // namespace IPC |
+ |
namespace remoting { |
+class SasInjector; |
class WtsConsoleMonitor; |
class WtsSessionProcessLauncher |
: public base::win::ObjectWatcher::Delegate, |
+ public IPC::Channel::Listener, |
public WtsConsoleObserver { |
public: |
- // Constructs a WtsSessionProcessLauncher object. |monitor| must outlive this |
- // class. |host_binary| is the name of the executable to be launched in |
- // the console session. |
+ // Constructs a WtsSessionProcessLauncher object. |monitor| and |io_thread| |
+ // must outlive this object. |host_binary| is the name of the executable to |
+ // be launched in the console session. |
WtsSessionProcessLauncher(WtsConsoleMonitor* monitor, |
- const FilePath& host_binary); |
+ const FilePath& host_binary, |
+ base::Thread* io_thread); |
virtual ~WtsSessionProcessLauncher(); |
- // base::win::ObjectWatcher::Delegate implementation |
+ // base::win::ObjectWatcher::Delegate implementation. |
virtual void OnObjectSignaled(HANDLE object) OVERRIDE; |
- // WtsConsoleObserver implementation |
+ // IPC::Channel::Listener implementation. |
+ virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
+ |
+ // WtsConsoleObserver implementation. |
virtual void OnSessionAttached(uint32 session_id) OVERRIDE; |
virtual void OnSessionDetached() OVERRIDE; |
@@ -47,6 +67,10 @@ class WtsSessionProcessLauncher |
// reason. |
void LaunchProcess(); |
+ // Sends the Secure Attention Sequence to the session represented by |
+ // |session_token_|. |
+ void OnSendSasToConsole(); |
+ |
// Name of the host executable. |
FilePath host_binary_; |
@@ -59,6 +83,10 @@ class WtsSessionProcessLauncher |
// Timer used to schedule the next attempt to launch the process. |
base::OneShotTimer<WtsSessionProcessLauncher> timer_; |
+ // The I/O thread hosts the Chromoting IPC channel and any other code |
+ // requiring an I/O message loop. |
+ base::Thread* io_thread_; |
+ |
// This pointer is used to unsubscribe from session attach and detach events. |
WtsConsoleMonitor* monitor_; |
@@ -84,6 +112,12 @@ class WtsSessionProcessLauncher |
// Current state of the process launcher. |
State state_; |
+ // The Chromoting IPC channel connecting the service to the per-session |
+ // process. |
+ scoped_ptr<IPC::ChannelProxy> chromoting_channel_; |
+ |
+ scoped_ptr<SasInjector> sas_injector_; |
+ |
DISALLOW_COPY_AND_ASSIGN(WtsSessionProcessLauncher); |
}; |