Index: remoting/host/desktop_environment.h |
diff --git a/remoting/host/desktop_environment.h b/remoting/host/desktop_environment.h |
index b029a2a74037c65faf7a0e2e4899585125e5ae83..0f473e32b142c7ce6c5e732caf4443f852d33588 100644 |
--- a/remoting/host/desktop_environment.h |
+++ b/remoting/host/desktop_environment.h |
@@ -5,12 +5,18 @@ |
#ifndef REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ |
#define REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ |
+#include <string> |
+ |
#include "base/basictypes.h" |
#include "base/memory/scoped_ptr.h" |
+#include "base/threading/thread.h" |
+#include "base/timer.h" |
namespace remoting { |
class Capturer; |
+class ChromotingHost; |
+class ChromotingHostContext; |
class ContinueWindow; |
class Curtain; |
class DisconnectWindow; |
@@ -19,23 +25,54 @@ class LocalInputMonitor; |
class DesktopEnvironment { |
public: |
+ static DesktopEnvironment* Create(ChromotingHostContext* context); |
+ |
// DesktopEnvironment takes ownership of all the objects passed the ctor. |
- DesktopEnvironment(Capturer* capturer, EventExecutor* event_executor, |
- Curtain* curtain, DisconnectWindow* disconnect_window, |
+ DesktopEnvironment(ChromotingHostContext* context, |
+ Capturer* capturer, |
+ EventExecutor* event_executor, |
+ Curtain* curtain, |
+ DisconnectWindow* disconnect_window, |
ContinueWindow* continue_window, |
LocalInputMonitor* monitor); |
virtual ~DesktopEnvironment(); |
+ void set_host(ChromotingHost* host) { host_ = host; } |
+ |
Capturer* capturer() const { return capturer_.get(); } |
EventExecutor* event_executor() const { return event_executor_.get(); } |
Curtain* curtain() const { return curtain_.get(); } |
- DisconnectWindow* disconnect_window() { return disconnect_window_.get(); } |
- ContinueWindow* continue_window() { return continue_window_.get(); } |
- LocalInputMonitor* local_input_monitor() { |
- return local_input_monitor_.get(); |
- } |
+ |
+ // Called whenever a new client has connected. |
+ void OnConnect(const std::string& username); |
+ |
+ // Called when the last client has disconnected. |
+ void OnLastDisconnect(); |
+ |
+ // Called when the remote connection has been paused/unpaused. |
+ void OnPause(bool pause); |
private: |
+ void MonitorLocalInputs(bool enable); |
+ |
+ // Show or hide the Disconnect window on the UI thread. If |show| is false, |
+ // hide the window, ignoring the |username| parameter. |
+ void ShowDisconnectWindow(bool show, const std::string& username); |
+ |
+ // Show or hide the Continue Sharing window on the UI thread. |
+ void ShowContinueWindow(bool show); |
+ |
+ void StartContinueWindowTimer(bool start); |
+ |
+ void ContinueWindowTimerFunc(); |
+ |
+ // The host that owns this DesktopEnvironment. |
+ ChromotingHost* host_; |
+ |
+ // Host context used to make sure operations are run on the correct thread. |
+ // This is owned by the ChromotingHost. |
+ ChromotingHostContext* context_; |
+ |
// Capturer to be used by ScreenRecorder. |
scoped_ptr<Capturer> capturer_; |
@@ -56,9 +93,18 @@ class DesktopEnvironment { |
// user is trying to do something. |
scoped_ptr<LocalInputMonitor> local_input_monitor_; |
+ bool is_monitoring_local_inputs_; |
+ |
+ // Timer controlling the "continue session" dialog. The timer is started when |
+ // a connection is made or re-confirmed. On expiry, inputs to the host are |
+ // blocked and the dialog is shown. |
+ base::OneShotTimer<DesktopEnvironment> continue_window_timer_; |
+ |
DISALLOW_COPY_AND_ASSIGN(DesktopEnvironment); |
}; |
} // namespace remoting |
+DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::DesktopEnvironment); |
Sergey Ulanov
2011/07/08 23:12:24
Oh, no! DISABLE_RUNNABLE_METHOD_REFCOUNT is evil!
|
+ |
#endif // REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ |