• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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