Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1227)

Unified Diff: remoting/host/desktop_environment.h

Issue 7312019: Chromoting: Move host input and window mgmt into DesktopEnvironment (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698