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 |