Chromium Code Reviews| Index: media/remoting/remoting_renderer_controller.cc |
| diff --git a/media/remoting/remoting_renderer_controller.cc b/media/remoting/remoting_renderer_controller.cc |
| index f1abc93d3a6b4531a8c22f7fdf8fae7f46e0fd76..7b542946f58c4bcd05e4dce7b3e4d7fc706adce6 100644 |
| --- a/media/remoting/remoting_renderer_controller.cc |
| +++ b/media/remoting/remoting_renderer_controller.cc |
| @@ -43,9 +43,27 @@ void RemotingRendererController::OnSessionStateChanged() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| VLOG(1) << "OnSessionStateChanged: " << remoting_source_->state(); |
| + if (!sink_available_changed_cb_.is_null()) |
| + sink_available_changed_cb_.Run(IsRemoteSinkAvailable()); |
| + |
| UpdateAndMaybeSwitch(); |
| } |
| +bool RemotingRendererController::IsRemoteSinkAvailable() { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + switch (remoting_source_->state()) { |
| + case SESSION_CAN_START: |
| + case SESSION_STARTING: |
| + case SESSION_STARTED: |
| + return true; |
| + case SESSION_UNAVAILABLE: |
| + case SESSION_STOPPING: |
| + case SESSION_PERMANENTLY_STOPPED: |
| + return false; |
| + } |
| +} |
| + |
| void RemotingRendererController::OnEnteredFullscreen() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| @@ -96,6 +114,15 @@ void RemotingRendererController::SetSwitchRendererCallback( |
| UpdateAndMaybeSwitch(); |
| } |
| +void RemotingRendererController::SetRemoteSinkAvailableChangedCallback( |
| + const base::Callback<void(bool)>& cb) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + DCHECK(!cb.is_null()); |
|
miu
2016/12/10 02:18:37
nit: It's probably okay for this to be a null call
xjz
2016/12/12 18:58:45
Done.
|
| + |
| + sink_available_changed_cb_ = cb; |
| + sink_available_changed_cb_.Run(IsRemoteSinkAvailable()); |
| +} |
| + |
| base::WeakPtr<remoting::RpcBroker> RemotingRendererController::GetRpcBroker() |
| const { |
| DCHECK(thread_checker_.CalledOnValidThread()); |