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(); |
} |