diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/media/blink/webmediaplayer_impl_unittest.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/media/blink/webmediaplayer_impl_unittest.cc')
-rw-r--r-- | chromium/media/blink/webmediaplayer_impl_unittest.cc | 188 |
1 files changed, 54 insertions, 134 deletions
diff --git a/chromium/media/blink/webmediaplayer_impl_unittest.cc b/chromium/media/blink/webmediaplayer_impl_unittest.cc index 77dc3344993..d054fef8b92 100644 --- a/chromium/media/blink/webmediaplayer_impl_unittest.cc +++ b/chromium/media/blink/webmediaplayer_impl_unittest.cc @@ -241,6 +241,10 @@ class MockWebMediaPlayerDelegate : public blink::WebMediaPlayerDelegate { DCHECK_EQ(player_id_, player_id); } + void DidBufferUnderflow(int player_id) override { + DCHECK_EQ(player_id_, player_id); + } + bool IsFrameHidden() override { return is_hidden_; } bool IsFrameClosed() override { return is_closed_; } @@ -436,7 +440,7 @@ class WebMediaPlayerImplTest viz::TestContextProvider::Create(), blink::WebMediaPlayer::SurfaceLayerMode::kAlways, is_background_suspend_enabled_, is_background_video_playback_enabled_, - true, false, std::move(demuxer_override), nullptr); + true, std::move(demuxer_override), nullptr); auto compositor = std::make_unique<NiceMock<MockVideoFrameCompositor>>( params->video_frame_compositor_task_runner()); @@ -1545,167 +1549,82 @@ TEST_F(WebMediaPlayerImplTest, AutoplayMuted_SetVolume) { wmpi_->SetVolume(1.0); } -TEST_F(WebMediaPlayerImplTest, MediaPositionState_OnDurationChange) { +TEST_F(WebMediaPlayerImplTest, MediaPositionState_Playing) { InitializeWebMediaPlayerImpl(); + LoadAndWaitForReadyState(kAudioOnlyTestFile, + blink::WebMediaPlayer::kReadyStateHaveFutureData); + wmpi_->SetRate(1.0); + Play(); - testing::Sequence s; EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( delegate_.player_id(), - media_session::MediaPosition(0.0, kAudioOnlyTestFileDuration, - base::TimeDelta()))) - .InSequence(s); - EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( - delegate_.player_id(), - media_session::MediaPosition( - 0.0, kInfiniteDuration, base::TimeDelta()))) - .InSequence(s); - - LoadAndWaitForReadyState(kAudioOnlyTestFile, - blink::WebMediaPlayer::kReadyStateHaveCurrentData); - - SetDuration(kInfiniteDuration); + media_session::MediaPosition(1.0, kAudioOnlyTestFileDuration, + base::TimeDelta()))); + wmpi_->OnTimeUpdate(); } -TEST_F(WebMediaPlayerImplTest, MediaPositionState_PlayPauseSetRate) { +TEST_F(WebMediaPlayerImplTest, MediaPositionState_Paused) { InitializeWebMediaPlayerImpl(); + LoadAndWaitForReadyState(kAudioOnlyTestFile, + blink::WebMediaPlayer::kReadyStateHaveFutureData); + wmpi_->SetRate(1.0); - testing::Sequence s; + // The effective playback rate is 0.0 while paused. EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( delegate_.player_id(), media_session::MediaPosition(0.0, kAudioOnlyTestFileDuration, - base::TimeDelta()))) - .InSequence(s); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(s) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(1.0, position.playback_rate()); - EXPECT_EQ(kAudioOnlyTestFileDuration, position.duration()); - EXPECT_EQ(base::TimeDelta(), - position.GetPositionAtTime(position.last_updated_time())); - }); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange( - delegate_.player_id(), - media_session::MediaPosition(0.0, kAudioOnlyTestFileDuration, - base::TimeDelta()))) - .InSequence(s); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(s) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(2.0, position.playback_rate()); - EXPECT_EQ(kAudioOnlyTestFileDuration, position.duration()); - EXPECT_EQ(base::TimeDelta(), - position.GetPositionAtTime(position.last_updated_time())); - }); - - wmpi_->SetRate(1.0); - LoadAndWaitForReadyState(kAudioOnlyTestFile, - blink::WebMediaPlayer::kReadyStateHaveCurrentData); - - // Play will set the playback rate to 1.0. - Play(); - - // Pause will set the playback rate to 0.0. - Pause(); - - // SetRate will set the playback rate, but it will not affect the position - // state until we have started playing again. - wmpi_->SetRate(2.0); - Play(); + base::TimeDelta()))); + wmpi_->OnTimeUpdate(); } -TEST_F(WebMediaPlayerImplTest, MediaPositionState_Underflow) { +TEST_F(WebMediaPlayerImplTest, MediaPositionState_PositionChange) { InitializeWebMediaPlayerImpl(); - - testing::Sequence sequence; - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(sequence) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(0.0, position.playback_rate()); - }); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(sequence) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(1.0, position.playback_rate()); - }); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(sequence) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(0.0, position.playback_rate()); - }); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(sequence) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(1.0, position.playback_rate()); - }); - - wmpi_->SetRate(1.0); LoadAndWaitForReadyState(kAudioOnlyTestFile, - blink::WebMediaPlayer::kReadyStateHaveCurrentData); - // Play will set the playback rate to 1.0. + blink::WebMediaPlayer::kReadyStateHaveFutureData); + wmpi_->SetRate(0.5); Play(); - // Underflow will set the playback rate to 0.0. - SetReadyState(blink::WebMediaPlayer::kReadyStateHaveCurrentData); + testing::Sequence sequence; + EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( + delegate_.player_id(), + media_session::MediaPosition( + 0.0, kAudioOnlyTestFileDuration, + base::TimeDelta::FromSecondsD(0.1)))) + .InSequence(sequence); + wmpi_->Seek(0.1); + wmpi_->OnTimeUpdate(); - // Leaving the underflow state will restore the playback rate of 1.0. + // If we load enough data to resume playback the position should be updated. + EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( + delegate_.player_id(), + media_session::MediaPosition( + 0.5, kAudioOnlyTestFileDuration, + base::TimeDelta::FromSecondsD(0.1)))) + .InSequence(sequence); SetReadyState(blink::WebMediaPlayer::kReadyStateHaveFutureData); + wmpi_->OnTimeUpdate(); + + // No media time progress -> no MediaPositionState change. + wmpi_->OnTimeUpdate(); } -TEST_F(WebMediaPlayerImplTest, MediaPositionState_Seeking) { +TEST_F(WebMediaPlayerImplTest, MediaPositionState_Underflow) { InitializeWebMediaPlayerImpl(); + LoadAndWaitForReadyState(kAudioOnlyTestFile, + blink::WebMediaPlayer::kReadyStateHaveFutureData); + wmpi_->SetRate(1.0); + Play(); - testing::Sequence s; + // Underflow will set the effective playback rate to 0.0. EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( delegate_.player_id(), media_session::MediaPosition(0.0, kAudioOnlyTestFileDuration, - base::TimeDelta()))) - .InSequence(s); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(s) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(1.0, position.playback_rate()); - EXPECT_EQ(kAudioOnlyTestFileDuration, position.duration()); - EXPECT_EQ(base::TimeDelta(), - position.GetPositionAtTime(position.last_updated_time())); - }); - EXPECT_CALL(delegate_, - DidPlayerMediaPositionStateChange(delegate_.player_id(), _)) - .InSequence(s) - .WillOnce([](auto id, auto position) { - EXPECT_EQ(0.0, position.playback_rate()); - EXPECT_EQ(kAudioOnlyTestFileDuration, position.duration()); - EXPECT_EQ(base::TimeDelta(), - position.GetPositionAtTime(position.last_updated_time())); - }); - EXPECT_CALL(delegate_, DidPlayerMediaPositionStateChange( - delegate_.player_id(), - media_session::MediaPosition( - 0.0, kAudioOnlyTestFileDuration, - base::TimeDelta::FromMilliseconds(100)))) - .InSequence(s); - - wmpi_->SetRate(1.0); - LoadAndWaitForReadyState(kAudioOnlyTestFile, - blink::WebMediaPlayer::kReadyStateHaveCurrentData); - Play(); - - // Seek forward 100ms will result in the position to be updated. - wmpi_->Seek(0.1); - - // If we trigger another update to the position state the new position should - // be used. - Pause(); + base::TimeDelta()))); + SetReadyState(blink::WebMediaPlayer::kReadyStateHaveCurrentData); + wmpi_->OnTimeUpdate(); } TEST_F(WebMediaPlayerImplTest, NoStreams) { @@ -2194,7 +2113,8 @@ TEST_F(WebMediaPlayerImplTest, MemDumpReporting) { } // Verify that a demuxer override is used when specified. -TEST_F(WebMediaPlayerImplTest, DemuxerOverride) { +// TODO(https://crbug.com/1084476): This test is flaky. +TEST_F(WebMediaPlayerImplTest, DISABLED_DemuxerOverride) { std::unique_ptr<MockDemuxer> demuxer = std::make_unique<NiceMock<MockDemuxer>>(); StrictMock<MockDemuxerStream> stream(DemuxerStream::AUDIO); |