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