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...) 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...) 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...) 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...) 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...) 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 |