Chromium Code Reviews| Index: media/remoting/renderer_controller.cc |
| diff --git a/media/remoting/renderer_controller.cc b/media/remoting/renderer_controller.cc |
| index 6c11d411d2995655091a7411cf8c2b369c3f9ea7..d61d13685be08e3986d8bcda84e4bc2d50370168 100644 |
| --- a/media/remoting/renderer_controller.cc |
| +++ b/media/remoting/renderer_controller.cc |
| @@ -32,8 +32,9 @@ 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(); |
| + client_->DisablePipelineAutoSuspend(true); |
|
miu
2017/02/13 23:36:08
The disable should happen before the SwitchRendere
xjz
2017/02/14 01:46:10
Done.
|
| } else { |
| session_->StopRemoting(this); |
| } |
| @@ -52,8 +53,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 +152,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 +267,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 +346,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(); |
| 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 +368,8 @@ 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(); |
| + client_->DisablePipelineAutoSuspend(false); |
| session_->StopRemoting(this); |
| } |
| } |
| @@ -489,5 +471,13 @@ void RendererController::OnRendererFatalError(StopTrigger stop_trigger) { |
| UpdateAndMaybeSwitch(UNKNOWN_START_TRIGGER, stop_trigger); |
| } |
| +void RendererController::SetClient(MediaObserverClient* client) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
|
miu
2017/02/13 23:36:08
nit: Add: DCHECK(client) and DCHECK(!client_), sin
xjz
2017/02/14 01:46:10
Done.
|
| + client_ = client; |
| + if (client_) |
|
miu
2017/02/13 23:36:08
nit: And then, no need to null-check here because
xjz
2017/02/14 01:46:10
Done.
|
| + client_->ActivateViewportIntersectionMonitoring(IsRemoteSinkAvailable()); |
| +} |
| + |
| } // namespace remoting |
| } // namespace media |