| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef REMOTING_HOST_CONTINUE_WINDOW_H_ | 
 | #define REMOTING_HOST_CONTINUE_WINDOW_H_ | 
 |  | 
 | #include "base/basictypes.h" | 
 | #include "base/memory/weak_ptr.h" | 
 | #include "base/timer/timer.h" | 
 | #include "remoting/host/host_window.h" | 
 |  | 
 | namespace remoting { | 
 |  | 
 | class ContinueWindow : public HostWindow { | 
 |  public: | 
 |   ~ContinueWindow() override; | 
 |  | 
 |   // HostWindow override. | 
 |   void Start(const base::WeakPtr<ClientSessionControl>& client_session_control) | 
 |       override; | 
 |  | 
 |   // Resumes paused client session. | 
 |   void ContinueSession(); | 
 |  | 
 |   // Disconnects the client session. | 
 |   void DisconnectSession(); | 
 |  | 
 |  protected: | 
 |   ContinueWindow(); | 
 |  | 
 |   // Shows and hides the UI. | 
 |   virtual void ShowUi() = 0; | 
 |   virtual void HideUi() = 0; | 
 |  | 
 |  private: | 
 |   // Invoked periodically to ask for the local user whether the session should | 
 |   // be continued. | 
 |   void OnSessionExpired(); | 
 |  | 
 |   // Used to disconnect the client session. | 
 |   base::WeakPtr<ClientSessionControl> client_session_control_; | 
 |  | 
 |   // Used to disconnect the client session when timeout expires. | 
 |   base::OneShotTimer<ContinueWindow> disconnect_timer_; | 
 |  | 
 |   // Used to ask the local user whether the session should be continued. | 
 |   base::OneShotTimer<ContinueWindow> session_expired_timer_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(ContinueWindow); | 
 | }; | 
 |  | 
 | }  // namespace remoting | 
 |  | 
 | #endif  // REMOTING_HOST_CONTINUE_WINDOW_H_ |