Chromium Code Reviews| Index: remoting/host/it2me_observer.h |
| diff --git a/remoting/host/desktop_environment.h b/remoting/host/it2me_observer.h |
| similarity index 53% |
| copy from remoting/host/desktop_environment.h |
| copy to remoting/host/it2me_observer.h |
| index 28da047e1f227931e2598eb3284cd55ca3763aaf..27aa9fb28b967d8a20987b26b66e3f519b094239 100644 |
| --- a/remoting/host/desktop_environment.h |
| +++ b/remoting/host/it2me_observer.h |
| @@ -2,64 +2,74 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ |
| -#define REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ |
| +#ifndef REMOTING_HOST_IT2ME_OBSERVER_H_ |
| +#define REMOTING_HOST_IT2ME_OBSERVER_H_ |
| #include <string> |
| #include "base/basictypes.h" |
| -#include "base/memory/ref_counted.h" |
| +#include "base/compiler_specific.h" |
| #include "base/memory/scoped_ptr.h" |
| -#include "base/time.h" |
| + |
| #include "remoting/base/scoped_thread_proxy.h" |
| +#include "remoting/host/host_status_observer.h" |
| + |
| +// Milliseconds before the continue window is shown. |
| +static const int kContinueWindowShowTimeoutMs = 10 * 60 * 1000; |
| + |
| +// Milliseconds before the continue window is automatically dismissed and |
| +// the connection is closed. |
| +static const int kContinueWindowHideTimeoutMs = 60 * 1000; |
| namespace remoting { |
| -class Capturer; |
| class ChromotingHost; |
| class ChromotingHostContext; |
| class ContinueWindow; |
| -class Curtain; |
| class DisconnectWindow; |
| -class EventExecutor; |
| class LocalInputMonitor; |
| +class SignalStrategy; |
| -class DesktopEnvironment { |
| +// This class implements the IT2Me-specific parts of the ChromotingHost: |
| +// Disconnect and Continue window popups. |
| +// IT2Me-specific handling of multiple connection attempts. |
| +class It2MeObserver : public HostStatusObserver { |
|
Sergey Ulanov
2011/11/29 20:18:00
I don't think this is a good name for this class -
Lambros
2011/11/30 20:47:02
Done.
|
| public: |
| - static DesktopEnvironment* Create(ChromotingHostContext* context); |
| - |
| - // DesktopEnvironment takes ownership of all the objects passed in. |
| - DesktopEnvironment(ChromotingHostContext* context, |
| - Capturer* capturer, |
| - EventExecutor* event_executor, |
| - Curtain* curtain, |
| - DisconnectWindow* disconnect_window, |
| - ContinueWindow* continue_window, |
| - LocalInputMonitor* monitor); |
| - virtual ~DesktopEnvironment(); |
| + It2MeObserver(ChromotingHost* host, ChromotingHostContext* context); |
| + virtual ~It2MeObserver(); |
| + |
| + void Init(); |
| + |
| + // HostStatusObserver implementation. These methods will be called from the |
| + // network thread. |
| + virtual void OnSignallingConnected(SignalStrategy* signal_strategy, |
| + const std::string& full_jid) OVERRIDE; |
| + virtual void OnSignallingDisconnected() OVERRIDE; |
| + virtual void OnClientAuthenticated(const std::string& jid) OVERRIDE; |
| + virtual void OnClientDisconnected(const std::string& jid) OVERRIDE; |
| + virtual void OnAccessDenied() OVERRIDE; |
| + virtual void OnShutdown() OVERRIDE; |
| // Shuts down the object and all its resources synchronously. Must |
| // be called on the UI thread. |
| void Shutdown(); |
| - void set_host(ChromotingHost* host) { host_ = host; } |
| + private: |
| + class TimerTask; |
| - Capturer* capturer() const { return capturer_.get(); } |
| - EventExecutor* event_executor() const { return event_executor_.get(); } |
| - Curtain* curtain() const { return curtain_.get(); } |
| + // Allow ChromotingHostTest::SetUp() to call InitFrom(). |
| + friend class ChromotingHostTest; |
| - // Called whenever a new client has connected. |
| - void OnConnect(const std::string& username); |
| + // Used by unit-tests as an alternative to Init() so that mock versions of |
| + // internal objects can be used. This takes ownership of all objects passed |
| + // in. |
| + void InitFrom(DisconnectWindow* disconnect_window, |
| + ContinueWindow* continue_window, |
| + LocalInputMonitor* monitor); |
| - // Called when the last client has disconnected. |
| + void OnConnect(const std::string& username); |
| void OnLastDisconnect(); |
| - // Called when the remote connection has been paused/unpaused. |
| - void OnPause(bool pause); |
| - |
| - private: |
| - class TimerTask; |
| - |
| void ProcessOnConnect(const std::string& username); |
| void ProcessOnLastDisconnect(); |
| @@ -74,8 +84,6 @@ class DesktopEnvironment { |
| // Called by the ContinueWindow implementation (on the UI thread) when the |
| // user dismisses the Continue prompt. |
| - // TODO(lambroslambrou): Move this method to the (to be written) |
| - // It2MeObserver class. |
| void ContinueSession(bool continue_session); |
| void StartContinueWindowTimer(bool start); |
| @@ -83,22 +91,12 @@ class DesktopEnvironment { |
| void OnContinueWindowTimer(); |
| void OnShutdownHostTimer(); |
| - // 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_; |
| - |
| - // Executes input events received from the client. |
| - scoped_ptr<EventExecutor> event_executor_; |
| - |
| - // Curtain ensures privacy for the remote user. |
| - scoped_ptr<Curtain> curtain_; |
| - |
| // Provide a user interface allowing the host user to close the connection. |
| scoped_ptr<DisconnectWindow> disconnect_window_; |
| @@ -117,9 +115,13 @@ class DesktopEnvironment { |
| ScopedThreadProxy ui_thread_proxy_; |
| - DISALLOW_COPY_AND_ASSIGN(DesktopEnvironment); |
| + // The JID of the currently-authenticated user (or an empty string if no user |
| + // is connected). |
| + std::string authenticated_jid_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(It2MeObserver); |
| }; |
| } // namespace remoting |
| -#endif // REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ |
| +#endif // REMOTING_HOST_IT2ME_OBSERVER_H_ |