Chromium Code Reviews| Index: remoting/host/desktop_environment.cc |
| diff --git a/remoting/host/desktop_environment.cc b/remoting/host/desktop_environment.cc |
| index 14620b0b04024e9fb7fcf9b9d902430d26c57e95..66a69f8cf2a1a519a67291ba984ccb05884ffb16 100644 |
| --- a/remoting/host/desktop_environment.cc |
| +++ b/remoting/host/desktop_environment.cc |
| @@ -15,7 +15,12 @@ |
| #include "remoting/host/event_executor.h" |
| #include "remoting/host/local_input_monitor.h" |
| -static const int kContinueWindowTimeoutMs = 10 * 60 * 1000; |
| +// Milliseconds before the continue window is shown. |
| +static const int kContinueWindowShowTimeoutMs = 10 * 1000; |
|
Sergey Ulanov
2011/08/24 01:56:45
Revert this change
Jamie
2011/08/24 17:42:03
Done.
|
| + |
| +// Milliseconds before the continue window is automatically dismissed and |
| +// the connection is closed. |
| +static const int kContinueWindowHideTimeoutMs = 5 * 1000; |
|
Sergey Ulanov
2011/08/24 01:56:45
Should be 60 * 1000 instead of 5 seconds
Jamie
2011/08/24 17:42:03
Done.
|
| namespace remoting { |
| @@ -32,7 +37,7 @@ namespace remoting { |
| // MessageLoopProxy. |
| class UIThreadProxy : public base::RefCountedThreadSafe<UIThreadProxy> { |
| public: |
| - UIThreadProxy(base::MessageLoopProxy* message_loop) |
| + explicit UIThreadProxy(base::MessageLoopProxy* message_loop) |
| : message_loop_(message_loop) { |
| } |
| @@ -119,7 +124,7 @@ DesktopEnvironment::DesktopEnvironment(ChromotingHostContext* context, |
| continue_window_(continue_window), |
| local_input_monitor_(local_input_monitor), |
| is_monitoring_local_inputs_(false), |
| - continue_timer_started_(false), |
| + continue_timer_state_(INACTIVE), |
| proxy_(new UIThreadProxy(context->ui_message_loop())) { |
| } |
| @@ -170,7 +175,10 @@ void DesktopEnvironment::ProcessOnLastDisconnect() { |
| } |
| void DesktopEnvironment::ProcessOnPause(bool pause) { |
| - StartContinueWindowTimer(!pause); |
| + if (!pause) { |
| + continue_timer_state_ = INACTIVE; |
| + StartContinueWindowTimer(true); |
| + } |
| } |
| void DesktopEnvironment::MonitorLocalInputs(bool enable) { |
| @@ -210,16 +218,16 @@ void DesktopEnvironment::ShowContinueWindow(bool show) { |
| void DesktopEnvironment::StartContinueWindowTimer(bool start) { |
| DCHECK(context_->ui_message_loop()->BelongsToCurrentThread()); |
| - if (start && !continue_timer_started_) { |
| + if (start && continue_timer_state_ == INACTIVE) { |
| continue_timer_target_time_ = base::Time::Now() + |
| - base::TimeDelta::FromMilliseconds(kContinueWindowTimeoutMs); |
| + base::TimeDelta::FromMilliseconds(kContinueWindowShowTimeoutMs); |
| proxy_->CallOnUIThreadDelayed( |
| FROM_HERE, base::Bind(&DesktopEnvironment::ContinueWindowTimerFunc, |
| base::Unretained(this)), |
| - kContinueWindowTimeoutMs); |
| + kContinueWindowShowTimeoutMs); |
| } |
| - continue_timer_started_ = start; |
| + continue_timer_state_ = start ? SHOW_DIALOG : INACTIVE; |
|
Sergey Ulanov
2011/08/24 01:56:45
What if this function is called with when continue
Jamie
2011/08/24 17:42:03
Done.
|
| } |
| void DesktopEnvironment::ContinueWindowTimerFunc() { |
| @@ -227,12 +235,25 @@ void DesktopEnvironment::ContinueWindowTimerFunc() { |
| // This function may be called prematurely if timer was stopped and |
| // then started again. In that case we just ignore this call. |
| - if (continue_timer_target_time_ > base::Time::Now()) |
| + if (continue_timer_state_ == INACTIVE || |
| + continue_timer_target_time_ > base::Time::Now()) |
| return; |
| - continue_timer_started_ = false; |
| - host_->PauseSession(true); |
| - ShowContinueWindow(true); |
| + if (continue_timer_state_ == SHOW_DIALOG) { |
| + host_->PauseSession(true); |
| + ShowContinueWindow(true); |
| + continue_timer_target_time_ = base::Time::Now() + |
| + base::TimeDelta::FromMilliseconds(kContinueWindowHideTimeoutMs); |
| + proxy_->CallOnUIThreadDelayed( |
| + FROM_HERE, base::Bind(&DesktopEnvironment::ContinueWindowTimerFunc, |
| + base::Unretained(this)), |
| + kContinueWindowHideTimeoutMs); |
| + continue_timer_state_ = HIDE_DIALOG; |
| + } else { |
| + continue_timer_state_ = INACTIVE; |
| + ShowContinueWindow(false); |
| + host_->Shutdown(NULL); |
|
Sergey Ulanov
2011/08/24 01:56:45
I don't like the idea of calling Shutdown() from h
|
| + } |
| } |