| 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..5c255d94d1c7787f87b856799a5ce4f138a5e66a 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());
|
| +
|
| + 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());
|
|
|