| 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..40506d8251839278c751f63123a2e2ee45a1cd8f 100644
|
| --- a/media/remoting/remoting_renderer_controller.cc
|
| +++ b/media/remoting/remoting_renderer_controller.cc
|
| @@ -43,9 +43,29 @@ 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;
|
| + }
|
| +
|
| + return false; // To suppress compile warning.
|
| +}
|
| +
|
| void RemotingRendererController::OnEnteredFullscreen() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| @@ -96,6 +116,15 @@ void RemotingRendererController::SetSwitchRendererCallback(
|
| UpdateAndMaybeSwitch();
|
| }
|
|
|
| +void RemotingRendererController::SetRemoteSinkAvailableChangedCallback(
|
| + const base::Callback<void(bool)>& cb) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| + sink_available_changed_cb_ = cb;
|
| + if (!sink_available_changed_cb_.is_null())
|
| + sink_available_changed_cb_.Run(IsRemoteSinkAvailable());
|
| +}
|
| +
|
| base::WeakPtr<remoting::RpcBroker> RemotingRendererController::GetRpcBroker()
|
| const {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|