1// Copyright 2013 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#include "remoting/host/continue_window.h" 6 7#include "base/location.h" 8#include "remoting/host/client_session_control.h" 9 10// Minutes before the local user should confirm that the session should go on. 11const int kSessionExpirationTimeoutMinutes = 10; 12 13// Minutes before the session will be disconnected (from the moment the Continue 14// window has been shown). 15const int kSessionDisconnectTimeoutMinutes = 1; 16 17namespace remoting { 18 19ContinueWindow::~ContinueWindow() { 20} 21 22void ContinueWindow::Start( 23 const base::WeakPtr<ClientSessionControl>& client_session_control) { 24 DCHECK(CalledOnValidThread()); 25 DCHECK(!client_session_control_.get()); 26 DCHECK(client_session_control.get()); 27 28 client_session_control_ = client_session_control; 29 30 session_expired_timer_.Start( 31 FROM_HERE, base::TimeDelta::FromMinutes(kSessionExpirationTimeoutMinutes), 32 this, &ContinueWindow::OnSessionExpired); 33} 34 35void ContinueWindow::ContinueSession() { 36 DCHECK(CalledOnValidThread()); 37 38 disconnect_timer_.Stop(); 39 40 if (!client_session_control_.get()) 41 return; 42 43 // Hide the Continue window and resume the session. 44 HideUi(); 45 client_session_control_->SetDisableInputs(false); 46 47 session_expired_timer_.Start( 48 FROM_HERE, base::TimeDelta::FromMinutes(kSessionExpirationTimeoutMinutes), 49 this, &ContinueWindow::OnSessionExpired); 50} 51 52void ContinueWindow::DisconnectSession() { 53 DCHECK(CalledOnValidThread()); 54 55 disconnect_timer_.Stop(); 56 if (client_session_control_.get()) 57 client_session_control_->DisconnectSession(); 58} 59 60ContinueWindow::ContinueWindow() { 61} 62 63void ContinueWindow::OnSessionExpired() { 64 DCHECK(CalledOnValidThread()); 65 66 if (!client_session_control_.get()) 67 return; 68 69 // Stop the remote input while the Continue window is shown. 70 client_session_control_->SetDisableInputs(true); 71 72 // Show the Continue window and wait for the local user input. 73 ShowUi(); 74 disconnect_timer_.Start( 75 FROM_HERE, base::TimeDelta::FromMinutes(kSessionDisconnectTimeoutMinutes), 76 this, &ContinueWindow::DisconnectSession); 77} 78 79} // namespace remoting 80