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 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 CallbackHelper() {} | 77 CallbackHelper() {} |
78 virtual ~CallbackHelper() {} | 78 virtual ~CallbackHelper() {} |
79 | 79 |
80 MOCK_METHOD1(OnStart, void(PipelineStatus)); | 80 MOCK_METHOD1(OnStart, void(PipelineStatus)); |
81 MOCK_METHOD1(OnSeek, void(PipelineStatus)); | 81 MOCK_METHOD1(OnSeek, void(PipelineStatus)); |
82 MOCK_METHOD0(OnStop, void()); | 82 MOCK_METHOD0(OnStop, void()); |
83 MOCK_METHOD0(OnEnded, void()); | 83 MOCK_METHOD0(OnEnded, void()); |
84 MOCK_METHOD1(OnError, void(PipelineStatus)); | 84 MOCK_METHOD1(OnError, void(PipelineStatus)); |
85 MOCK_METHOD1(OnMetadata, void(PipelineMetadata)); | 85 MOCK_METHOD1(OnMetadata, void(PipelineMetadata)); |
86 MOCK_METHOD1(OnBufferingStateChange, void(BufferingState)); | 86 MOCK_METHOD1(OnBufferingStateChange, void(BufferingState)); |
| 87 MOCK_METHOD1(OnVideoFramePaint, void(const scoped_refptr<VideoFrame>&)); |
87 MOCK_METHOD0(OnDurationChange, void()); | 88 MOCK_METHOD0(OnDurationChange, void()); |
88 | 89 |
89 private: | 90 private: |
90 DISALLOW_COPY_AND_ASSIGN(CallbackHelper); | 91 DISALLOW_COPY_AND_ASSIGN(CallbackHelper); |
91 }; | 92 }; |
92 | 93 |
93 PipelineTest() | 94 PipelineTest() |
94 : pipeline_(new Pipeline(message_loop_.message_loop_proxy(), | 95 : pipeline_(new Pipeline(message_loop_.message_loop_proxy(), |
95 new MediaLog())), | 96 new MediaLog())), |
96 demuxer_(new StrictMock<MockDemuxer>()), | 97 demuxer_(new StrictMock<MockDemuxer>()), |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 | 163 |
163 scoped_ptr<StrictMock<MockDemuxerStream> > CreateStream( | 164 scoped_ptr<StrictMock<MockDemuxerStream> > CreateStream( |
164 DemuxerStream::Type type) { | 165 DemuxerStream::Type type) { |
165 scoped_ptr<StrictMock<MockDemuxerStream> > stream( | 166 scoped_ptr<StrictMock<MockDemuxerStream> > stream( |
166 new StrictMock<MockDemuxerStream>(type)); | 167 new StrictMock<MockDemuxerStream>(type)); |
167 return stream.Pass(); | 168 return stream.Pass(); |
168 } | 169 } |
169 | 170 |
170 // Sets up expectations to allow the video renderer to initialize. | 171 // Sets up expectations to allow the video renderer to initialize. |
171 void SetRendererExpectations() { | 172 void SetRendererExpectations() { |
172 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 173 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
173 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 174 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
174 SaveArg<4>(&ended_cb_), | 175 SaveArg<5>(&ended_cb_), |
175 PostCallback<1>(PIPELINE_OK))); | 176 PostCallback<1>(PIPELINE_OK))); |
176 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); | 177 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); |
177 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); | 178 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); |
178 } | 179 } |
179 | 180 |
180 void AddTextStream() { | 181 void AddTextStream() { |
181 EXPECT_CALL(*this, OnAddTextTrack(_,_)) | 182 EXPECT_CALL(*this, OnAddTextTrack(_,_)) |
182 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); | 183 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); |
183 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), | 184 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), |
184 TextTrackConfig(kTextSubtitles, "", "", "")); | 185 TextTrackConfig(kTextSubtitles, "", "", "")); |
185 message_loop_.RunUntilIdle(); | 186 message_loop_.RunUntilIdle(); |
186 } | 187 } |
187 | 188 |
188 void StartPipeline() { | 189 void StartPipeline() { |
189 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); | 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_)), |
| 199 base::Bind(&CallbackHelper::OnVideoFramePaint, |
| 200 base::Unretained(&callbacks_)), |
198 base::Bind(&CallbackHelper::OnDurationChange, | 201 base::Bind(&CallbackHelper::OnDurationChange, |
199 base::Unretained(&callbacks_)), | 202 base::Unretained(&callbacks_)), |
200 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this)), | 203 base::Bind(&PipelineTest::OnAddTextTrack, base::Unretained(this)), |
201 base::Bind(&PipelineTest::OnWaitingForDecryptionKey, | 204 base::Bind(&PipelineTest::OnWaitingForDecryptionKey, |
202 base::Unretained(this))); | 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) { |
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 MockDemuxerStreamVector streams; | 851 MockDemuxerStreamVector streams; |
849 streams.push_back(audio_stream()); | 852 streams.push_back(audio_stream()); |
850 streams.push_back(video_stream()); | 853 streams.push_back(video_stream()); |
851 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); | 854 SetDemuxerExpectations(&streams, base::TimeDelta::FromSeconds(3000)); |
852 | 855 |
853 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(true)); | 856 EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(true)); |
854 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(true)); | 857 EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(true)); |
855 | 858 |
856 if (state == kInitRenderer) { | 859 if (state == kInitRenderer) { |
857 if (stop_or_error == kStop) { | 860 if (stop_or_error == kStop) { |
858 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 861 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
859 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 862 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
860 PostCallback<1>(PIPELINE_OK))); | 863 PostCallback<1>(PIPELINE_OK))); |
861 ExpectPipelineStopAndDestroyPipeline(); | 864 ExpectPipelineStopAndDestroyPipeline(); |
862 } else { | 865 } else { |
863 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 866 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
864 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 867 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
865 .WillOnce(PostCallback<1>(status)); | 868 .WillOnce(PostCallback<1>(status)); |
866 } | 869 } |
867 | 870 |
868 EXPECT_CALL(*demuxer_, Stop()); | 871 EXPECT_CALL(*demuxer_, Stop()); |
869 EXPECT_CALL(callbacks_, OnMetadata(_)); | 872 EXPECT_CALL(callbacks_, OnMetadata(_)); |
870 return status; | 873 return status; |
871 } | 874 } |
872 | 875 |
873 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) | 876 EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _, _)) |
874 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), | 877 .WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
875 PostCallback<1>(PIPELINE_OK))); | 878 PostCallback<1>(PIPELINE_OK))); |
876 | 879 |
877 EXPECT_CALL(callbacks_, OnMetadata(_)); | 880 EXPECT_CALL(callbacks_, OnMetadata(_)); |
878 | 881 |
879 // If we get here it's a successful initialization. | 882 // If we get here it's a successful initialization. |
880 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); | 883 EXPECT_CALL(*renderer_, SetPlaybackRate(0.0f)); |
881 EXPECT_CALL(*renderer_, SetVolume(1.0f)); | 884 EXPECT_CALL(*renderer_, SetVolume(1.0f)); |
882 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) | 885 EXPECT_CALL(*renderer_, StartPlayingFrom(base::TimeDelta())) |
883 .WillOnce(SetBufferingState(&buffering_state_cb_, | 886 .WillOnce(SetBufferingState(&buffering_state_cb_, |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1002 | 1005 |
1003 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | 1006 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); |
1004 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); | 1007 INSTANTIATE_TEARDOWN_TEST(Error, InitRenderer); |
1005 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1008 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
1006 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1009 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1007 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1010 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1008 | 1011 |
1009 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1012 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
1010 | 1013 |
1011 } // namespace media | 1014 } // namespace media |
OLD | NEW |