| 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_), PostCallback<1>(PIPELINE_OK))); |
| 176 PostCallback<1>(PIPELINE_OK))); | |
| 177 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); | 176 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); |
| 178 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); | 177 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); |
| 179 } | 178 } |
| 180 | 179 |
| 181 void AddTextStream() { | 180 void AddTextStream() { |
| 182 EXPECT_CALL(*this, OnAddTextTrack(_,_)) | 181 EXPECT_CALL(*this, OnAddTextTrack(_,_)) |
| 183 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); | 182 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); |
| 184 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), | 183 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), |
| 185 TextTrackConfig(kTextSubtitles, "", "", "")); | 184 TextTrackConfig(kTextSubtitles, "", "", "")); |
| 186 message_loop_.RunUntilIdle(); | 185 message_loop_.RunUntilIdle(); |
| 187 } | 186 } |
| 188 | 187 |
| 189 void StartPipeline() { | 188 void StartPipeline() { |
| 190 pipeline_->Start( | 189 pipeline_->Start( |
| 191 demuxer_.get(), scoped_renderer_.Pass(), | 190 demuxer_.get(), scoped_renderer_.Pass(), |
| 192 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), | 191 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), |
| 193 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), | 192 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), |
| 194 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), | 193 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), |
| 195 base::Bind(&CallbackHelper::OnMetadata, base::Unretained(&callbacks_)), | 194 base::Bind(&CallbackHelper::OnMetadata, base::Unretained(&callbacks_)), |
| 196 base::Bind(&CallbackHelper::OnBufferingStateChange, | 195 base::Bind(&CallbackHelper::OnBufferingStateChange, |
| 197 base::Unretained(&callbacks_)), | 196 base::Unretained(&callbacks_)), |
| 198 base::Bind(&CallbackHelper::OnVideoFramePaint, | 197 base::Bind(&CallbackHelper::OnVideoFramePaint, |
| 199 base::Unretained(&callbacks_)), | 198 base::Unretained(&callbacks_)), |
| 200 base::Bind(&CallbackHelper::OnDurationChange, | 199 base::Bind(&CallbackHelper::OnDurationChange, |
| 201 base::Unretained(&callbacks_)), | 200 base::Unretained(&callbacks_)), |
| 202 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this))); | 201 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this)), |
| 202 base::Bind(&base::DoNothing)); |
| 203 } | 203 } |
| 204 | 204 |
| 205 // Sets up expectations on the callback and initializes the pipeline. Called | 205 // Sets up expectations on the callback and initializes the pipeline. Called |
| 206 // after tests have set expectations any filters they wish to use. | 206 // after tests have set expectations any filters they wish to use. |
| 207 void StartPipelineAndExpect(PipelineStatus start_status) { | 207 void StartPipelineAndExpect(PipelineStatus start_status) { |
| 208 EXPECT_CALL(callbacks_, OnStart(start_status)); | 208 EXPECT_CALL(callbacks_, OnStart(start_status)); |
| 209 | 209 |
| 210 if (start_status == PIPELINE_OK) { | 210 if (start_status == PIPELINE_OK) { |
| 211 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); | 211 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); |
| 212 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 212 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); |
| (...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 850 MockDemuxerStreamVector streams; | 850 MockDemuxerStreamVector streams; |
| 851 streams.push_back(audio_stream()); | 851 streams.push_back(audio_stream()); |
| 852 streams.push_back(video_stream()); | 852 streams.push_back(video_stream()); |
| 853 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); | 853 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); |
| 854 | 854 |
| 855 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(true)); | 855 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(true)); |
| 856 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(true)); | 856 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(true)); |
| 857 | 857 |
| 858 if (state == kInitRenderer) { | 858 if (state == kInitRenderer) { |
| 859 if (stop_or_error == kStop) { | 859 if (stop_or_error == kStop) { |
| 860 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 860 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
| 861 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 861 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
| 862 PostCallback<1>(PIPELINE_OK))); | 862 PostCallback<1>(PIPELINE_OK))); |
| 863 ExpectPipelineStopAndDestroyPipeline(); | 863 ExpectPipelineStopAndDestroyPipeline(); |
| 864 } else { | 864 } else { |
| 865 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 865 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
| 866 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 866 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
| 867 .WillOnce(PostCallback<1>(status)); | 867 .WillOnce(PostCallback<1>(status)); |
| 868 } | 868 } |
| 869 | 869 |
| 870 EXPECT_CALL(*demuxer_, Stop()); | 870 EXPECT_CALL(*demuxer_, Stop()); |
| 871 EXPECT_CALL(callbacks_, OnMetadata(_)); | 871 EXPECT_CALL(callbacks_, OnMetadata(_)); |
| 872 return status; | 872 return status; |
| 873 } | 873 } |
| 874 | 874 |
| 875 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 875 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
| 876 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 876 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
| 877 PostCallback<1>(PIPELINE_OK))); | 877 PostCallback<1>(PIPELINE_OK))); |
| 878 | 878 |
| 879 EXPECT_CALL(callbacks_, OnMetadata(_)); | 879 EXPECT_CALL(callbacks_, OnMetadata(_)); |
| 880 | 880 |
| 881 // If we get here it's a successful initialization. | 881 // If we get here it's a successful initialization. |
| 882 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 882 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); |
| 883 EXPECT_CALL(*renderer_, SetVolume(1.0f)); | 883 EXPECT_CALL(*renderer_, SetVolume(1.0f)); |
| 884 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) | 884 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) |
| 885 .WillOnce(SetBufferingState(&buffering_state_cb_, | 885 .WillOnce(SetBufferingState(&buffering_state_cb_, |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1004 | 1004 |
| 1005 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | 1005 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); |
| 1006 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); | 1006 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); |
| 1007 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1007 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
| 1008 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1008 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
| 1009 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1009 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
| 1010 | 1010 |
| 1011 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1011 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
| 1012 | 1012 |
| 1013 } // namespace media | 1013 } // namespace media |
| OLD | NEW |