• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
~ContinueWindow()19 ContinueWindow::~ContinueWindow() {
20 }
21 
Start(const base::WeakPtr<ClientSessionControl> & client_session_control)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 
ContinueSession()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 
DisconnectSession()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 
ContinueWindow()60 ContinueWindow::ContinueWindow() {
61 }
62 
OnSessionExpired()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