Chromium Code Reviews| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 878 case kInitAudioRenderer: | 885 case kInitAudioRenderer: |
| 879 case kInitVideoRenderer: | 886 case kInitVideoRenderer: |
| 880 DoInitialize(state, stop_or_error); | 887 DoInitialize(state, stop_or_error); |
| 881 break; | 888 break; |
| 882 | 889 |
| 883 case kPausing: | 890 case kPausing: |
| 884 case kFlushing: | 891 case kFlushing: |
| 885 case kSeeking: | 892 case kSeeking: |
| 886 case kPrerolling: | 893 case kPrerolling: |
| 887 DoInitialize(state, stop_or_error); | 894 DoInitialize(state, stop_or_error); |
| 888 DoSeek(state, stop_or_error); | 895 //DoSeek(state, stop_or_error); |
|
acolwell GONE FROM CHROMIUM
2014/05/13 20:44:27
remove?
scherkus (not reviewing)
2014/05/15 23:28:43
Done.
| |
| 889 break; | 896 break; |
| 890 | 897 |
| 891 case kPlaying: | 898 case kPlaying: |
| 892 DoInitialize(state, stop_or_error); | 899 DoInitialize(state, stop_or_error); |
| 893 DoStopOrError(stop_or_error); | 900 DoStopOrError(stop_or_error); |
| 894 break; | 901 break; |
| 895 } | 902 } |
| 896 } | 903 } |
| 897 | 904 |
| 898 private: | 905 private: |
| (...skipping 58 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(*video_renderer_, Preroll(_, _)) |
| 1087 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 1096 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
| 1088 RunCallback<1>(PIPELINE_OK))); | 1097 RunCallback<1>(PIPELINE_OK))); |
| 1089 } else { | 1098 } else { |
| 1090 status = PIPELINE_ERROR_READ; | 1099 status = PIPELINE_ERROR_READ; |
| 1091 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) | 1100 EXPECT_CALL(*video_renderer_, Preroll(_, _)) |
| 1092 .WillOnce(RunCallback<1>(status)); | 1101 .WillOnce(RunCallback<1>(status)); |
| 1093 } | 1102 } |
| 1094 | 1103 |
| 1095 return status; | 1104 return status; |
| 1096 } | 1105 } |
| 1097 | 1106 |
| 1098 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) | 1107 EXPECT_CALL(*audio_renderer_, StartPlayingFrom(_)); |
| 1099 .WillOnce(RunCallback<1>(PIPELINE_OK)); | |
| 1100 EXPECT_CALL(*video_renderer_, Preroll(_, _)) | 1108 EXPECT_CALL(*video_renderer_, Preroll(_, _)) |
| 1101 .WillOnce(RunCallback<1>(PIPELINE_OK)); | 1109 .WillOnce(RunCallback<1>(PIPELINE_OK)); |
| 1102 | 1110 |
| 1103 // Playback rate and volume are updated prior to starting. | 1111 // Playback rate and volume are updated prior to starting. |
| 1104 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); | 1112 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); |
| 1105 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); | 1113 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); |
| 1106 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); | 1114 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); |
| 1107 | 1115 |
| 1108 NOTREACHED() << "State not supported: " << state; | 1116 NOTREACHED() << "State not supported: " << state; |
| 1109 return status; | 1117 return status; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1161 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); | 1169 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); |
| 1162 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); | 1170 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); |
| 1163 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1171 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
| 1164 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1172 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
| 1165 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); | 1173 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); |
| 1166 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1174 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
| 1167 | 1175 |
| 1168 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1176 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
| 1169 | 1177 |
| 1170 } // namespace media | 1178 } // namespace media |
| OLD | NEW |