| Index: media/formats/webm/webm_stream_parser_unittest.cc
|
| diff --git a/media/formats/webm/webm_stream_parser_unittest.cc b/media/formats/webm/webm_stream_parser_unittest.cc
|
| index 0386e8fb06125cc368a1664c3764bba8c4548d19..813d9e70e824e7b3498ce44983343c0f8025c12d 100644
|
| --- a/media/formats/webm/webm_stream_parser_unittest.cc
|
| +++ b/media/formats/webm/webm_stream_parser_unittest.cc
|
| @@ -6,11 +6,13 @@
|
| #include "media/base/decoder_buffer.h"
|
| #include "media/base/media_tracks.h"
|
| #include "media/base/mock_media_log.h"
|
| +#include "media/base/stream_parser.h"
|
| #include "media/base/test_data_util.h"
|
| #include "media/base/text_track_config.h"
|
| #include "media/formats/webm/webm_stream_parser.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +using testing::SaveArg;
|
| using testing::_;
|
|
|
| namespace media {
|
| @@ -21,7 +23,8 @@ class WebMStreamParserTest : public testing::Test {
|
| : media_log_(new testing::StrictMock<MockMediaLog>()) {}
|
|
|
| protected:
|
| - void ParseWebMFile(const std::string& filename) {
|
| + void ParseWebMFile(const std::string& filename,
|
| + const StreamParser::InitParameters& expected_params) {
|
| scoped_refptr<DecoderBuffer> buffer = ReadTestDataFile(filename);
|
| parser_.reset(new WebMStreamParser());
|
| Demuxer::EncryptedMediaInitDataCB encrypted_media_init_data_cb =
|
| @@ -35,10 +38,11 @@ class WebMStreamParserTest : public testing::Test {
|
| .Times(testing::AnyNumber())
|
| .WillRepeatedly(testing::Return(true));
|
| parser_->Init(
|
| - base::Bind(&WebMStreamParserTest::InitCB, base::Unretained(this)),
|
| + base::Bind(&WebMStreamParserTest::InitF, base::Unretained(this),
|
| + expected_params),
|
| base::Bind(&WebMStreamParserTest::NewConfigCB, base::Unretained(this)),
|
| base::Bind(&WebMStreamParserTest::NewBuffersCB, base::Unretained(this)),
|
| - true, // ignore_text_track
|
| + false, // don't ignore_text_track
|
| encrypted_media_init_data_cb,
|
| base::Bind(&WebMStreamParserTest::NewMediaSegmentCB,
|
| base::Unretained(this)),
|
| @@ -49,6 +53,19 @@ class WebMStreamParserTest : public testing::Test {
|
| EXPECT_TRUE(result);
|
| }
|
|
|
| + // Verifies only the detected track counts by track type, then chains to the
|
| + // InitCB mock.
|
| + void InitF(const StreamParser::InitParameters& expected_params,
|
| + const StreamParser::InitParameters& params) {
|
| + EXPECT_EQ(expected_params.detected_audio_track_count,
|
| + params.detected_audio_track_count);
|
| + EXPECT_EQ(expected_params.detected_video_track_count,
|
| + params.detected_video_track_count);
|
| + EXPECT_EQ(expected_params.detected_text_track_count,
|
| + params.detected_text_track_count);
|
| + InitCB(params);
|
| + }
|
| +
|
| MOCK_METHOD1(InitCB, void(const StreamParser::InitParameters& params));
|
|
|
| bool NewConfigCB(scoped_ptr<MediaTracks> tracks,
|
| @@ -76,7 +93,11 @@ class WebMStreamParserTest : public testing::Test {
|
| TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) {
|
| EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
|
| .Times(testing::AnyNumber());
|
| - ParseWebMFile("bear.webm");
|
| + StreamParser::InitParameters params(kInfiniteDuration());
|
| + params.detected_audio_track_count = 1;
|
| + params.detected_video_track_count = 1;
|
| + params.detected_text_track_count = 0;
|
| + ParseWebMFile("bear.webm", params);
|
| EXPECT_NE(media_tracks_.get(), nullptr);
|
|
|
| EXPECT_EQ(media_tracks_->tracks().size(), 2u);
|
| @@ -96,4 +117,39 @@ TEST_F(WebMStreamParserTest, VerifyMediaTrackMetadata) {
|
| EXPECT_EQ(audio_track.language(), "und");
|
| }
|
|
|
| +TEST_F(WebMStreamParserTest, VerifyDetectedTrack_AudioOnly) {
|
| + EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
|
| + .Times(testing::AnyNumber());
|
| + StreamParser::InitParameters params(kInfiniteDuration());
|
| + params.detected_audio_track_count = 1;
|
| + params.detected_video_track_count = 0;
|
| + params.detected_text_track_count = 0;
|
| + ParseWebMFile("bear-320x240-audio-only.webm", params);
|
| + EXPECT_EQ(media_tracks_->tracks().size(), 1u);
|
| + EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Audio);
|
| +}
|
| +
|
| +TEST_F(WebMStreamParserTest, VerifyDetectedTrack_VideoOnly) {
|
| + StreamParser::InitParameters params(kInfiniteDuration());
|
| + params.detected_audio_track_count = 0;
|
| + params.detected_video_track_count = 1;
|
| + params.detected_text_track_count = 0;
|
| + ParseWebMFile("bear-320x240-video-only.webm", params);
|
| + EXPECT_EQ(media_tracks_->tracks().size(), 1u);
|
| + EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Video);
|
| +}
|
| +
|
| +TEST_F(WebMStreamParserTest, VerifyDetectedTracks_AVText) {
|
| + EXPECT_MEDIA_LOG(testing::HasSubstr("Estimating WebM block duration"))
|
| + .Times(testing::AnyNumber());
|
| + StreamParser::InitParameters params(kInfiniteDuration());
|
| + params.detected_audio_track_count = 1;
|
| + params.detected_video_track_count = 1;
|
| + params.detected_text_track_count = 1;
|
| + ParseWebMFile("bear-vp8-webvtt.webm", params);
|
| + EXPECT_EQ(media_tracks_->tracks().size(), 2u);
|
| + EXPECT_EQ(media_tracks_->tracks()[0]->type(), MediaTrack::Video);
|
| + EXPECT_EQ(media_tracks_->tracks()[1]->type(), MediaTrack::Audio);
|
| +}
|
| +
|
| } // namespace media
|
|
|