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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 // We expect the time to be updated only after the seek has completed. | 301 // We expect the time to be updated only after the seek has completed. |
302 EXPECT_NE(seek_time, pipeline_->GetMediaTime()); | 302 EXPECT_NE(seek_time, pipeline_->GetMediaTime()); |
303 message_loop_.RunUntilIdle(); | 303 message_loop_.RunUntilIdle(); |
304 EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); | 304 EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); |
305 } | 305 } |
306 | 306 |
307 void ExpectStop() { | 307 void ExpectStop() { |
308 if (demuxer_) | 308 if (demuxer_) |
309 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 309 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
310 | 310 |
311 if (audio_stream_) | |
312 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | |
313 | |
314 if (video_stream_) | 311 if (video_stream_) |
315 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 312 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
316 } | 313 } |
317 | 314 |
318 MOCK_METHOD2(OnAddTextTrack, void(const TextTrackConfig&, | 315 MOCK_METHOD2(OnAddTextTrack, void(const TextTrackConfig&, |
319 const AddTextTrackDoneCB&)); | 316 const AddTextTrackDoneCB&)); |
320 | 317 |
321 void DoOnAddTextTrack(const TextTrackConfig& config, | 318 void DoOnAddTextTrack(const TextTrackConfig& config, |
322 const AddTextTrackDoneCB& done_cb) { | 319 const AddTextTrackDoneCB& done_cb) { |
323 scoped_ptr<TextTrack> text_track(new MockTextTrack); | 320 scoped_ptr<TextTrack> text_track(new MockTextTrack); |
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 message_loop_.RunUntilIdle(); | 672 message_loop_.RunUntilIdle(); |
676 | 673 |
677 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); | 674 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
678 | 675 |
679 // Preroll() isn't called as the demuxer errors out first. | 676 // Preroll() isn't called as the demuxer errors out first. |
680 EXPECT_CALL(*audio_renderer_, StopRendering()); | 677 EXPECT_CALL(*audio_renderer_, StopRendering()); |
681 EXPECT_CALL(*audio_renderer_, Flush(_)) | 678 EXPECT_CALL(*audio_renderer_, Flush(_)) |
682 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, | 679 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
683 BUFFERING_HAVE_NOTHING), | 680 BUFFERING_HAVE_NOTHING), |
684 RunClosure<0>())); | 681 RunClosure<0>())); |
685 EXPECT_CALL(*audio_renderer_, Stop(_)) | |
686 .WillOnce(RunClosure<0>()); | |
687 | 682 |
688 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 683 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
689 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); | 684 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); |
690 EXPECT_CALL(*demuxer_, Stop(_)) | 685 EXPECT_CALL(*demuxer_, Stop(_)) |
691 .WillOnce(RunClosure<0>()); | 686 .WillOnce(RunClosure<0>()); |
692 | 687 |
693 pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek, | 688 pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek, |
694 base::Unretained(&callbacks_))); | 689 base::Unretained(&callbacks_))); |
695 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); | 690 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); |
696 message_loop_.RunUntilIdle(); | 691 message_loop_.RunUntilIdle(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
731 .WillByDefault(Invoke(&cb, &base::Callback<void(PipelineStatus)>::Run)); | 726 .WillByDefault(Invoke(&cb, &base::Callback<void(PipelineStatus)>::Run)); |
732 | 727 |
733 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); | 728 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); |
734 | 729 |
735 // Seek() isn't called as the demuxer errors out first. | 730 // Seek() isn't called as the demuxer errors out first. |
736 EXPECT_CALL(*audio_renderer_, StopRendering()); | 731 EXPECT_CALL(*audio_renderer_, StopRendering()); |
737 EXPECT_CALL(*audio_renderer_, Flush(_)) | 732 EXPECT_CALL(*audio_renderer_, Flush(_)) |
738 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, | 733 .WillOnce(DoAll(SetBufferingState(&audio_buffering_state_cb_, |
739 BUFFERING_HAVE_NOTHING), | 734 BUFFERING_HAVE_NOTHING), |
740 RunClosure<0>())); | 735 RunClosure<0>())); |
741 EXPECT_CALL(*audio_renderer_, Stop(_)) | |
742 .WillOnce(RunClosure<0>()); | |
743 | 736 |
744 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) | 737 EXPECT_CALL(*demuxer_, Seek(seek_time, _)) |
745 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); | 738 .WillOnce(RunCallback<1>(PIPELINE_ERROR_READ)); |
746 EXPECT_CALL(*demuxer_, Stop(_)) | 739 EXPECT_CALL(*demuxer_, Stop(_)) |
747 .WillOnce(RunClosure<0>()); | 740 .WillOnce(RunClosure<0>()); |
748 | 741 |
749 pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek, | 742 pipeline_->Seek(seek_time, base::Bind(&CallbackHelper::OnSeek, |
750 base::Unretained(&callbacks_))); | 743 base::Unretained(&callbacks_))); |
751 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); | 744 EXPECT_CALL(callbacks_, OnSeek(PIPELINE_ERROR_READ)); |
752 message_loop_.RunUntilIdle(); | 745 message_loop_.RunUntilIdle(); |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
953 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 946 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
954 RunCallback<1>(PIPELINE_OK))); | 947 RunCallback<1>(PIPELINE_OK))); |
955 EXPECT_CALL(callbacks_, OnStop()); | 948 EXPECT_CALL(callbacks_, OnStop()); |
956 } else { | 949 } else { |
957 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 950 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
958 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) | 951 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) |
959 .WillOnce(RunCallback<1>(status)); | 952 .WillOnce(RunCallback<1>(status)); |
960 } | 953 } |
961 | 954 |
962 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 955 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
963 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | |
964 return status; | 956 return status; |
965 } | 957 } |
966 | 958 |
967 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) | 959 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _)) |
968 .WillOnce(DoAll(SaveArg<4>(&audio_buffering_state_cb_), | 960 .WillOnce(DoAll(SaveArg<4>(&audio_buffering_state_cb_), |
969 RunCallback<1>(PIPELINE_OK))); | 961 RunCallback<1>(PIPELINE_OK))); |
970 | 962 |
971 if (state == kInitVideoRenderer) { | 963 if (state == kInitVideoRenderer) { |
972 if (stop_or_error == kStop) { | 964 if (stop_or_error == kStop) { |
973 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _, _)) | 965 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _, _)) |
974 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), | 966 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
975 RunCallback<2>(PIPELINE_OK))); | 967 RunCallback<2>(PIPELINE_OK))); |
976 EXPECT_CALL(callbacks_, OnStop()); | 968 EXPECT_CALL(callbacks_, OnStop()); |
977 } else { | 969 } else { |
978 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | 970 status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
979 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _, _)) | 971 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _, _)) |
980 .WillOnce(RunCallback<2>(status)); | 972 .WillOnce(RunCallback<2>(status)); |
981 } | 973 } |
982 | 974 |
983 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 975 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
984 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | |
985 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 976 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
986 return status; | 977 return status; |
987 } | 978 } |
988 | 979 |
989 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _, _)) | 980 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _, _)) |
990 .WillOnce(DoAll(SaveArg<5>(&video_buffering_state_cb_), | 981 .WillOnce(DoAll(SaveArg<5>(&video_buffering_state_cb_), |
991 RunCallback<2>(PIPELINE_OK))); | 982 RunCallback<2>(PIPELINE_OK))); |
992 | 983 |
993 EXPECT_CALL(callbacks_, OnMetadata(_)); | 984 EXPECT_CALL(callbacks_, OnMetadata(_)); |
994 | 985 |
(...skipping 13 matching lines...) Expand all Loading... |
1008 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); | 999 EXPECT_CALL(callbacks_, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)); |
1009 | 1000 |
1010 return status; | 1001 return status; |
1011 } | 1002 } |
1012 | 1003 |
1013 void DoSeek(TeardownState state, StopOrError stop_or_error) { | 1004 void DoSeek(TeardownState state, StopOrError stop_or_error) { |
1014 InSequence s; | 1005 InSequence s; |
1015 PipelineStatus status = SetSeekExpectations(state, stop_or_error); | 1006 PipelineStatus status = SetSeekExpectations(state, stop_or_error); |
1016 | 1007 |
1017 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 1008 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
1018 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | |
1019 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 1009 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
1020 EXPECT_CALL(callbacks_, OnSeek(status)); | 1010 EXPECT_CALL(callbacks_, OnSeek(status)); |
1021 | 1011 |
1022 if (status == PIPELINE_OK) { | 1012 if (status == PIPELINE_OK) { |
1023 EXPECT_CALL(callbacks_, OnStop()); | 1013 EXPECT_CALL(callbacks_, OnStop()); |
1024 } | 1014 } |
1025 | 1015 |
1026 pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( | 1016 pipeline_->Seek(base::TimeDelta::FromSeconds(10), base::Bind( |
1027 &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); | 1017 &CallbackHelper::OnSeek, base::Unretained(&callbacks_))); |
1028 message_loop_.RunUntilIdle(); | 1018 message_loop_.RunUntilIdle(); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 } | 1069 } |
1080 | 1070 |
1081 NOTREACHED() << "State not supported: " << state; | 1071 NOTREACHED() << "State not supported: " << state; |
1082 return status; | 1072 return status; |
1083 } | 1073 } |
1084 | 1074 |
1085 void DoStopOrError(StopOrError stop_or_error) { | 1075 void DoStopOrError(StopOrError stop_or_error) { |
1086 InSequence s; | 1076 InSequence s; |
1087 | 1077 |
1088 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); | 1078 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); |
1089 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | |
1090 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); | 1079 EXPECT_CALL(*video_renderer_, Stop(_)).WillOnce(RunClosure<0>()); |
1091 | 1080 |
1092 switch (stop_or_error) { | 1081 switch (stop_or_error) { |
1093 case kStop: | 1082 case kStop: |
1094 EXPECT_CALL(callbacks_, OnStop()); | 1083 EXPECT_CALL(callbacks_, OnStop()); |
1095 pipeline_->Stop(base::Bind( | 1084 pipeline_->Stop(base::Bind( |
1096 &CallbackHelper::OnStop, base::Unretained(&callbacks_))); | 1085 &CallbackHelper::OnStop, base::Unretained(&callbacks_))); |
1097 break; | 1086 break; |
1098 | 1087 |
1099 case kError: | 1088 case kError: |
(...skipping 30 matching lines...) Expand all Loading... |
1130 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | 1119 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); |
1131 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); | 1120 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); |
1132 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); | 1121 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); |
1133 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1122 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
1134 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1123 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1135 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1124 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1136 | 1125 |
1137 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); | 1126 INSTANTIATE_TEARDOWN_TEST(ErrorAndStop, Playing); |
1138 | 1127 |
1139 } // namespace media | 1128 } // namespace media |
OLD | NEW |