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/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 | 163 |
164 scoped_ptr<StrictMock<MockDemuxerStream> > CreateStream( | 164 scoped_ptr<StrictMock<MockDemuxerStream> > CreateStream( |
165 DemuxerStream::Type type) { | 165 DemuxerStream::Type type) { |
166 scoped_ptr<StrictMock<MockDemuxerStream> > stream( | 166 scoped_ptr<StrictMock<MockDemuxerStream> > stream( |
167 new StrictMock<MockDemuxerStream>(type)); | 167 new StrictMock<MockDemuxerStream>(type)); |
168 return stream.Pass(); | 168 return stream.Pass(); |
169 } | 169 } |
170 | 170 |
171 // Sets up expectations to allow the video renderer to initialize. | 171 // Sets up expectations to allow the video renderer to initialize. |
172 void SetRendererExpectations() { | 172 void SetRendererExpectations() { |
173 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 173 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
174 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 174 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
175 SaveArg<5>(&ended_cb_), | 175 SaveArg<5>(&ended_cb_), |
176 PostCallback<1>(PIPELINE_OK))); | 176 PostCallback<1>(PIPELINE_OK))); |
177 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); | 177 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); |
178 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); | 178 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); |
179 } | 179 } |
180 | 180 |
181 void AddTextStream() { | 181 void AddTextStream() { |
182 EXPECT_CALL(*this, OnAddTextTrack(_,_)) | 182 EXPECT_CALL(*this, OnAddTextTrack(_,_)) |
183 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); | 183 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); |
184 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), | 184 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), |
185 TextTrackConfig(kTextSubtitles, "", "", "")); | 185 TextTrackConfig(kTextSubtitles, "", "", "")); |
186 message_loop_.RunUntilIdle(); | 186 message_loop_.RunUntilIdle(); |
187 } | 187 } |
188 | 188 |
189 void StartPipeline() { | 189 void StartPipeline() { |
| 190 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
190 pipeline_->Start( | 191 pipeline_->Start( |
191 demuxer_.get(), scoped_renderer_.Pass(), | 192 demuxer_.get(), scoped_renderer_.Pass(), |
192 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), | 193 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), |
193 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), | 194 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), |
194 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), | 195 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), |
195 base::Bind(&CallbackHelper::OnMetadata, base::Unretained(&callbacks_)), | 196 base::Bind(&CallbackHelper::OnMetadata, base::Unretained(&callbacks_)), |
196 base::Bind(&CallbackHelper::OnBufferingStateChange, | 197 base::Bind(&CallbackHelper::OnBufferingStateChange, |
197 base::Unretained(&callbacks_)), | 198 base::Unretained(&callbacks_)), |
198 base::Bind(&CallbackHelper::OnVideoFramePaint, | 199 base::Bind(&CallbackHelper::OnVideoFramePaint, |
199 base::Unretained(&callbacks_)), | 200 base::Unretained(&callbacks_)), |
200 base::Bind(&CallbackHelper::OnDurationChange, | 201 base::Bind(&CallbackHelper::OnDurationChange, |
201 base::Unretained(&callbacks_)), | 202 base::Unretained(&callbacks_)), |
202 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this))); | 203 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this)), |
| 204 base::Bind(&PipelineTest::OnWaitingForDecryptionKey, |
| 205 base::Unretained(this))); |
203 } | 206 } |
204 | 207 |
205 // Sets up expectations on the callback and initializes the pipeline. Called | 208 // Sets up expectations on the callback and initializes the pipeline. Called |
206 // after tests have set expectations any filters they wish to use. | 209 // after tests have set expectations any filters they wish to use. |
207 void StartPipelineAndExpect(PipelineStatus start_status) { | 210 void StartPipelineAndExpect(PipelineStatus start_status) { |
208 EXPECT_CALL(callbacks_, OnStart(start_status)); | 211 EXPECT_CALL(callbacks_, OnStart(start_status)); |
209 | 212 |
210 if (start_status == PIPELINE_OK) { | 213 if (start_status == PIPELINE_OK) { |
211 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); | 214 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); |
212 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 215 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 | 292 |
290 void ExpectPipelineStopAndDestroyPipeline() { | 293 void ExpectPipelineStopAndDestroyPipeline() { |
291 // After the Pipeline is stopped, it could be destroyed any time. Always | 294 // After the Pipeline is stopped, it could be destroyed any time. Always |
292 // destroy the pipeline immediately after OnStop() to test this. | 295 // destroy the pipeline immediately after OnStop() to test this. |
293 EXPECT_CALL(callbacks_, OnStop()) | 296 EXPECT_CALL(callbacks_, OnStop()) |
294 .WillOnce(Invoke(this, &PipelineTest::DestroyPipeline)); | 297 .WillOnce(Invoke(this, &PipelineTest::DestroyPipeline)); |
295 } | 298 } |
296 | 299 |
297 MOCK_METHOD2(OnAddTextTrack, void(const TextTrackConfig&, | 300 MOCK_METHOD2(OnAddTextTrack, void(const TextTrackConfig&, |
298 const AddTextTrackDoneCB&)); | 301 const AddTextTrackDoneCB&)); |
| 302 MOCK_METHOD0(OnWaitingForDecryptionKey, void(void)); |
299 | 303 |
300 void DoOnAddTextTrack(const TextTrackConfig& config, | 304 void DoOnAddTextTrack(const TextTrackConfig& config, |
301 const AddTextTrackDoneCB& done_cb) { | 305 const AddTextTrackDoneCB& done_cb) { |
302 scoped_ptr<TextTrack> text_track(new MockTextTrack); | 306 scoped_ptr<TextTrack> text_track(new MockTextTrack); |
303 done_cb.Run(text_track.Pass()); | 307 done_cb.Run(text_track.Pass()); |
304 } | 308 } |
305 | 309 |
306 // Fixture members. | 310 // Fixture members. |
307 StrictMock<CallbackHelper> callbacks_; | 311 StrictMock<CallbackHelper> callbacks_; |
308 base::SimpleTestTickClock test_tick_clock_; | 312 base::SimpleTestTickClock test_tick_clock_; |
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 MockDemuxerStreamVector streams; | 854 MockDemuxerStreamVector streams; |
851 streams.push_back(audio_stream()); | 855 streams.push_back(audio_stream()); |
852 streams.push_back(video_stream()); | 856 streams.push_back(video_stream()); |
853 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); | 857 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); |
854 | 858 |
855 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(true)); | 859 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(true)); |
856 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(true)); | 860 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(true)); |
857 | 861 |
858 if (state == kInitRenderer) { | 862 if (state == kInitRenderer) { |
859 if (stop_or_error == kStop) { | 863 if (stop_or_error == kStop) { |
860 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 864 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
861 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 865 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
862 PostCallback<1>(PIPELINE_OK))); | 866 PostCallback<1>(PIPELINE_OK))); |
863 ExpectPipelineStopAndDestroyPipeline(); | 867 ExpectPipelineStopAndDestroyPipeline(); |
864 } else { | 868 } else { |
865 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 869 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
866 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 870 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
867 .WillOnce(PostCallback<1>(status)); | 871 .WillOnce(PostCallback<1>(status)); |
868 } | 872 } |
869 | 873 |
870 EXPECT_CALL(*demuxer_, Stop()); | 874 EXPECT_CALL(*demuxer_, Stop()); |
871 EXPECT_CALL(callbacks_, OnMetadata(_)); | 875 EXPECT_CALL(callbacks_, OnMetadata(_)); |
872 return status; | 876 return status; |
873 } | 877 } |
874 | 878 |
875 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 879 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
876 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 880 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
877 PostCallback<1>(PIPELINE_OK))); | 881 PostCallback<1>(PIPELINE_OK))); |
878 | 882 |
879 EXPECT_CALL(callbacks_, OnMetadata(_)); | 883 EXPECT_CALL(callbacks_, OnMetadata(_)); |
880 | 884 |
881 // If we get here it's a successful initialization. | 885 // If we get here it's a successful initialization. |
882 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 886 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); |
883 EXPECT_CALL(*renderer_, SetVolume(1.0f)); | 887 EXPECT_CALL(*renderer_, SetVolume(1.0f)); |
884 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) | 888 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) |
885 .WillOnce(SetBufferingState(&buffering_state_cb_, | 889 .WillOnce(SetBufferingState(&buffering_state_cb_, |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1004 | 1008 |
1005 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | 1009 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); |
1006 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); | 1010 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); |
1007 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1011 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
1008 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1012 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1009 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1013 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1010 | 1014 |
1011 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1015 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
1012 | 1016 |
1013 } // namespace media | 1017 } // namespace media |
OLD | NEW |