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 |