Chromium Code Reviews| Index: media/filters/pipeline_integration_test.cc |
| diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc |
| index dddc0652473c23e6adb0af94de4d8786a8ea6f47..078d7f007fe028d87895aa8ba779fbb8567f1fdd 100644 |
| --- a/media/filters/pipeline_integration_test.cc |
| +++ b/media/filters/pipeline_integration_test.cc |
| @@ -32,6 +32,8 @@ static const uint8 kSecretKey[] = { |
| static const int kAppendWholeFile = -1; |
| +// Note: Tests using this class only exercise the DecryptingDemuxerStream path. |
| +// They do not exercise the Decrypting{Audio|Video}Decoder path. |
|
acolwell GONE FROM CHROMIUM
2013/01/07 21:17:50
nit: Add a TODO for exercising the decrypting deco
ddorwin
2013/01/07 22:19:29
shadi@ is working on browser tests that will do th
|
| class FakeEncryptedMedia { |
| public: |
| FakeEncryptedMedia() |
| @@ -309,11 +311,10 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource) { |
| MockMediaSource source("bear-320x240.webm", kWebM, 219229); |
| StartPipelineWithMediaSource(&source); |
| source.EndOfStream(); |
| - ASSERT_EQ(pipeline_status_, PIPELINE_OK); |
|
ddorwin
2013/01/07 18:54:39
This check was meaningless since any error would p
|
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().size(), 1u); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds(), 0); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds(), 2737); |
| + EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| + EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| + EXPECT_EQ(2737, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| Play(); |
| @@ -334,19 +335,104 @@ TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { |
| second_file->GetData(), second_file->GetDataSize()); |
| source.EndOfStream(); |
| - ASSERT_EQ(pipeline_status_, PIPELINE_OK); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().size(), 1u); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds(), 0); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds(), 4763); |
| + EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| + EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| + EXPECT_EQ(4763, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| Play(); |
| - ASSERT_TRUE(WaitUntilOnEnded()); |
| + EXPECT_TRUE(WaitUntilOnEnded()); |
| source.Abort(); |
| Stop(); |
| } |
| +TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_Encrypted_WebM) { |
| + MockMediaSource source("bear-320x240-16x9-aspect-av-enc_av.webm", kWebM, |
| + kAppendWholeFile); |
| + FakeEncryptedMedia encrypted_media; |
| + StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| + |
| + scoped_refptr<DecoderBuffer> second_file = |
| + ReadTestDataFile("bear-640x360-av-enc_av.webm"); |
| + |
| + source.AppendAtTime(base::TimeDelta::FromSeconds(2), |
| + second_file->GetData(), second_file->GetDataSize()); |
| + |
| + source.EndOfStream(); |
| + |
| + EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| + EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| + EXPECT_EQ(4763, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| + |
| + Play(); |
| + |
| + EXPECT_TRUE(WaitUntilOnEnded()); |
| + source.Abort(); |
| + Stop(); |
| +} |
| + |
| +// Config changes from encrypted to clear are not currently supported. |
| +TEST_F(PipelineIntegrationTest, |
| + MediaSource_ConfigChange_EncryptedThenClear_WebM) { |
|
acolwell GONE FROM CHROMIUM
2013/01/07 21:17:50
nit: Isn't this testing "clear then encrypted" and
ddorwin
2013/01/07 22:19:29
Done. Copy-paste-edit mistake. Thanks.
|
| + const int k320FileDuration = 2737; |
| + MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
| + kAppendWholeFile); |
| + FakeEncryptedMedia encrypted_media; |
| + StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| + |
| + scoped_refptr<DecoderBuffer> second_file = |
| + ReadTestDataFile("bear-640x360-av-enc_av.webm"); |
| + |
| + source.AppendAtTime(base::TimeDelta::FromSeconds(2), |
| + second_file->GetData(), second_file->GetDataSize()); |
| + |
| + source.EndOfStream(); |
| + |
| + message_loop_.Run(); |
| + EXPECT_EQ(PIPELINE_ERROR_DECODE, pipeline_status_); |
| + |
| + EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| + EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| + // The second video was not added, so its time has not been added. |
| + EXPECT_EQ(k320FileDuration, |
| + pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| + |
| + Play(); |
| + |
| + EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
| + source.Abort(); |
| +} |
| + |
| +// Config changes from clear to encrypted are not currently supported. |
| +TEST_F(PipelineIntegrationTest, |
| + MediaSource_ConfigChange_ClearThenEncrypted_WebM) { |
|
acolwell GONE FROM CHROMIUM
2013/01/07 21:17:50
ditto. Isn't this name backwards?
ddorwin
2013/01/07 22:19:29
Done.
|
| + const int k320FileDuration = 2737; |
| + MockMediaSource source("bear-320x240-16x9-aspect-av-enc_av.webm", kWebM, |
| + kAppendWholeFile); |
| + FakeEncryptedMedia encrypted_media; |
| + StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| + |
| + scoped_refptr<DecoderBuffer> second_file = |
| + ReadTestDataFile("bear-640x360.webm"); |
| + |
| + source.AppendAtTime(base::TimeDelta::FromSeconds(2), |
| + second_file->GetData(), second_file->GetDataSize()); |
| + |
| + source.EndOfStream(); |
| + |
| + EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| + EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| + // The second video was not added, so its time has not been added. |
| + EXPECT_EQ(k320FileDuration, |
| + pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| + |
| + Play(); |
| + |
| + EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); |
| + source.Abort(); |
| +} |
| + |
| #if defined(GOOGLE_CHROME_BUILD) || defined(USE_PROPRIETARY_CODECS) |
| TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { |
| MockMediaSource source("bear.640x360_dash.mp4", kMP4, kAppendWholeFile); |
| @@ -359,15 +445,14 @@ TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { |
| second_file->GetData(), second_file->GetDataSize()); |
| source.EndOfStream(); |
| - ASSERT_EQ(pipeline_status_, PIPELINE_OK); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().size(), 1u); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds(), 0); |
| - EXPECT_EQ(pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds(), 4736); |
| + EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| + EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| + EXPECT_EQ(4736, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| Play(); |
| - ASSERT_TRUE(WaitUntilOnEnded()); |
| + EXPECT_TRUE(WaitUntilOnEnded()); |
| source.Abort(); |
| Stop(); |
| } |