| Index: media/remoting/renderer_controller.cc
|
| diff --git a/media/remoting/renderer_controller.cc b/media/remoting/renderer_controller.cc
|
| index 6c11d411d2995655091a7411cf8c2b369c3f9ea7..161ebcde893c71e3323420edfce58db60743b47a 100644
|
| --- a/media/remoting/renderer_controller.cc
|
| +++ b/media/remoting/renderer_controller.cc
|
| @@ -32,8 +32,8 @@ void RendererController::OnStarted(bool success) {
|
| VLOG(1) << "Remoting started successively.";
|
| if (remote_rendering_started_) {
|
| metrics_recorder_.DidStartSession();
|
| - DCHECK(!switch_renderer_cb_.is_null());
|
| - switch_renderer_cb_.Run();
|
| + DCHECK(client_);
|
| + client_->SwitchRenderer(true);
|
| } else {
|
| session_->StopRemoting(this);
|
| }
|
| @@ -52,8 +52,8 @@ void RendererController::OnSessionStateChanged() {
|
| void RendererController::UpdateFromSessionState(StartTrigger start_trigger,
|
| StopTrigger stop_trigger) {
|
| VLOG(1) << "UpdateFromSessionState: " << session_->state();
|
| - if (!sink_available_changed_cb_.is_null())
|
| - sink_available_changed_cb_.Run(IsRemoteSinkAvailable());
|
| + if (client_)
|
| + client_->ActivateViewportIntersectionMonitoring(IsRemoteSinkAvailable());
|
|
|
| UpdateInterstitial(base::nullopt);
|
| UpdateAndMaybeSwitch(start_trigger, stop_trigger);
|
| @@ -151,26 +151,6 @@ void RendererController::OnSetPoster(const GURL& poster_url) {
|
| }
|
| }
|
|
|
| -void RendererController::SetSwitchRendererCallback(const base::Closure& cb) {
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| - DCHECK(!cb.is_null());
|
| -
|
| - switch_renderer_cb_ = cb;
|
| - // Note: Not calling UpdateAndMaybeSwitch() here since this method should be
|
| - // called during the initialization phase of this RendererController;
|
| - // and definitely before a whole lot of other things that are needed to
|
| - // trigger a switch.
|
| -}
|
| -
|
| -void RendererController::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<RpcBroker> RendererController::GetRpcBroker() const {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| @@ -286,7 +266,7 @@ void RendererController::OnPaused() {
|
| bool RendererController::ShouldBeRemoting() {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| - if (switch_renderer_cb_.is_null()) {
|
| + if (!client_) {
|
| DCHECK(!remote_rendering_started_);
|
| return false; // No way to switch to the remoting renderer.
|
| }
|
| @@ -365,16 +345,16 @@ void RendererController::UpdateAndMaybeSwitch(StartTrigger start_trigger,
|
| // Switch between local renderer and remoting renderer.
|
| remote_rendering_started_ = should_be_remoting;
|
|
|
| + DCHECK(client_);
|
| if (remote_rendering_started_) {
|
| - DCHECK(!switch_renderer_cb_.is_null());
|
| if (session_->state() == SharedSession::SESSION_PERMANENTLY_STOPPED) {
|
| - switch_renderer_cb_.Run();
|
| + client_->SwitchRenderer(true);
|
| return;
|
| }
|
| DCHECK_NE(start_trigger, UNKNOWN_START_TRIGGER);
|
| metrics_recorder_.WillStartSession(start_trigger);
|
| - // |switch_renderer_cb_.Run()| will be called after remoting is started
|
| - // successfully.
|
| + // |MediaObserverClient::SwitchRenderer()| will be called after remoting is
|
| + // started successfully.
|
| session_->StartRemoting(this);
|
| } else {
|
| // For encrypted content, it's only valid to switch to remoting renderer,
|
| @@ -387,7 +367,7 @@ void RendererController::UpdateAndMaybeSwitch(StartTrigger start_trigger,
|
| // Update the interstitial one last time before switching back to the local
|
| // Renderer.
|
| UpdateInterstitial(base::nullopt);
|
| - switch_renderer_cb_.Run();
|
| + client_->SwitchRenderer(false);
|
| session_->StopRemoting(this);
|
| }
|
| }
|
| @@ -489,5 +469,14 @@ void RendererController::OnRendererFatalError(StopTrigger stop_trigger) {
|
| UpdateAndMaybeSwitch(UNKNOWN_START_TRIGGER, stop_trigger);
|
| }
|
|
|
| +void RendererController::SetClient(MediaObserverClient* client) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(client);
|
| + DCHECK(!client_);
|
| +
|
| + client_ = client;
|
| + client_->ActivateViewportIntersectionMonitoring(IsRemoteSinkAvailable());
|
| +}
|
| +
|
| } // namespace remoting
|
| } // namespace media
|
|
|