- add sources.
[platform/framework/web/crosswalk.git] / src / remoting / host / continue_window.h
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_