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. 11 const int kSessionExpirationTimeoutMinutes = 10; 12 13 // Minutes before the session will be disconnected (from the moment the Continue 14 // window has been shown). 15 const int kSessionDisconnectTimeoutMinutes = 1; 16 17 namespace remoting { 18 19 ContinueWindow::~ContinueWindow() { 20 } 21 22 void 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 35 void 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 52 void ContinueWindow::DisconnectSession() { 53 DCHECK(CalledOnValidThread()); 54 55 disconnect_timer_.Stop(); 56 if (client_session_control_.get()) 57 client_session_control_->DisconnectSession(); 58 } 59 60 ContinueWindow::ContinueWindow() { 61 } 62 63 void 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