| Index: media/blink/webmediaplayer_impl_unittest.cc
|
| diff --git a/media/blink/webmediaplayer_impl_unittest.cc b/media/blink/webmediaplayer_impl_unittest.cc
|
| index abb0803d69fa9650dd3211458ae86d77365a23d6..bcbb1500be30f4d51fb3fd016b59bd56fe493fed 100644
|
| --- a/media/blink/webmediaplayer_impl_unittest.cc
|
| +++ b/media/blink/webmediaplayer_impl_unittest.cc
|
| @@ -16,6 +16,7 @@
|
| #include "base/memory/weak_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| +#include "base/test/simple_test_tick_clock.h"
|
| #include "base/threading/thread.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "media/base/media_log.h"
|
| @@ -127,14 +128,9 @@ class WebMediaPlayerImplTest : public testing::Test {
|
| media_thread_.StartAndWaitForTesting();
|
| }
|
|
|
| - void InitializeDefaultWebMediaPlayerImpl() {
|
| - InitializeWebMediaPlayerImpl(delegate_.AsWeakPtr());
|
| - }
|
| -
|
| - void InitializeWebMediaPlayerImpl(
|
| - base::WeakPtr<MockWebMediaPlayerDelegate> delegate) {
|
| + void InitializeWebMediaPlayerImpl() {
|
| wmpi_.reset(new WebMediaPlayerImpl(
|
| - web_local_frame_, &client_, nullptr, delegate,
|
| + web_local_frame_, &client_, nullptr, delegate_.AsWeakPtr(),
|
| base::MakeUnique<DefaultRendererFactory>(
|
| media_log_, nullptr, DefaultRendererFactory::GetGpuFactoriesCB()),
|
| url_index_,
|
| @@ -166,6 +162,7 @@ class WebMediaPlayerImplTest : public testing::Test {
|
| void SetPaused(bool is_paused) { wmpi_->paused_ = is_paused; }
|
| void SetSeeking(bool is_seeking) { wmpi_->seeking_ = is_seeking; }
|
| void SetEnded(bool is_ended) { wmpi_->ended_ = is_ended; }
|
| + void SetTickClock(base::TickClock* clock) { wmpi_->tick_clock_.reset(clock); }
|
|
|
| void SetFullscreen(bool is_fullscreen) {
|
| wmpi_->overlay_enabled_ = is_fullscreen;
|
| @@ -274,14 +271,47 @@ class WebMediaPlayerImplTest : public testing::Test {
|
| };
|
|
|
| TEST_F(WebMediaPlayerImplTest, ConstructAndDestroy) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| }
|
|
|
| -TEST_F(WebMediaPlayerImplTest, DidLoadingProgressClearsIdle) {
|
| - testing::StrictMock<MockWebMediaPlayerDelegate> strict_delegate;
|
| - EXPECT_CALL(strict_delegate, AddObserver(_));
|
| - EXPECT_CALL(strict_delegate, IsPlayingBackgroundVideo()).Times(AnyNumber());
|
| - InitializeWebMediaPlayerImpl(strict_delegate.AsWeakPtr());
|
| +TEST_F(WebMediaPlayerImplTest, IdleSuspendIsEnabledBeforeLoadingBegins) {
|
| + InitializeWebMediaPlayerImpl();
|
| + wmpi_->OnSuspendRequested(false);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(IsSuspended());
|
| +}
|
| +
|
| +TEST_F(WebMediaPlayerImplTest,
|
| + IdleSuspendIsDisabledIfLoadingProgressedRecently) {
|
| + InitializeWebMediaPlayerImpl();
|
| + base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
|
| + clock->Advance(base::TimeDelta::FromSeconds(1));
|
| + SetTickClock(clock);
|
| + AddBufferedRanges();
|
| + wmpi_->didLoadingProgress();
|
| + // Advance less than the loading timeout.
|
| + clock->Advance(base::TimeDelta::FromSeconds(1));
|
| + wmpi_->OnSuspendRequested(false);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_FALSE(IsSuspended());
|
| +}
|
| +
|
| +TEST_F(WebMediaPlayerImplTest, IdleSuspendIsEnabledIfLoadingHasStalled) {
|
| + InitializeWebMediaPlayerImpl();
|
| + base::SimpleTestTickClock* clock = new base::SimpleTestTickClock();
|
| + clock->Advance(base::TimeDelta::FromSeconds(1));
|
| + SetTickClock(clock);
|
| + AddBufferedRanges();
|
| + wmpi_->didLoadingProgress();
|
| + // Advance more than the loading timeout.
|
| + clock->Advance(base::TimeDelta::FromSeconds(4));
|
| + wmpi_->OnSuspendRequested(false);
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_TRUE(IsSuspended());
|
| +}
|
| +
|
| +TEST_F(WebMediaPlayerImplTest, DidLoadingProgressTriggersResume) {
|
| + InitializeWebMediaPlayerImpl();
|
| EXPECT_FALSE(IsSuspended());
|
| wmpi_->OnSuspendRequested(false);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -293,7 +323,7 @@ TEST_F(WebMediaPlayerImplTest, DidLoadingProgressClearsIdle) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterConstruction) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
|
|
| state = ComputePlayState();
|
| @@ -318,7 +348,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterConstruction) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterMetadata) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
|
|
| @@ -344,7 +374,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterMetadata) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterMetadata_AudioOnly) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, false);
|
|
|
| @@ -371,7 +401,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterMetadata_AudioOnly) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterFutureData) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -403,7 +433,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_AfterFutureData) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_Playing) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -429,7 +459,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_Playing) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_PlayingThenUnderflow) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -460,7 +490,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_PlayingThenUnderflow) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_Playing_AudioOnly) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, false);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -492,7 +522,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_Playing_AudioOnly) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_Paused_Seek) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -505,7 +535,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_Paused_Seek) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_Paused_Fullscreen) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -518,7 +548,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_Paused_Fullscreen) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_Ended) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -537,7 +567,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_Ended) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_Suspended) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
|
|
| @@ -595,7 +625,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_Suspended) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, NaturalSizeChange) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| PipelineMetadata metadata;
|
| metadata.has_video = true;
|
| metadata.natural_size = gfx::Size(320, 240);
|
| @@ -609,7 +639,7 @@ TEST_F(WebMediaPlayerImplTest, NaturalSizeChange) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, NaturalSizeChange_Rotated) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| PipelineMetadata metadata;
|
| metadata.has_video = true;
|
| metadata.natural_size = gfx::Size(320, 240);
|
| @@ -625,7 +655,7 @@ TEST_F(WebMediaPlayerImplTest, NaturalSizeChange_Rotated) {
|
|
|
| // Audible backgrounded videos are not suspended if delegate_ allows it.
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_BackgroundedVideoPlaying) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -646,7 +676,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_BackgroundedVideoPlaying) {
|
| // Backgrounding audible videos should suspend them and report as paused, not
|
| // gone.
|
| TEST_F(WebMediaPlayerImplTest, ComputePlayState_BackgroundedVideoPaused) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| WebMediaPlayerImpl::PlayState state;
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| @@ -663,7 +693,7 @@ TEST_F(WebMediaPlayerImplTest, ComputePlayState_BackgroundedVideoPaused) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, AutoplayMuted_StartsAndStops) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| SetPaused(false);
|
| @@ -678,7 +708,7 @@ TEST_F(WebMediaPlayerImplTest, AutoplayMuted_StartsAndStops) {
|
| }
|
|
|
| TEST_F(WebMediaPlayerImplTest, AutoplayMuted_SetVolume) {
|
| - InitializeDefaultWebMediaPlayerImpl();
|
| + InitializeWebMediaPlayerImpl();
|
| SetMetadata(true, true);
|
| SetReadyState(blink::WebMediaPlayer::ReadyStateHaveFutureData);
|
| SetPaused(false);
|
|
|