summaryrefslogtreecommitdiff
path: root/chromium/media/blink/webmediaplayer_impl_unittest.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/media/blink/webmediaplayer_impl_unittest.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-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.cc188
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);