Index: media/renderers/renderer_impl_unittest.cc |
diff --git a/media/renderers/renderer_impl_unittest.cc b/media/renderers/renderer_impl_unittest.cc |
index 1dacbcc5ea85b58ca9787744e054bb3625508687..75fc0500dd18b820639cc9b05151c03fe5138af7 100644 |
--- a/media/renderers/renderer_impl_unittest.cc |
+++ b/media/renderers/renderer_impl_unittest.cc |
@@ -320,6 +320,41 @@ TEST_F(RendererImplTest, StartPlayingFrom) { |
Play(); |
} |
+TEST_F(RendererImplTest, StartPlayingFromWithPlaybackRate) { |
+ InitializeWithAudioAndVideo(); |
+ |
+ // Play with a zero playback rate shouldn't start time. |
+ Play(); |
+ Mock::VerifyAndClearExpectations(video_renderer_); |
+ |
+ // Positive playback rate when ticking should start time. |
+ EXPECT_CALL(*video_renderer_, OnTimeStateChanged(true)); |
+ SetPlaybackRate(1.0); |
+ Mock::VerifyAndClearExpectations(video_renderer_); |
+ |
+ // Double notifications shouldn't be sent. |
+ SetPlaybackRate(1.0); |
+ Mock::VerifyAndClearExpectations(video_renderer_); |
+ |
+ // Zero playback rate should stop time. |
+ EXPECT_CALL(*video_renderer_, OnTimeStateChanged(false)); |
+ SetPlaybackRate(0.0); |
+ Mock::VerifyAndClearExpectations(video_renderer_); |
+ |
+ // Double notifications shouldn't be sent. |
+ SetPlaybackRate(0.0); |
+ Mock::VerifyAndClearExpectations(video_renderer_); |
+ |
+ // Starting playback and flushing should cause time to stop. |
+ EXPECT_CALL(*video_renderer_, OnTimeStateChanged(true)); |
+ EXPECT_CALL(*video_renderer_, OnTimeStateChanged(false)); |
+ SetPlaybackRate(1.0); |
+ Flush(false); |
+ |
+ // A positive playback rate when playback isn't started should do nothing. |
+ SetPlaybackRate(1.0); |
+} |
+ |
TEST_F(RendererImplTest, FlushAfterInitialization) { |
InitializeWithAudioAndVideo(); |
Flush(true); |