Index: media/blink/webmediaplayer_impl.cc |
diff --git a/media/blink/webmediaplayer_impl.cc b/media/blink/webmediaplayer_impl.cc |
index b6c00f295fc68ba4429e93aac084db788f0b8af3..9b7507d539eb837714774884d7e57a92d1fd7b7f 100644 |
--- a/media/blink/webmediaplayer_impl.cc |
+++ b/media/blink/webmediaplayer_impl.cc |
@@ -649,7 +649,10 @@ void WebMediaPlayerImpl::selectedVideoTrackChanged( |
std::ostringstream logstr; |
std::vector<MediaTrack::Id> selectedVideoMediaTrackId; |
- if (selectedTrackId) { |
+ bool canAddVideoTrack = |
+ !base::FeatureList::IsEnabled(kBackgroundVideoTrackOptimization) || |
+ !IsHidden(); |
+ if (selectedTrackId && canAddVideoTrack) { |
selectedVideoMediaTrackId.push_back(selectedTrackId->utf8().data()); |
logstr << selectedVideoMediaTrackId[0]; |
} |
@@ -1307,6 +1310,9 @@ void WebMediaPlayerImpl::OnVideoOpacityChange(bool opaque) { |
void WebMediaPlayerImpl::OnHidden() { |
DCHECK(main_task_runner_->BelongsToCurrentThread()); |
+ |
+ client_->hidden(); |
+ |
if (watch_time_reporter_) |
watch_time_reporter_->OnHidden(); |
@@ -1322,6 +1328,8 @@ void WebMediaPlayerImpl::OnShown() { |
if (watch_time_reporter_) |
watch_time_reporter_->OnShown(); |
+ client_->shown(); |
+ |
must_suspend_ = false; |
background_pause_timer_.Stop(); |
@@ -1690,8 +1698,7 @@ void WebMediaPlayerImpl::UpdatePlayState() { |
#endif |
bool is_suspended = pipeline_controller_.IsSuspended(); |
- bool is_backgrounded = |
- IsBackgroundedSuspendEnabled() && delegate_ && delegate_->IsHidden(); |
+ bool is_backgrounded = IsBackgroundedSuspendEnabled() && IsHidden(); |
PlayState state = UpdatePlayState_ComputePlayState(is_remote, is_suspended, |
is_backgrounded); |
SetDelegateState(state.delegate_state); |
@@ -1949,10 +1956,16 @@ void WebMediaPlayerImpl::CreateWatchTimeReporter() { |
pipeline_metadata_.natural_size, |
base::Bind(&GetCurrentTimeInternal, this))); |
watch_time_reporter_->OnVolumeChange(volume_); |
- if (delegate_ && delegate_->IsHidden()) |
+ if (IsHidden()) |
watch_time_reporter_->OnHidden(); |
else |
watch_time_reporter_->OnShown(); |
} |
+bool WebMediaPlayerImpl::IsHidden() const { |
+ DCHECK(main_task_runner_->BelongsToCurrentThread()); |
+ |
+ return delegate_ && delegate_->IsHidden(); |
+} |
+ |
} // namespace media |