Home | History | Annotate | Download | only in host
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef REMOTING_HOST_CONTINUE_WINDOW_H_
      6 #define REMOTING_HOST_CONTINUE_WINDOW_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/weak_ptr.h"
     10 #include "base/timer/timer.h"
     11 #include "remoting/host/host_window.h"
     12 
     13 namespace remoting {
     14 
     15 class ContinueWindow : public HostWindow {
     16  public:
     17   virtual ~ContinueWindow();
     18 
     19   // HostWindow override.
     20   virtual void Start(
     21       const base::WeakPtr<ClientSessionControl>& client_session_control)
     22       OVERRIDE;
     23 
     24   // Resumes paused client session.
     25   void ContinueSession();
     26 
     27   // Disconnects the client session.
     28   void DisconnectSession();
     29 
     30  protected:
     31   ContinueWindow();
     32 
     33   // Shows and hides the UI.
     34   virtual void ShowUi() = 0;
     35   virtual void HideUi() = 0;
     36 
     37  private:
     38   // Invoked periodically to ask for the local user whether the session should
     39   // be continued.
     40   void OnSessionExpired();
     41 
     42   // Used to disconnect the client session.
     43   base::WeakPtr<ClientSessionControl> client_session_control_;
     44 
     45   // Used to disconnect the client session when timeout expires.
     46   base::OneShotTimer<ContinueWindow> disconnect_timer_;
     47 
     48   // Used to ask the local user whether the session should be continued.
     49   base::OneShotTimer<ContinueWindow> session_expired_timer_;
     50 
     51   DISALLOW_COPY_AND_ASSIGN(ContinueWindow);
     52 };
     53 
     54 }  // namespace remoting
     55 
     56 #endif  // REMOTING_HOST_CONTINUE_WINDOW_H_
     57