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

Unified Diff: media/blink/webmediaplayer_impl_unittest.cc

Issue 2445533002: Don't suspend the pipeline before HaveFutureData while decoding progressing (Closed)
Patch Set: fix compiler error from rebase Created 4 years, 1 month 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') | no next file » | 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 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);
« no previous file with comments | « media/blink/webmediaplayer_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698