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