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

Unified Diff: media/blink/webmediaplayer_impl_unittest.cc

Issue 2631633003: [Video] Only start tracking foreground time if the video was resumed. (Closed)
Patch Set: Added a comment Created 3 years, 11 months 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 | « media/blink/webmediaplayer_impl.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/blink/webmediaplayer_impl_unittest.cc
diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
index b0fbb4087e32dc2ff074a1cbf3f1748fedebe135..b68bba6eb50b7cf8e1e850729b78e7ae0e0c5b92 100644
--- a/media/blink/webmediaplayer_impl_unittest.cc
+++ b/media/blink/webmediaplayer_impl_unittest.cc
@@ -284,12 +284,24 @@ class WebMediaPlayerImplTest : public testing::Test {
return wmpi_->ShouldDisableVideoWhenHidden();
}
+ bool ShouldPauseVideoWhenHidden() const {
+ return wmpi_->ShouldPauseVideoWhenHidden();
+ }
+
+ bool IsBackgroundOptimizationCandidate() const {
+ return wmpi_->IsBackgroundOptimizationCandidate();
+ }
+
void SetVideoKeyframeDistanceAverage(base::TimeDelta value) {
PipelineStatistics statistics;
statistics.video_keyframe_distance_average = value;
wmpi_->SetPipelineStatisticsForTest(statistics);
}
+ void SetDuration(base::TimeDelta value) {
+ wmpi_->SetPipelineMediaDurationForTest(value);
+ }
+
// "Renderer" thread.
base::MessageLoop message_loop_;
@@ -668,36 +680,88 @@ TEST_F(WebMediaPlayerImplTest, NaturalSizeChange_Rotated) {
ASSERT_EQ(blink::WebSize(1080, 1920), wmpi_->naturalSize());
}
-TEST_F(WebMediaPlayerImplTest, ShouldDisableVideoWhenHidden) {
+TEST_F(WebMediaPlayerImplTest, BackgroundOptimizationsFeatureEnabled) {
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndEnableFeature(kBackgroundVideoTrackOptimization);
-
InitializeWebMediaPlayerImpl();
- delegate_.SetFrameHiddenForTesting(true);
+ SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5));
+ SetDuration(base::TimeDelta::FromSeconds(300));
+ // Audible video.
SetMetadata(true, true);
- SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5));
+ EXPECT_TRUE(IsBackgroundOptimizationCandidate());
EXPECT_TRUE(ShouldDisableVideoWhenHidden());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
+ // Video only.
SetMetadata(false, true);
+ EXPECT_TRUE(IsBackgroundOptimizationCandidate());
+ EXPECT_TRUE(ShouldPauseVideoWhenHidden());
EXPECT_FALSE(ShouldDisableVideoWhenHidden());
+ // Audio only.
SetMetadata(true, false);
+ EXPECT_FALSE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
EXPECT_FALSE(ShouldDisableVideoWhenHidden());
- SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100));
+ // Duration is shorter than max video keyframe distance.
+ SetDuration(base::TimeDelta::FromSeconds(5));
SetMetadata(true, true);
+ EXPECT_TRUE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
+ EXPECT_TRUE(ShouldDisableVideoWhenHidden());
+
+ // Average keyframe distance is too big.
+ SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100));
+ SetDuration(base::TimeDelta::FromSeconds(300));
+ EXPECT_FALSE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
EXPECT_FALSE(ShouldDisableVideoWhenHidden());
}
-TEST_F(WebMediaPlayerImplTest, ShouldDisableVideoWhenHiddenFeatureDisabled) {
+TEST_F(WebMediaPlayerImplTest, BackgroundOptimizationsFeatureDisabled) {
base::test::ScopedFeatureList scoped_feature_list;
scoped_feature_list.InitAndDisableFeature(kBackgroundVideoTrackOptimization);
InitializeWebMediaPlayerImpl();
- delegate_.SetFrameHiddenForTesting(true);
+ SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(5));
+ SetDuration(base::TimeDelta::FromSeconds(300));
+ // Audible video.
SetMetadata(true, true);
+ EXPECT_TRUE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldDisableVideoWhenHidden());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
+
+ // Video only (pausing is enabled on Android).
+ SetMetadata(false, true);
+ EXPECT_TRUE(IsBackgroundOptimizationCandidate());
+#if defined(OS_ANDROID)
+ EXPECT_TRUE(ShouldPauseVideoWhenHidden());
+#else
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
+#endif
+ EXPECT_FALSE(ShouldDisableVideoWhenHidden());
+
+ // Audio only.
+ SetMetadata(true, false);
+ EXPECT_FALSE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
+ EXPECT_FALSE(ShouldDisableVideoWhenHidden());
+
+ // Duration is shorter than max video keyframe distance.
+ SetDuration(base::TimeDelta::FromSeconds(5));
+ SetMetadata(true, true);
+ EXPECT_TRUE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
+ EXPECT_FALSE(ShouldDisableVideoWhenHidden());
+
+ // Average keyframe distance is too big.
+ SetVideoKeyframeDistanceAverage(base::TimeDelta::FromSeconds(100));
+ SetDuration(base::TimeDelta::FromSeconds(300));
+ EXPECT_FALSE(IsBackgroundOptimizationCandidate());
+ EXPECT_FALSE(ShouldPauseVideoWhenHidden());
EXPECT_FALSE(ShouldDisableVideoWhenHidden());
}
« no previous file with comments | « media/blink/webmediaplayer_impl.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698