Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(984)

Unified Diff: media/blink/webmediaplayer_impl.cc

Issue 2567833002: [Video] Pause videos with no audio when in the background. (Closed)
Patch Set: Don't suspend video if paused for some time but has no audio Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/blink/webmediaplayer_impl.cc
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc
index a105327d0635b16c4d2fdc937a2cb7a89c32fa91..cccbcf8dc79e7d037d2e362999e394df37088b91 100644
--- a/media/blink/webmediaplayer_impl.cc
+++ b/media/blink/webmediaplayer_impl.cc
@@ -1714,7 +1714,7 @@ void WebMediaPlayerImpl::UpdatePlayState() {
#endif
bool is_suspended = pipeline_controller_.IsSuspended();
- bool is_backgrounded = IsBackgroundedSuspendEnabled() && IsHidden();
+ bool is_backgrounded = IsHidden();
PlayState state = UpdatePlayState_ComputePlayState(
is_remote, is_streaming, is_suspended, is_backgrounded);
SetDelegateState(state.delegate_state);
@@ -1837,7 +1837,11 @@ WebMediaPlayerImpl::UpdatePlayState_ComputePlayState(bool is_remote,
hasAudio() && IsResumeBackgroundVideosEnabled();
bool is_background_playing =
delegate_ && delegate_->IsPlayingBackgroundVideo();
- bool background_suspended = !is_streaming && is_backgrounded_video &&
+ // Video-only media should always be suspended when in background.
+ bool should_suspend_background_media =
+ IsBackgroundedSuspendEnabled() || !hasAudio();
+ bool background_suspended = should_suspend_background_media &&
+ !is_streaming && is_backgrounded_video &&
!(can_play_backgrounded && is_background_playing);
bool background_pause_suspended =
!is_streaming && is_backgrounded && paused_ && have_future_data;
@@ -1951,8 +1955,9 @@ void WebMediaPlayerImpl::FinishMemoryUsageReport(int64_t demuxer_memory_usage) {
}
void WebMediaPlayerImpl::ScheduleIdlePauseTimer() {
- // Only schedule the pause timer if we're playing and are suspended.
- if (paused_ || !pipeline_controller_.IsSuspended())
+ // Only schedule the pause timer if we're playing, are suspended and
+ // have audio.
+ if (paused_ || !pipeline_controller_.IsSuspended() || !hasAudio())
sandersd (OOO until July 31) 2016/12/15 01:09:47 This doesn't look quite right to me. The purpose o
whywhat 2016/12/16 01:20:24 Well, it might be - AFAIK it only affects Android
whywhat 2016/12/16 20:09:37 Dan, am I correct that the timer would only trigge
return;
#if defined(OS_ANDROID)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698