| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/test/simple_test_clock.h" | 10 #include "base/test/simple_test_clock.h" |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 // initialization is moved to a separate thread this test will become flaky. | 80 // initialization is moved to a separate thread this test will become flaky. |
| 81 class PipelineTest : public ::testing::Test { | 81 class PipelineTest : public ::testing::Test { |
| 82 public: | 82 public: |
| 83 PipelineTest() | 83 PipelineTest() |
| 84 : pipeline_(new Pipeline(message_loop_.message_loop_proxy(), | 84 : pipeline_(new Pipeline(message_loop_.message_loop_proxy(), |
| 85 new MediaLog())), | 85 new MediaLog())), |
| 86 filter_collection_(new FilterCollection()) { | 86 filter_collection_(new FilterCollection()) { |
| 87 demuxer_ = new MockDemuxer(); | 87 demuxer_ = new MockDemuxer(); |
| 88 filter_collection_->SetDemuxer(demuxer_); | 88 filter_collection_->SetDemuxer(demuxer_); |
| 89 | 89 |
| 90 video_decoder_ = new MockVideoDecoder(); | |
| 91 filter_collection_->GetVideoDecoders()->push_back(video_decoder_); | |
| 92 | |
| 93 video_renderer_ = new MockVideoRenderer(); | 90 video_renderer_ = new MockVideoRenderer(); |
| 94 scoped_ptr<VideoRenderer> video_renderer(video_renderer_); | 91 scoped_ptr<VideoRenderer> video_renderer(video_renderer_); |
| 95 filter_collection_->SetVideoRenderer(video_renderer.Pass()); | 92 filter_collection_->SetVideoRenderer(video_renderer.Pass()); |
| 96 | 93 |
| 97 audio_renderer_ = new MockAudioRenderer(); | 94 audio_renderer_ = new MockAudioRenderer(); |
| 98 scoped_ptr<AudioRenderer> audio_renderer(audio_renderer_); | 95 scoped_ptr<AudioRenderer> audio_renderer(audio_renderer_); |
| 99 filter_collection_->SetAudioRenderer(audio_renderer.Pass()); | 96 filter_collection_->SetAudioRenderer(audio_renderer.Pass()); |
| 100 | 97 |
| 101 // InitializeDemuxer() adds overriding expectations for expected non-NULL | 98 // InitializeDemuxer() adds overriding expectations for expected non-NULL |
| 102 // streams. | 99 // streams. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 StrictMock<MockDemuxerStream>* CreateStream(DemuxerStream::Type type) { | 156 StrictMock<MockDemuxerStream>* CreateStream(DemuxerStream::Type type) { |
| 160 StrictMock<MockDemuxerStream>* stream = | 157 StrictMock<MockDemuxerStream>* stream = |
| 161 new StrictMock<MockDemuxerStream>(); | 158 new StrictMock<MockDemuxerStream>(); |
| 162 EXPECT_CALL(*stream, type()) | 159 EXPECT_CALL(*stream, type()) |
| 163 .WillRepeatedly(Return(type)); | 160 .WillRepeatedly(Return(type)); |
| 164 return stream; | 161 return stream; |
| 165 } | 162 } |
| 166 | 163 |
| 167 // Sets up expectations to allow the video renderer to initialize. | 164 // Sets up expectations to allow the video renderer to initialize. |
| 168 void InitializeVideoRenderer(const scoped_refptr<DemuxerStream>& stream) { | 165 void InitializeVideoRenderer(const scoped_refptr<DemuxerStream>& stream) { |
| 169 EXPECT_CALL(*video_renderer_, | 166 EXPECT_CALL(*video_renderer_, Initialize(stream, _, _, _, _, _, _, _, _)) |
| 170 Initialize(stream, _, _, _, _, _, _, _, _, _)) | 167 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 171 .WillOnce(RunCallback<2>(PIPELINE_OK)); | |
| 172 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); | 168 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); |
| 173 | 169 |
| 174 // Startup sequence. | 170 // Startup sequence. |
| 175 EXPECT_CALL(*video_renderer_, | 171 EXPECT_CALL(*video_renderer_, Preroll(demuxer_->GetStartTime(), _)) |
| 176 Preroll(demuxer_->GetStartTime(), _)) | |
| 177 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 172 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 178 EXPECT_CALL(*video_renderer_, Play(_)) | 173 EXPECT_CALL(*video_renderer_, Play(_)) |
| 179 .WillOnce(RunClosure<0>()); | 174 .WillOnce(RunClosure<0>()); |
| 180 } | 175 } |
| 181 | 176 |
| 182 // Sets up expectations to allow the audio renderer to initialize. | 177 // Sets up expectations to allow the audio renderer to initialize. |
| 183 void InitializeAudioRenderer(const scoped_refptr<DemuxerStream>& stream, | 178 void InitializeAudioRenderer(const scoped_refptr<DemuxerStream>& stream, |
| 184 bool disable_after_init_cb) { | 179 bool disable_after_init_cb) { |
| 185 if (disable_after_init_cb) { | 180 if (disable_after_init_cb) { |
| 186 EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _, _)) | 181 EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _, _)) |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 } | 289 } |
| 295 | 290 |
| 296 // Fixture members. | 291 // Fixture members. |
| 297 StrictMock<CallbackHelper> callbacks_; | 292 StrictMock<CallbackHelper> callbacks_; |
| 298 base::SimpleTestClock test_clock_; | 293 base::SimpleTestClock test_clock_; |
| 299 MessageLoop message_loop_; | 294 MessageLoop message_loop_; |
| 300 scoped_refptr<Pipeline> pipeline_; | 295 scoped_refptr<Pipeline> pipeline_; |
| 301 | 296 |
| 302 scoped_ptr<FilterCollection> filter_collection_; | 297 scoped_ptr<FilterCollection> filter_collection_; |
| 303 scoped_refptr<MockDemuxer> demuxer_; | 298 scoped_refptr<MockDemuxer> demuxer_; |
| 304 scoped_refptr<MockVideoDecoder> video_decoder_; | |
| 305 MockVideoRenderer* video_renderer_; | 299 MockVideoRenderer* video_renderer_; |
| 306 MockAudioRenderer* audio_renderer_; | 300 MockAudioRenderer* audio_renderer_; |
| 307 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream_; | 301 scoped_refptr<StrictMock<MockDemuxerStream> > audio_stream_; |
| 308 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream_; | 302 scoped_refptr<StrictMock<MockDemuxerStream> > video_stream_; |
| 309 AudioRenderer::TimeCB audio_time_cb_; | 303 AudioRenderer::TimeCB audio_time_cb_; |
| 310 VideoDecoderConfig video_decoder_config_; | 304 VideoDecoderConfig video_decoder_config_; |
| 311 | 305 |
| 312 private: | 306 private: |
| 313 DISALLOW_COPY_AND_ASSIGN(PipelineTest); | 307 DISALLOW_COPY_AND_ASSIGN(PipelineTest); |
| 314 }; | 308 }; |
| (...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1009 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 1003 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
| 1010 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 1004 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
| 1011 return status; | 1005 return status; |
| 1012 } | 1006 } |
| 1013 | 1007 |
| 1014 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _)) | 1008 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _)) |
| 1015 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1009 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 1016 | 1010 |
| 1017 if (state == kInitVideoRenderer) { | 1011 if (state == kInitVideoRenderer) { |
| 1018 if (stop_or_error == kStop) { | 1012 if (stop_or_error == kStop) { |
| 1019 EXPECT_CALL(*video_renderer_, | 1013 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) |
| 1020 Initialize(_, _, _, _, _, _, _, _, _, _)) | |
| 1021 .WillOnce(DoAll(Stop(pipeline_, stop_cb), | 1014 .WillOnce(DoAll(Stop(pipeline_, stop_cb), |
| 1022 RunCallback<2>(PIPELINE_OK))); | 1015 RunCallback<1>(PIPELINE_OK))); |
| 1023 EXPECT_CALL(callbacks_, OnStop()); | 1016 EXPECT_CALL(callbacks_, OnStop()); |
| 1024 } else { | 1017 } else { |
| 1025 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 1018 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
| 1026 EXPECT_CALL(*video_renderer_, | 1019 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) |
| 1027 Initialize(_, _, _, _, _, _, _, _, _, _)) | 1020 .WillOnce(RunCallback<1>(status)); |
| 1028 .WillOnce(RunCallback<2>(status)); | |
| 1029 } | 1021 } |
| 1030 | 1022 |
| 1031 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 1023 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
| 1032 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 1024 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
| 1033 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 1025 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
| 1034 return status; | 1026 return status; |
| 1035 } | 1027 } |
| 1036 | 1028 |
| 1037 EXPECT_CALL(*video_renderer_, | 1029 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) |
| 1038 Initialize(_, _, _, _, _, _, _, _, _, _)) | 1030 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 1039 .WillOnce(RunCallback<2>(PIPELINE_OK)); | |
| 1040 | 1031 |
| 1041 EXPECT_CALL(callbacks_, OnBufferingState(Pipeline::kHaveMetadata)); | 1032 EXPECT_CALL(callbacks_, OnBufferingState(Pipeline::kHaveMetadata)); |
| 1042 | 1033 |
| 1043 // If we get here it's a successful initialization. | 1034 // If we get here it's a successful initialization. |
| 1044 EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) | 1035 EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) |
| 1045 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1036 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 1046 EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _)) | 1037 EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _)) |
| 1047 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1038 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 1048 | 1039 |
| 1049 EXPECT_CALL(*demuxer_, SetPlaybackRate(0.0f)); | 1040 EXPECT_CALL(*demuxer_, SetPlaybackRate(0.0f)); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1217 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); | 1208 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); |
| 1218 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); | 1209 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); |
| 1219 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); | 1210 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); |
| 1220 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1211 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
| 1221 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1212 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
| 1222 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); | 1213 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); |
| 1223 INSTANTIATE_TEARDOWN_TEST(Error, Starting); | 1214 INSTANTIATE_TEARDOWN_TEST(Error, Starting); |
| 1224 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1215 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
| 1225 | 1216 |
| 1226 } // namespace media | 1217 } // namespace media |
| OLD | NEW |