| Index: media/blink/webmediaplayer_impl_unittest.cc
|
| diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
|
| index 493dfb80c38831a8b6f3983946d4068e633d7492..6a2a291cf3b29bee856aaff274edb80d1db2ce74 100644
|
| --- a/media/blink/webmediaplayer_impl_unittest.cc
|
| +++ b/media/blink/webmediaplayer_impl_unittest.cc
|
| @@ -28,6 +28,7 @@
|
| #include "media/renderers/default_renderer_factory.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "third_party/WebKit/public/platform/WebMediaPlayer.h"
|
| #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
|
| #include "third_party/WebKit/public/platform/WebSecurityOrigin.h"
|
| #include "third_party/WebKit/public/platform/WebSize.h"
|
| @@ -44,6 +45,12 @@ using ::testing::_;
|
|
|
| namespace media {
|
|
|
| +// Specify different values for testing.
|
| +const base::TimeDelta kMaxKeyframeDistanceToDisableBackgroundVideo =
|
| + base::TimeDelta::FromSeconds(5);
|
| +const base::TimeDelta kMaxKeyframeDistanceToDisableBackgroundVideoMSE =
|
| + base::TimeDelta::FromSeconds(10);
|
| +
|
| int64_t OnAdjustAllocatedMemory(int64_t delta) {
|
| return 0;
|
| }
|
| @@ -215,7 +222,9 @@ class WebMediaPlayerImplTest : public testing::Test {
|
| media_thread_.task_runner(), message_loop_.task_runner(),
|
| message_loop_.task_runner(), WebMediaPlayerParams::Context3DCB(),
|
| base::Bind(&OnAdjustAllocatedMemory), nullptr, nullptr, nullptr,
|
| - base::TimeDelta::FromSeconds(10), false, allow_suspend, false));
|
| + kMaxKeyframeDistanceToDisableBackgroundVideo,
|
| + kMaxKeyframeDistanceToDisableBackgroundVideoMSE, false,
|
| + allow_suspend, false));
|
| }
|
|
|
| ~WebMediaPlayerImplTest() override {
|
| @@ -331,6 +340,10 @@ class WebMediaPlayerImplTest : public testing::Test {
|
| wmpi_->SetSuspendState(is_suspended);
|
| }
|
|
|
| + void SetLoadType(blink::WebMediaPlayer::LoadType load_type) {
|
| + wmpi_->load_type_ = load_type;
|
| + }
|
| +
|
| // "Renderer" thread.
|
| base::MessageLoop message_loop_;
|
|
|
| @@ -796,7 +809,7 @@ TEST_F(WebMediaPlayerImplTest, BackgroundIdlePauseTimerDependsOnAudio) {
|
| class WebMediaPlayerImplBackgroundBehaviorTest
|
| : public WebMediaPlayerImplTest,
|
| public ::testing::WithParamInterface<
|
| - std::tuple<bool, bool, int, int, bool>> {
|
| + std::tuple<bool, bool, int, int, bool, bool>> {
|
| public:
|
| // Indices of the tuple parameters.
|
| static const int kIsMediaSuspendEnabled = 0;
|
| @@ -804,6 +817,7 @@ class WebMediaPlayerImplBackgroundBehaviorTest
|
| static const int kDurationSec = 2;
|
| static const int kAverageKeyframeDistanceSec = 3;
|
| static const int kIsResumeBackgroundVideoEnabled = 4;
|
| + static const int kIsMediaSource = 5;
|
|
|
| void SetUp() override {
|
| WebMediaPlayerImplTest::SetUp();
|
| @@ -831,6 +845,9 @@ class WebMediaPlayerImplBackgroundBehaviorTest
|
| feature_list_.InitFromCommandLine(enabled_features, disabled_features);
|
|
|
| InitializeWebMediaPlayerImpl(true);
|
| + bool is_media_source = std::get<kIsMediaSource>(GetParam());
|
| + SetLoadType(is_media_source ? blink::WebMediaPlayer::kLoadTypeMediaSource
|
| + : blink::WebMediaPlayer::kLoadTypeURL);
|
| SetVideoKeyframeDistanceAverage(
|
| base::TimeDelta::FromSeconds(GetAverageKeyframeDistanceSec()));
|
| SetDuration(base::TimeDelta::FromSeconds(GetDurationSec()));
|
| @@ -865,6 +882,14 @@ class WebMediaPlayerImplBackgroundBehaviorTest
|
| return std::get<kAverageKeyframeDistanceSec>(GetParam());
|
| }
|
|
|
| + int GetMaxKeyframeDistanceSec() const {
|
| + base::TimeDelta max_keyframe_distance =
|
| + std::get<kIsMediaSource>(GetParam())
|
| + ? kMaxKeyframeDistanceToDisableBackgroundVideoMSE
|
| + : kMaxKeyframeDistanceToDisableBackgroundVideo;
|
| + return max_keyframe_distance.InSeconds();
|
| + }
|
| +
|
| bool IsAndroid() {
|
| #if defined(OS_ANDROID)
|
| return true;
|
| @@ -907,8 +932,8 @@ TEST_P(WebMediaPlayerImplBackgroundBehaviorTest, VideoOnly) {
|
| // There's no optimization criteria for video only on Android.
|
| bool matches_requirements =
|
| IsAndroid() ||
|
| - ((GetDurationSec() < GetAverageKeyframeDistanceSec()) ||
|
| - (GetAverageKeyframeDistanceSec() < 10));
|
| + ((GetDurationSec() < GetMaxKeyframeDistanceSec()) ||
|
| + (GetAverageKeyframeDistanceSec() < GetMaxKeyframeDistanceSec()));
|
| EXPECT_EQ(matches_requirements, IsBackgroundOptimizationCandidate());
|
|
|
| // Video is always paused when suspension is on and only if matches the
|
| @@ -923,8 +948,8 @@ TEST_P(WebMediaPlayerImplBackgroundBehaviorTest, AudioVideo) {
|
|
|
| // Optimization requirements are the same for all platforms.
|
| bool matches_requirements =
|
| - (GetDurationSec() < GetAverageKeyframeDistanceSec()) ||
|
| - (GetAverageKeyframeDistanceSec() < 10);
|
| + (GetDurationSec() < GetMaxKeyframeDistanceSec()) ||
|
| + (GetAverageKeyframeDistanceSec() < GetMaxKeyframeDistanceSec());
|
|
|
| EXPECT_EQ(matches_requirements, IsBackgroundOptimizationCandidate());
|
| EXPECT_EQ(IsBackgroundOptimizationOn() && matches_requirements,
|
| @@ -942,6 +967,7 @@ INSTANTIATE_TEST_CASE_P(BackgroundBehaviorTestInstances,
|
| ::testing::Bool(),
|
| ::testing::Values(5, 300),
|
| ::testing::Values(5, 100),
|
| + ::testing::Bool(),
|
| ::testing::Bool()));
|
|
|
| } // namespace media
|
|
|