| Index: remoting/host/win/wts_session_process_launcher.h
|
| diff --git a/remoting/host/win/wts_session_process_launcher.h b/remoting/host/win/wts_session_process_launcher.h
|
| index 097e5884106e718c20844c28fb2c7765bc79677a..040a4f3bf80d5a813837d78322353248ba95d822 100644
|
| --- a/remoting/host/win/wts_session_process_launcher.h
|
| +++ b/remoting/host/win/wts_session_process_launcher.h
|
| @@ -31,12 +31,11 @@ class SingleThreadTaskRunner;
|
| namespace remoting {
|
|
|
| class WtsConsoleMonitor;
|
| +class WtsSessionProcessLauncherImpl;
|
|
|
| class WtsSessionProcessLauncher
|
| - : public base::MessagePumpForIO::IOHandler,
|
| - public Stoppable,
|
| + : public Stoppable,
|
| public WorkerProcessIpcDelegate,
|
| - public WorkerProcessLauncher::Delegate,
|
| public WtsConsoleObserver {
|
| public:
|
| // Constructs a WtsSessionProcessLauncher object. |stopped_callback| and
|
| @@ -51,21 +50,10 @@ class WtsSessionProcessLauncher
|
|
|
| virtual ~WtsSessionProcessLauncher();
|
|
|
| - // base::MessagePumpForIO::IOHandler implementation.
|
| - virtual void OnIOCompleted(base::MessagePumpForIO::IOContext* context,
|
| - DWORD bytes_transferred,
|
| - DWORD error) OVERRIDE;
|
| -
|
| // WorkerProcessIpcDelegate implementation.
|
| virtual void OnChannelConnected() OVERRIDE;
|
| virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
|
|
| - // WorkerProcessLauncher::Delegate implementation.
|
| - virtual bool DoLaunchProcess(
|
| - const std::string& channel_name,
|
| - base::win::ScopedHandle* process_exit_event_out) OVERRIDE;
|
| - virtual void DoKillProcess(DWORD exit_code) OVERRIDE;
|
| -
|
| // WtsConsoleObserver implementation.
|
| virtual void OnSessionAttached(uint32 session_id) OVERRIDE;
|
| virtual void OnSessionDetached() OVERRIDE;
|
| @@ -75,22 +63,6 @@ class WtsSessionProcessLauncher
|
| virtual void DoStop() OVERRIDE;
|
|
|
| private:
|
| - // Drains the completion port queue to make sure that all job object
|
| - // notifications has been received.
|
| - void DrainJobNotifications();
|
| -
|
| - // Notifies that the completion port queue has been drained.
|
| - void DrainJobNotificationsCompleted();
|
| -
|
| - // Creates and initializes the job object that will sandbox the launched child
|
| - // processes.
|
| - void InitializeJob();
|
| -
|
| - // Notifies that the job object initialization is complete.
|
| - void InitializeJobCompleted(scoped_ptr<base::win::ScopedHandle> job);
|
| -
|
| - void OnJobNotification(DWORD message, DWORD pid);
|
| -
|
| // Attempts to launch the host process in the current console session.
|
| // Schedules next launch attempt if creation of the process fails for any
|
| // reason.
|
| @@ -102,6 +74,10 @@ class WtsSessionProcessLauncher
|
| // |true| if this object is currently attached to the console session.
|
| bool attached_;
|
|
|
| + // The specific code knowing how to launch and control a child process
|
| + // implemented by |WtsSessionProcessLauncherImpl|.
|
| + scoped_refptr<WtsSessionProcessLauncherImpl> impl_;
|
| +
|
| // Time of the last launch attempt.
|
| base::Time launch_time_;
|
|
|
| @@ -122,27 +98,6 @@ class WtsSessionProcessLauncher
|
|
|
| scoped_ptr<WorkerProcessLauncher> launcher_;
|
|
|
| - // The job object used to control the lifetime of child processes.
|
| - base::win::ScopedHandle job_;
|
| -
|
| - // A waiting handle that becomes signalled once all process associated with
|
| - // the job have been terminated.
|
| - base::win::ScopedHandle process_exit_event_;
|
| -
|
| - enum JobState {
|
| - kJobUninitialized,
|
| - kJobRunning,
|
| - kJobStopping,
|
| - kJobStopped
|
| - };
|
| -
|
| - JobState job_state_;
|
| -
|
| - base::win::ScopedHandle worker_process_;
|
| -
|
| - // The token to be used to launch a process in a different session.
|
| - base::win::ScopedHandle session_token_;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(WtsSessionProcessLauncher);
|
| };
|
|
|
|
|