| Index: content/renderer/media/webmediaplayer_ms.cc
|
| diff --git a/content/renderer/media/webmediaplayer_ms.cc b/content/renderer/media/webmediaplayer_ms.cc
|
| index 96efe619212a4b47dbb3c091dfd793709ee09fd8..6ee3c0dcff19b7cdd14e0b9acadbd9a4c7a25dfa 100644
|
| --- a/content/renderer/media/webmediaplayer_ms.cc
|
| +++ b/content/renderer/media/webmediaplayer_ms.cc
|
| @@ -295,8 +295,9 @@ void WebMediaPlayerMS::play() {
|
| // TODO(perkj, magjed): We use OneShot focus type here so that it takes
|
| // audio focus once it starts, and then will not respond to further audio
|
| // focus changes. See http://crbug.com/596516 for more details.
|
| - delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(), false,
|
| + delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(),
|
| media::MediaContentType::OneShot);
|
| + delegate_->SetIdle(delegate_id_, false);
|
| }
|
|
|
| paused_ = false;
|
| @@ -320,8 +321,10 @@ void WebMediaPlayerMS::pause() {
|
| if (audio_renderer_)
|
| audio_renderer_->Pause();
|
|
|
| - if (delegate_)
|
| - delegate_->DidPause(delegate_id_, false);
|
| + if (delegate_) {
|
| + delegate_->DidPause(delegate_id_);
|
| + delegate_->SetIdle(delegate_id_, true);
|
| + }
|
|
|
| paused_ = true;
|
| }
|
| @@ -503,7 +506,7 @@ size_t WebMediaPlayerMS::videoDecodedByteCount() const {
|
| return 0;
|
| }
|
|
|
| -void WebMediaPlayerMS::OnHidden() {
|
| +void WebMediaPlayerMS::OnFrameHidden() {
|
| #if defined(OS_ANDROID)
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| @@ -524,44 +527,42 @@ void WebMediaPlayerMS::OnHidden() {
|
| #endif // defined(OS_ANDROID)
|
| }
|
|
|
| -void WebMediaPlayerMS::OnShown() {
|
| +void WebMediaPlayerMS::OnFrameClosed() {
|
| #if defined(OS_ANDROID)
|
| - DCHECK(thread_checker_.CalledOnValidThread());
|
| + if (!paused_) {
|
| + pause();
|
| + should_play_upon_shown_ = true;
|
| + }
|
| +
|
| + if (delegate_)
|
| + delegate_->PlayerGone(delegate_id_);
|
|
|
| if (frame_deliverer_) {
|
| io_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
|
| - base::Unretained(frame_deliverer_.get()), false));
|
| + base::Unretained(frame_deliverer_.get()), true));
|
| }
|
| -
|
| - // Resume playback on visibility. play() clears |should_play_upon_shown_|.
|
| - if (should_play_upon_shown_)
|
| - play();
|
| #endif // defined(OS_ANDROID)
|
| }
|
|
|
| -bool WebMediaPlayerMS::OnSuspendRequested(bool must_suspend) {
|
| +void WebMediaPlayerMS::OnFrameShown() {
|
| #if defined(OS_ANDROID)
|
| - if (!must_suspend)
|
| - return false;
|
| -
|
| - if (!paused_) {
|
| - pause();
|
| - should_play_upon_shown_ = true;
|
| - }
|
| -
|
| - if (delegate_)
|
| - delegate_->PlayerGone(delegate_id_);
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
|
|
| if (frame_deliverer_) {
|
| io_task_runner_->PostTask(
|
| FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
|
| - base::Unretained(frame_deliverer_.get()), true));
|
| + base::Unretained(frame_deliverer_.get()), false));
|
| }
|
| +
|
| + // Resume playback on visibility. play() clears |should_play_upon_shown_|.
|
| + if (should_play_upon_shown_)
|
| + play();
|
| #endif // defined(OS_ANDROID)
|
| - return true;
|
| }
|
|
|
| +void WebMediaPlayerMS::OnIdleTimeout() {}
|
| +
|
| void WebMediaPlayerMS::OnPlay() {
|
| // TODO(perkj, magjed): It's not clear how WebRTC should work with an
|
| // MediaSession, until these issues are resolved, disable session controls.
|
|
|