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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 } | 43 } |
44 | 44 |
45 ACTION_P2(Stop, pipeline, stop_cb) { | 45 ACTION_P2(Stop, pipeline, stop_cb) { |
46 pipeline->Stop(stop_cb); | 46 pipeline->Stop(stop_cb); |
47 } | 47 } |
48 | 48 |
49 ACTION_P2(SetError, pipeline, status) { | 49 ACTION_P2(SetError, pipeline, status) { |
50 pipeline->SetErrorForTesting(status); | 50 pipeline->SetErrorForTesting(status); |
51 } | 51 } |
52 | 52 |
| 53 ACTION_P2(SetBufferingState, cb, buffering_state) { |
| 54 cb->Run(buffering_state); |
| 55 } |
| 56 |
53 // Used for setting expectations on pipeline callbacks. Using a StrictMock | 57 // Used for setting expectations on pipeline callbacks. Using a StrictMock |
54 // also lets us test for missing callbacks. | 58 // also lets us test for missing callbacks. |
55 class CallbackHelper { | 59 class CallbackHelper { |
56 public: | 60 public: |
57 CallbackHelper() {} | 61 CallbackHelper() {} |
58 virtual ~CallbackHelper() {} | 62 virtual ~CallbackHelper() {} |
59 | 63 |
60 MOCK_METHOD1(OnStart, void(PipelineStatus)); | 64 MOCK_METHOD1(OnStart, void(PipelineStatus)); |
61 MOCK_METHOD1(OnSeek, void(PipelineStatus)); | 65 MOCK_METHOD1(OnSeek, void(PipelineStatus)); |
62 MOCK_METHOD0(OnStop, void()); | 66 MOCK_METHOD0(OnStop, void()); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 // Startup sequence. | 179 // Startup sequence. |
176 EXPECT_CALL(*video_renderer_, Preroll(demuxer_->GetStartTime(), _)) | 180 EXPECT_CALL(*video_renderer_, Preroll(demuxer_->GetStartTime(), _)) |
177 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 181 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
178 EXPECT_CALL(*video_renderer_, Play(_)) | 182 EXPECT_CALL(*video_renderer_, Play(_)) |
179 .WillOnce(RunClosure<0>()); | 183 .WillOnce(RunClosure<0>()); |
180 } | 184 } |
181 | 185 |
182 // Sets up expectations to allow the audio renderer to initialize. | 186 // Sets up expectations to allow the audio renderer to initialize. |
183 void InitializeAudioRenderer(DemuxerStream* stream) { | 187 void InitializeAudioRenderer(DemuxerStream* stream) { |
184 EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _)) | 188 EXPECT_CALL(*audio_renderer_, Initialize(stream, _, _, _, _, _, _)) |
185 .WillOnce(DoAll(SaveArg<4>(&audio_time_cb_), | 189 .WillOnce(DoAll(SaveArg<3>(&audio_time_cb_), |
| 190 SaveArg<4>(&audio_buffering_state_cb_), |
186 RunCallback<1>(PIPELINE_OK))); | 191 RunCallback<1>(PIPELINE_OK))); |
187 } | 192 } |
188 | 193 |
189 void AddTextStream() { | 194 void AddTextStream() { |
190 EXPECT_CALL(*this, OnAddTextTrack(_,_)) | 195 EXPECT_CALL(*this, OnAddTextTrack(_,_)) |
191 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); | 196 .WillOnce(Invoke(this, &PipelineTest::DoOnAddTextTrack)); |
192 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), | 197 static_cast<DemuxerHost*>(pipeline_.get())->AddTextStream(text_stream(), |
193 TextTrackConfig(kTextSubtitles, "", "", "")); | 198 TextTrackConfig(kTextSubtitles, "", "", "")); |
194 } | 199 } |
195 | 200 |
196 // Sets up expectations on the callback and initializes the pipeline. Called | 201 // Sets up expectations on the callback and initializes the pipeline. Called |
197 // after tests have set expectations any filters they wish to use. | 202 // after tests have set expectations any filters they wish to use. |
198 void InitializePipeline(PipelineStatus start_status) { | 203 void InitializePipeline(PipelineStatus start_status) { |
199 EXPECT_CALL(callbacks_, OnStart(start_status)); | 204 EXPECT_CALL(callbacks_, OnStart(start_status)); |
200 | 205 |
201 if (start_status == PIPELINE_OK) { | 206 if (start_status == PIPELINE_OK) { |
202 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); | 207 EXPECT_CALL(callbacks_, OnMetadata(_)).WillOnce(SaveArg<0>(&metadata_)); |
203 | 208 |
204 if (audio_stream_) { | 209 if (audio_stream_) { |
205 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); | 210 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
206 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); | 211 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
207 | 212 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(base::TimeDelta())) |
208 // Startup sequence. | 213 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
209 EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) | 214 BUFFERING_HAVE_ENOUGH)); |
210 .WillOnce(RunCallback<1>(PIPELINE_OK)); | |
211 EXPECT_CALL(*audio_renderer_, StartRendering()); | 215 EXPECT_CALL(*audio_renderer_, StartRendering()); |
212 } | 216 } |
213 EXPECT_CALL(callbacks_, OnPrerollCompleted()); | 217 EXPECT_CALL(callbacks_, OnPrerollCompleted()); |
214 } | 218 } |
215 | 219 |
216 pipeline_->Start( | 220 pipeline_->Start( |
217 filter_collection_.Pass(), | 221 filter_collection_.Pass(), |
218 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), | 222 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), |
219 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), | 223 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), |
220 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), | 224 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_)), |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 | 258 |
255 void ExpectSeek(const base::TimeDelta& seek_time) { | 259 void ExpectSeek(const base::TimeDelta& seek_time) { |
256 // Every filter should receive a call to Seek(). | 260 // Every filter should receive a call to Seek(). |
257 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 261 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
258 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 262 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
259 | 263 |
260 if (audio_stream_) { | 264 if (audio_stream_) { |
261 EXPECT_CALL(*audio_renderer_, StopRendering()); | 265 EXPECT_CALL(*audio_renderer_, StopRendering()); |
262 EXPECT_CALL(*audio_renderer_, Flush(_)) | 266 EXPECT_CALL(*audio_renderer_, Flush(_)) |
263 .WillOnce(RunClosure<0>()); | 267 .WillOnce(RunClosure<0>()); |
264 EXPECT_CALL(*audio_renderer_, Preroll(seek_time, _)) | 268 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(seek_time)) |
265 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 269 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 270 BUFFERING_HAVE_ENOUGH)); |
266 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); | 271 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); |
267 EXPECT_CALL(*audio_renderer_, SetVolume(_)); | 272 EXPECT_CALL(*audio_renderer_, SetVolume(_)); |
268 EXPECT_CALL(*audio_renderer_, StartRendering()); | 273 EXPECT_CALL(*audio_renderer_, StartRendering()); |
269 } | 274 } |
270 | 275 |
271 if (video_stream_) { | 276 if (video_stream_) { |
272 EXPECT_CALL(*video_renderer_, Flush(_)) | 277 EXPECT_CALL(*video_renderer_, Flush(_)) |
273 .WillOnce(RunClosure<0>()); | 278 .WillOnce(RunClosure<0>()); |
274 EXPECT_CALL(*video_renderer_, Preroll(seek_time, _)) | 279 EXPECT_CALL(*video_renderer_, Preroll(seek_time, _)) |
275 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 280 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
324 scoped_ptr<FilterCollection> filter_collection_; | 329 scoped_ptr<FilterCollection> filter_collection_; |
325 scoped_ptr<MockDemuxer> demuxer_; | 330 scoped_ptr<MockDemuxer> demuxer_; |
326 MockVideoRenderer* video_renderer_; | 331 MockVideoRenderer* video_renderer_; |
327 MockAudioRenderer* audio_renderer_; | 332 MockAudioRenderer* audio_renderer_; |
328 StrictMock<CallbackHelper> text_renderer_callbacks_; | 333 StrictMock<CallbackHelper> text_renderer_callbacks_; |
329 TextRenderer* text_renderer_; | 334 TextRenderer* text_renderer_; |
330 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_; | 335 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_; |
331 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; | 336 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; |
332 scoped_ptr<FakeTextTrackStream> text_stream_; | 337 scoped_ptr<FakeTextTrackStream> text_stream_; |
333 AudioRenderer::TimeCB audio_time_cb_; | 338 AudioRenderer::TimeCB audio_time_cb_; |
| 339 AudioRenderer::BufferingStateCB audio_buffering_state_cb_; |
334 VideoDecoderConfig video_decoder_config_; | 340 VideoDecoderConfig video_decoder_config_; |
335 PipelineMetadata metadata_; | 341 PipelineMetadata metadata_; |
336 | 342 |
337 private: | 343 private: |
338 DISALLOW_COPY_AND_ASSIGN(PipelineTest); | 344 DISALLOW_COPY_AND_ASSIGN(PipelineTest); |
339 }; | 345 }; |
340 | 346 |
341 // Test that playback controls methods no-op when the pipeline hasn't been | 347 // Test that playback controls methods no-op when the pipeline hasn't been |
342 // started. | 348 // started. |
343 TEST_F(PipelineTest, NotStarted) { | 349 TEST_F(PipelineTest, NotStarted) { |
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
804 // seeking. This update should be ignored by the pipeline and the clock should | 810 // seeking. This update should be ignored by the pipeline and the clock should |
805 // not get updated. | 811 // not get updated. |
806 base::Closure closure = base::Bind(&RunTimeCB, audio_time_cb_, 300, 700); | 812 base::Closure closure = base::Bind(&RunTimeCB, audio_time_cb_, 300, 700); |
807 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 813 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
808 .WillOnce(DoAll(InvokeWithoutArgs(&closure, &base::Closure::Run), | 814 .WillOnce(DoAll(InvokeWithoutArgs(&closure, &base::Closure::Run), |
809 RunCallback<1>(PIPELINE_OK))); | 815 RunCallback<1>(PIPELINE_OK))); |
810 | 816 |
811 EXPECT_CALL(*audio_renderer_, StopRendering()); | 817 EXPECT_CALL(*audio_renderer_, StopRendering()); |
812 EXPECT_CALL(*audio_renderer_, Flush(_)) | 818 EXPECT_CALL(*audio_renderer_, Flush(_)) |
813 .WillOnce(RunClosure<0>()); | 819 .WillOnce(RunClosure<0>()); |
814 EXPECT_CALL(*audio_renderer_, Preroll(seek_time, _)) | 820 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(seek_time)) |
815 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 821 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 822 BUFFERING_HAVE_ENOUGH)); |
816 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); | 823 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(_)); |
817 EXPECT_CALL(*audio_renderer_, SetVolume(_)); | 824 EXPECT_CALL(*audio_renderer_, SetVolume(_)); |
818 EXPECT_CALL(*audio_renderer_, StartRendering()); | 825 EXPECT_CALL(*audio_renderer_, StartRendering()); |
819 | 826 |
820 EXPECT_CALL(callbacks_, OnPrerollCompleted()); | 827 EXPECT_CALL(callbacks_, OnPrerollCompleted()); |
821 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); | 828 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_OK)); |
822 DoSeek(seek_time); | 829 DoSeek(seek_time); |
823 | 830 |
824 EXPECT_EQ(pipeline_->GetMediaTime(), seek_time); | 831 EXPECT_EQ(pipeline_->GetMediaTime(), seek_time); |
825 | 832 |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
957 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) | 964 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) |
958 .WillOnce(RunCallback<1>(status)); | 965 .WillOnce(RunCallback<1>(status)); |
959 } | 966 } |
960 | 967 |
961 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 968 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
962 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 969 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
963 return status; | 970 return status; |
964 } | 971 } |
965 | 972 |
966 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) | 973 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) |
967 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 974 .WillOnce(DoAll(SaveArg<4>(&audio_buffering_state_cb_), |
| 975 RunCallback<1>(PIPELINE_OK))); |
968 | 976 |
969 if (state == kInitVideoRenderer) { | 977 if (state == kInitVideoRenderer) { |
970 if (stop_or_error == kStop) { | 978 if (stop_or_error == kStop) { |
971 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) | 979 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) |
972 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 980 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
973 RunCallback<2>(PIPELINE_OK))); | 981 RunCallback<2>(PIPELINE_OK))); |
974 EXPECT_CALL(callbacks_, OnStop()); | 982 EXPECT_CALL(callbacks_, OnStop()); |
975 } else { | 983 } else { |
976 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 984 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
977 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) | 985 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) |
978 .WillOnce(RunCallback<2>(status)); | 986 .WillOnce(RunCallback<2>(status)); |
979 } | 987 } |
980 | 988 |
981 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 989 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
982 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 990 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
983 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 991 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
984 return status; | 992 return status; |
985 } | 993 } |
986 | 994 |
987 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) | 995 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) |
988 .WillOnce(RunCallback<2>(PIPELINE_OK)); | 996 .WillOnce(RunCallback<2>(PIPELINE_OK)); |
989 | 997 |
990 EXPECT_CALL(callbacks_, OnMetadata(_)); | 998 EXPECT_CALL(callbacks_, OnMetadata(_)); |
991 | 999 |
992 // If we get here it's a successful initialization. | 1000 // If we get here it's a successful initialization. |
993 EXPECT_CALL(*audio_renderer_, Preroll(base::TimeDelta(), _)) | 1001 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(base::TimeDelta())) |
994 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1002 .WillOnce(SetBufferingState(&audio_buffering_state_cb_, |
| 1003 BUFFERING_HAVE_ENOUGH)); |
995 EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _)) | 1004 EXPECT_CALL(*video_renderer_, Preroll(base::TimeDelta(), _)) |
996 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1005 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
997 | 1006 |
998 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); | 1007 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
999 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); | 1008 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); |
1000 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); | 1009 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
1001 | 1010 |
1002 EXPECT_CALL(*audio_renderer_, StartRendering()); | 1011 EXPECT_CALL(*audio_renderer_, StartRendering()); |
1003 EXPECT_CALL(*video_renderer_, Play(_)) | 1012 EXPECT_CALL(*video_renderer_, Play(_)) |
1004 .WillOnce(RunClosure<0>()); | 1013 .WillOnce(RunClosure<0>()); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1076 } | 1085 } |
1077 | 1086 |
1078 return status; | 1087 return status; |
1079 } | 1088 } |
1080 | 1089 |
1081 EXPECT_CALL(*demuxer_, Seek(_, _)) | 1090 EXPECT_CALL(*demuxer_, Seek(_, _)) |
1082 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1091 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
1083 | 1092 |
1084 if (state == kPrerolling) { | 1093 if (state == kPrerolling) { |
1085 if (stop_or_error == kStop) { | 1094 if (stop_or_error == kStop) { |
1086 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) | 1095 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)) |
1087 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 1096 .WillOnce(Stop(pipeline_.get(), stop_cb)); |
1088 RunCallback<1>(PIPELINE_OK))); | |
1089 } else { | 1097 } else { |
1090 status = PIPELINE_ERROR_READ; | 1098 status = PIPELINE_ERROR_READ; |
1091 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) | 1099 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)) |
1092 .WillOnce(RunCallback<1>(status)); | 1100 .WillOnce(SetError(pipeline_.get(), status)); |
1093 } | 1101 } |
1094 | 1102 |
1095 return status; | 1103 return status; |
1096 } | 1104 } |
1097 | 1105 |
1098 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) | 1106 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)); |
1099 .WillOnce(RunCallback<1>(PIPELINE_OK)); | |
1100 EXPECT_CALL(*video_renderer_, Preroll(_, _)) | 1107 EXPECT_CALL(*video_renderer_, Preroll(_, _)) |
1101 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1108 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
1102 | 1109 |
1103 // Playback rate and volume are updated prior to starting. | 1110 // Playback rate and volume are updated prior to starting. |
1104 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); | 1111 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
1105 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); | 1112 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); |
1106 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); | 1113 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
1107 | 1114 |
1108 NOTREACHED() << "State not supported: " << state; | 1115 NOTREACHED() << "State not supported: " << state; |
1109 return status; | 1116 return status; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1161 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); | 1168 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); |
1162 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); | 1169 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); |
1163 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1170 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
1164 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1171 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1165 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); | 1172 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); |
1166 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1173 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1167 | 1174 |
1168 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1175 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
1169 | 1176 |
1170 } // namespace media | 1177 } // namespace media |
OLD | NEW |