| Index: content/browser/media/media_web_contents_observer.cc
|
| diff --git a/content/browser/media/media_web_contents_observer.cc b/content/browser/media/media_web_contents_observer.cc
|
| index 1123974df7b63597f042420cbbd1bdb681a89175..308451a9b6a26fbacb2ab1b5f34ef19b56a69845 100644
|
| --- a/content/browser/media/media_web_contents_observer.cc
|
| +++ b/content/browser/media/media_web_contents_observer.cc
|
| @@ -26,7 +26,8 @@ static base::LazyInstance<AudibleMetrics>::Leaky g_audible_metrics =
|
| } // anonymous namespace
|
|
|
| MediaWebContentsObserver::MediaWebContentsObserver(WebContents* web_contents)
|
| - : WebContentsObserver(web_contents) {}
|
| + : WebContentsObserver(web_contents),
|
| + session_controllers_manager_(this) {}
|
|
|
| MediaWebContentsObserver::~MediaWebContentsObserver() {}
|
|
|
| @@ -37,6 +38,7 @@ void MediaWebContentsObserver::WebContentsDestroyed() {
|
| void MediaWebContentsObserver::RenderFrameDeleted(
|
| RenderFrameHost* render_frame_host) {
|
| ClearPowerSaveBlockers(render_frame_host);
|
| + session_controllers_manager_.Clear(render_frame_host);
|
| }
|
|
|
| void MediaWebContentsObserver::MaybeUpdateAudibleState() {
|
| @@ -93,7 +95,6 @@ void MediaWebContentsObserver::OnMediaDestroyed(
|
| OnMediaPaused(render_frame_host, delegate_id, true);
|
| }
|
|
|
| -
|
| void MediaWebContentsObserver::OnMediaPaused(RenderFrameHost* render_frame_host,
|
| int delegate_id,
|
| bool reached_end_of_stream) {
|
| @@ -106,6 +107,11 @@ void MediaWebContentsObserver::OnMediaPaused(RenderFrameHost* render_frame_host,
|
| // Notify observers the player has been "paused".
|
| static_cast<WebContentsImpl*>(web_contents())->MediaStoppedPlaying(id);
|
| }
|
| +
|
| + if (reached_end_of_stream)
|
| + session_controllers_manager_.OnEnd(id);
|
| + else
|
| + session_controllers_manager_.OnPause(id);
|
| }
|
|
|
| void MediaWebContentsObserver::OnMediaPlaying(
|
| @@ -143,6 +149,11 @@ void MediaWebContentsObserver::OnMediaPlaying(
|
| }
|
| }
|
|
|
| + if (!session_controllers_manager_.RequestPlay(
|
| + id, has_audio, is_remote, duration)) {
|
| + return;
|
| + }
|
| +
|
| // Notify observers of the new player.
|
| DCHECK(has_audio || has_video);
|
| static_cast<WebContentsImpl*>(web_contents())->MediaStartedPlaying(id);
|
|
|