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.h" | 8 #include "base/message_loop.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/threading/simple_thread.h" | 10 #include "base/threading/simple_thread.h" |
(...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
871 EXPECT_EQ(pipeline_->GetMediaTime(), seek_time); | 871 EXPECT_EQ(pipeline_->GetMediaTime(), seek_time); |
872 | 872 |
873 // Now that the seek is complete, verify that time updates advance the current | 873 // Now that the seek is complete, verify that time updates advance the current |
874 // time. | 874 // time. |
875 base::TimeDelta new_time = seek_time + base::TimeDelta::FromMilliseconds(100); | 875 base::TimeDelta new_time = seek_time + base::TimeDelta::FromMilliseconds(100); |
876 audio_time_cb_.Run(new_time, new_time); | 876 audio_time_cb_.Run(new_time, new_time); |
877 | 877 |
878 EXPECT_EQ(pipeline_->GetMediaTime(), new_time); | 878 EXPECT_EQ(pipeline_->GetMediaTime(), new_time); |
879 } | 879 } |
880 | 880 |
881 TEST_F(PipelineTest, InitFailure_Demuxer) { | |
882 PipelineStatus expected_status = DEMUXER_ERROR_COULD_NOT_OPEN; | |
883 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) | |
884 .WillOnce(RunPipelineStatusCBWithStatus(expected_status)); | |
885 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) | |
886 .WillOnce(RunClosure()); | |
887 InitializePipeline(expected_status); | |
888 } | |
889 | |
890 TEST_F(PipelineTest, InitFailure_AudioDecoder) { | |
891 CreateAudioStream(); | |
892 MockDemuxerStreamVector streams; | |
893 streams.push_back(audio_stream()); | |
894 | |
895 InitializeDemuxer(&streams); | |
896 | |
897 PipelineStatus expected_status = PIPELINE_ERROR_DECODE; | |
898 scoped_refptr<DemuxerStream> stream = streams[0]; | |
899 EXPECT_CALL(*mocks_->audio_decoder(), Initialize(stream, _, _)) | |
900 .WillOnce(RunPipelineStatusCBWithStatus(expected_status)); | |
901 | |
902 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) | |
903 .WillOnce(RunClosure()); | |
904 | |
905 InitializePipeline(expected_status); | |
906 EXPECT_FALSE(pipeline_->HasAudio()); | |
907 } | |
908 | |
909 TEST_F(PipelineTest, InitFailure_AudioRenderer) { | |
910 CreateAudioStream(); | |
911 MockDemuxerStreamVector streams; | |
912 streams.push_back(audio_stream()); | |
913 | |
914 InitializeDemuxer(&streams); | |
915 InitializeAudioDecoder(audio_stream()); | |
916 | |
917 PipelineStatus expected_status = PIPELINE_ERROR_INITIALIZATION_FAILED; | |
918 EXPECT_CALL(*mocks_->audio_renderer(), Initialize( | |
919 scoped_refptr<AudioDecoder>(mocks_->audio_decoder()), | |
920 _, _, _, _, _, _)) | |
921 .WillOnce(RunPipelineStatusCBWithStatus(expected_status)); | |
922 | |
923 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) | |
924 .WillOnce(RunClosure()); | |
925 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)) | |
926 .WillOnce(RunClosure()); | |
927 | |
928 InitializePipeline(expected_status); | |
929 EXPECT_TRUE(pipeline_->HasAudio()); | |
930 } | |
931 | |
932 TEST_F(PipelineTest, InitFailure_VideoDecoder) { | |
933 CreateAudioStream(); | |
934 CreateVideoStream(); | |
935 MockDemuxerStreamVector streams; | |
936 streams.push_back(audio_stream()); | |
937 streams.push_back(video_stream()); | |
938 | |
939 InitializeDemuxer(&streams); | |
940 InitializeAudioDecoder(audio_stream()); | |
941 InitializeAudioRenderer(); | |
942 | |
943 PipelineStatus expected_status = PIPELINE_ERROR_DECODE; | |
944 scoped_refptr<DemuxerStream> stream = streams[1]; | |
945 EXPECT_CALL(*mocks_->video_decoder(), | |
946 Initialize(stream, _, _)) | |
947 .WillOnce(RunPipelineStatusCBWithStatus(expected_status)); | |
948 | |
949 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) | |
950 .WillOnce(RunClosure()); | |
951 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)) | |
952 .WillOnce(RunClosure()); | |
953 | |
954 InitializePipeline(expected_status); | |
955 EXPECT_TRUE(pipeline_->HasAudio()); | |
956 EXPECT_FALSE(pipeline_->HasVideo()); | |
957 } | |
958 | |
959 TEST_F(PipelineTest, InitFailure_VideoRenderer) { | |
960 CreateAudioStream(); | |
961 CreateVideoStream(); | |
962 MockDemuxerStreamVector streams; | |
963 streams.push_back(audio_stream()); | |
964 streams.push_back(video_stream()); | |
965 | |
966 InitializeDemuxer(&streams); | |
967 InitializeAudioDecoder(audio_stream()); | |
968 InitializeAudioRenderer(); | |
969 InitializeVideoDecoder(video_stream()); | |
970 | |
971 PipelineStatus expected_status = PIPELINE_ERROR_INITIALIZATION_FAILED; | |
972 EXPECT_CALL(*mocks_->video_renderer(), Initialize( | |
973 scoped_refptr<VideoDecoder>(mocks_->video_decoder()), | |
974 _, _, _, _, _, _, _, _)) | |
975 .WillOnce(RunPipelineStatusCBWithStatus(expected_status)); | |
976 | |
977 EXPECT_CALL(*mocks_->demuxer(), Stop(_)) | |
978 .WillOnce(RunClosure()); | |
979 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)) | |
980 .WillOnce(RunClosure()); | |
981 EXPECT_CALL(*mocks_->video_renderer(), Stop(_)) | |
982 .WillOnce(RunClosure()); | |
983 | |
984 InitializePipeline(expected_status); | |
985 EXPECT_TRUE(pipeline_->HasAudio()); | |
986 EXPECT_TRUE(pipeline_->HasVideo()); | |
987 } | |
988 | |
989 class FlexibleCallbackRunner : public base::DelegateSimpleThread::Delegate { | 881 class FlexibleCallbackRunner : public base::DelegateSimpleThread::Delegate { |
990 public: | 882 public: |
991 FlexibleCallbackRunner(base::TimeDelta delay, PipelineStatus status, | 883 FlexibleCallbackRunner(base::TimeDelta delay, PipelineStatus status, |
992 const PipelineStatusCB& status_cb) | 884 const PipelineStatusCB& status_cb) |
993 : delay_(delay), | 885 : delay_(delay), |
994 status_(status), | 886 status_(status), |
995 status_cb_(status_cb) { | 887 status_cb_(status_cb) { |
996 if (delay_ < base::TimeDelta()) { | 888 if (delay_ < base::TimeDelta()) { |
997 status_cb_.Run(status_); | 889 status_cb_.Run(status_); |
998 return; | 890 return; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1035 | 927 |
1036 // Test that different-thread, some-delay callback (the expected common case) | 928 // Test that different-thread, some-delay callback (the expected common case) |
1037 // works correctly. | 929 // works correctly. |
1038 TEST(PipelineStatusNotificationTest, DelayedCallback) { | 930 TEST(PipelineStatusNotificationTest, DelayedCallback) { |
1039 TestPipelineStatusNotification(base::TimeDelta::FromMilliseconds(20)); | 931 TestPipelineStatusNotification(base::TimeDelta::FromMilliseconds(20)); |
1040 } | 932 } |
1041 | 933 |
1042 class PipelineTeardownTest : public PipelineTest { | 934 class PipelineTeardownTest : public PipelineTest { |
1043 public: | 935 public: |
1044 enum TeardownState { | 936 enum TeardownState { |
937 kInitDemuxer, | |
938 kInitAudioDecoder, | |
939 kInitAudioRenderer, | |
940 kInitVideoDecoder, | |
941 kInitVideoRenderer, | |
1045 kPausing, | 942 kPausing, |
1046 kFlushing, | 943 kFlushing, |
1047 kSeeking, | 944 kSeeking, |
1048 kPrerolling, | 945 kPrerolling, |
1049 kStarting, | 946 kStarting, |
1050 kPlaying, | 947 kPlaying, |
1051 }; | 948 }; |
1052 | 949 |
1053 enum StopOrError { | 950 enum StopOrError { |
1054 kStop, | 951 kStop, |
1055 kError, | 952 kError, |
1056 }; | 953 }; |
1057 | 954 |
1058 PipelineTeardownTest() { | 955 PipelineTeardownTest() {} |
1059 CreateAudioStream(); | 956 virtual ~PipelineTeardownTest() {} |
1060 MockDemuxerStreamVector streams; | |
1061 streams.push_back(audio_stream()); | |
1062 | |
1063 InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000)); | |
1064 InitializeAudioDecoder(audio_stream()); | |
1065 InitializeAudioRenderer(); | |
1066 InitializePipeline(PIPELINE_OK); | |
1067 } | |
1068 | 957 |
1069 void RunTest(TeardownState state, StopOrError stop_or_error) { | 958 void RunTest(TeardownState state, StopOrError stop_or_error) { |
1070 InSequence s; | |
1071 switch (state) { | 959 switch (state) { |
960 case kInitDemuxer: | |
961 case kInitAudioDecoder: | |
962 case kInitAudioRenderer: | |
963 case kInitVideoDecoder: | |
964 case kInitVideoRenderer: | |
965 ExpectInitializeTeardown(state, stop_or_error); | |
966 break; | |
967 | |
1072 case kPausing: | 968 case kPausing: |
1073 case kFlushing: | 969 case kFlushing: |
1074 case kSeeking: | 970 case kSeeking: |
1075 case kPrerolling: | 971 case kPrerolling: |
1076 case kStarting: | 972 case kStarting: { |
973 DoInitialize(); | |
974 | |
975 InSequence s; | |
acolwell GONE FROM CHROMIUM
2012/08/10 17:13:08
Why did this need to move to here ane below?
scherkus (not reviewing)
2012/08/10 17:35:55
DoInitialize() / ExpectInitializeTeardown() aren't
| |
1077 if (stop_or_error == kStop) { | 976 if (stop_or_error == kStop) { |
1078 ExpectSeekStop(state); | 977 ExpectSeekStop(state); |
1079 } else { | 978 } else { |
1080 ExpectSeekError(state); | 979 ExpectSeekError(state); |
1081 } | 980 } |
1082 DoSeek(); | 981 DoSeek(); |
1083 break; | 982 break; |
983 } | |
1084 | 984 |
1085 case kPlaying: | 985 case kPlaying: { |
986 DoInitialize(); | |
987 | |
988 InSequence s; | |
1086 if (stop_or_error == kStop) { | 989 if (stop_or_error == kStop) { |
1087 ExpectStop(); | 990 ExpectStop(); |
1088 DoStop(); | 991 DoStop(); |
1089 } else { | 992 } else { |
1090 ExpectPlaybackError(); | 993 ExpectPlaybackError(); |
1091 DoPlaybackError(); | 994 DoPlaybackError(); |
1092 } | 995 } |
1093 break; | 996 break; |
997 } | |
1094 } | 998 } |
1095 } | 999 } |
1096 | 1000 |
1097 private: | 1001 private: |
1002 void DoInitialize() { | |
1003 CreateAudioStream(); | |
1004 MockDemuxerStreamVector streams; | |
1005 streams.push_back(audio_stream()); | |
1006 | |
1007 InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000)); | |
1008 InitializeAudioDecoder(audio_stream()); | |
1009 InitializeAudioRenderer(); | |
1010 InitializePipeline(PIPELINE_OK); | |
1011 } | |
1012 | |
1098 // TODO(scherkus): We do radically different things whether teardown is | 1013 // TODO(scherkus): We do radically different things whether teardown is |
1099 // invoked via stop vs error. The teardown path should be the same, | 1014 // invoked via stop vs error. The teardown path should be the same, |
1100 // see http://crbug.com/110228 | 1015 // see http://crbug.com/110228 |
1016 void ExpectInitializeTeardown(TeardownState state, | |
1017 StopOrError stop_or_error) { | |
1018 PipelineStatus expected_status = | |
1019 SetInitializeExpectations(state, stop_or_error); | |
1020 | |
1021 EXPECT_CALL(callbacks_, OnStart(expected_status)); | |
1022 pipeline_->Start( | |
1023 mocks_->Create().Pass(), | |
1024 base::Bind(&CallbackHelper::OnEnded, base::Unretained(&callbacks_)), | |
1025 base::Bind(&CallbackHelper::OnError, base::Unretained(&callbacks_)), | |
1026 base::Bind(&CallbackHelper::OnStart, base::Unretained(&callbacks_))); | |
1027 message_loop_.RunAllPending(); | |
1028 } | |
1029 | |
1030 PipelineStatus SetInitializeExpectations(TeardownState state, | |
1031 StopOrError stop_or_error) { | |
1032 PipelineStatus status = PIPELINE_OK; | |
1033 base::Closure stop_cb = base::Bind( | |
1034 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); | |
1035 | |
1036 if (state == kInitDemuxer) { | |
1037 if (stop_or_error == kStop) { | |
1038 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) | |
1039 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunPipelineStatusCB())); | |
1040 EXPECT_CALL(callbacks_, OnStop()); | |
1041 } else { | |
1042 status = DEMUXER_ERROR_COULD_NOT_OPEN; | |
1043 EXPECT_CALL(*mocks_->demuxer(), Initialize(_, _)) | |
1044 .WillOnce(RunPipelineStatusCBWithStatus(status)); | |
1045 } | |
1046 | |
1047 EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); | |
1048 return status; | |
1049 } | |
1050 | |
1051 CreateAudioStream(); | |
1052 CreateVideoStream(); | |
1053 MockDemuxerStreamVector streams; | |
1054 streams.push_back(audio_stream()); | |
1055 streams.push_back(video_stream()); | |
1056 InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000)); | |
1057 | |
1058 if (state == kInitAudioDecoder) { | |
1059 if (stop_or_error == kStop) { | |
1060 EXPECT_CALL(*mocks_->audio_decoder(), Initialize(_, _, _)) | |
1061 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunPipelineStatusCB())); | |
1062 EXPECT_CALL(callbacks_, OnStop()); | |
1063 } else { | |
1064 status = PIPELINE_ERROR_DECODE; | |
1065 EXPECT_CALL(*mocks_->audio_decoder(), Initialize(_, _, _)) | |
1066 .WillOnce(RunPipelineStatusCBWithStatus(status)); | |
1067 } | |
1068 | |
1069 EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); | |
1070 return status; | |
1071 } | |
1072 | |
1073 EXPECT_CALL(*mocks_->audio_decoder(), Initialize(_, _, _)) | |
1074 .WillOnce(RunPipelineStatusCB()); | |
1075 | |
1076 if (state == kInitAudioRenderer) { | |
1077 if (stop_or_error == kStop) { | |
1078 EXPECT_CALL(*mocks_->audio_renderer(), Initialize(_, _, _, _, _, _, _)) | |
1079 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunPipelineStatusCB())); | |
1080 EXPECT_CALL(callbacks_, OnStop()); | |
1081 } else { | |
1082 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | |
1083 EXPECT_CALL(*mocks_->audio_renderer(), Initialize(_, _, _, _, _, _, _)) | |
1084 .WillOnce(RunPipelineStatusCBWithStatus(status)); | |
1085 } | |
1086 | |
1087 EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); | |
1088 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); | |
1089 return status; | |
1090 } | |
1091 | |
1092 EXPECT_CALL(*mocks_->audio_renderer(), Initialize(_, _, _, _, _, _, _)) | |
1093 .WillOnce(RunPipelineStatusCB()); | |
1094 | |
1095 if (state == kInitVideoDecoder) { | |
1096 if (stop_or_error == kStop) { | |
1097 EXPECT_CALL(*mocks_->video_decoder(), Initialize(_, _, _)) | |
1098 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunPipelineStatusCB())); | |
1099 EXPECT_CALL(callbacks_, OnStop()); | |
1100 } else { | |
1101 status = PIPELINE_ERROR_DECODE; | |
1102 EXPECT_CALL(*mocks_->video_decoder(), Initialize(_, _, _)) | |
1103 .WillOnce(RunPipelineStatusCBWithStatus(status)); | |
1104 } | |
1105 | |
1106 EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); | |
1107 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); | |
1108 return status; | |
1109 } | |
1110 | |
1111 EXPECT_CALL(*mocks_->video_decoder(), Initialize(_, _, _)) | |
1112 .WillOnce(RunPipelineStatusCB()); | |
1113 | |
1114 if (state == kInitVideoRenderer) { | |
acolwell GONE FROM CHROMIUM
2012/08/10 17:13:08
nit: remove if and DCHECK_EQ(state, kInitVideoRend
scherkus (not reviewing)
2012/08/10 17:35:55
True! My initial plan for this function was to use
| |
1115 if (stop_or_error == kStop) { | |
1116 EXPECT_CALL(*mocks_->video_renderer(), | |
1117 Initialize(_, _, _, _, _, _, _, _, _)) | |
1118 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunPipelineStatusCB())); | |
1119 EXPECT_CALL(callbacks_, OnStop()); | |
1120 } else { | |
1121 status = PIPELINE_ERROR_INITIALIZATION_FAILED; | |
1122 EXPECT_CALL(*mocks_->video_renderer(), | |
1123 Initialize(_, _, _, _, _, _, _, _, _)) | |
1124 .WillOnce(RunPipelineStatusCBWithStatus(status)); | |
1125 } | |
1126 | |
1127 EXPECT_CALL(*mocks_->demuxer(), Stop(_)).WillOnce(RunClosure()); | |
1128 EXPECT_CALL(*mocks_->audio_renderer(), Stop(_)).WillOnce(RunClosure()); | |
1129 EXPECT_CALL(*mocks_->video_renderer(), Stop(_)).WillOnce(RunClosure()); | |
1130 return status; | |
1131 } | |
1132 | |
1133 EXPECT_CALL(*mocks_->video_renderer(), | |
1134 Initialize(_, _, _, _, _, _, _, _, _)) | |
1135 .WillOnce(RunPipelineStatusCB()); | |
1136 | |
1137 // If we get here it's a successful initialization. | |
1138 EXPECT_CALL(*mocks_->demuxer(), SetPlaybackRate(0.0f)); | |
1139 EXPECT_CALL(*mocks_->audio_renderer(), SetPlaybackRate(0.0f)); | |
1140 EXPECT_CALL(*mocks_->audio_renderer(), SetVolume(1.0f)); | |
1141 EXPECT_CALL(*mocks_->audio_renderer(), Preroll(base::TimeDelta(), _)) | |
1142 .WillOnce(RunPipelineStatusCB()); | |
1143 EXPECT_CALL(*mocks_->audio_renderer(), Play(_)) | |
1144 .WillOnce(RunClosure()); | |
1145 | |
1146 return status; | |
1147 } | |
1148 | |
1101 void ExpectSeekStop(TeardownState state) { | 1149 void ExpectSeekStop(TeardownState state) { |
1102 base::Closure stop_cb = base::Bind( | 1150 base::Closure stop_cb = base::Bind( |
1103 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); | 1151 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); |
1104 | 1152 |
1105 if (state == kPausing) { | 1153 if (state == kPausing) { |
1106 EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) | 1154 EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)) |
1107 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure())); | 1155 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure())); |
1108 } else { | 1156 } else { |
1109 EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)).WillOnce(RunClosure()); | 1157 EXPECT_CALL(*mocks_->audio_renderer(), Pause(_)).WillOnce(RunClosure()); |
1110 } | 1158 } |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1237 } | 1285 } |
1238 | 1286 |
1239 DISALLOW_COPY_AND_ASSIGN(PipelineTeardownTest); | 1287 DISALLOW_COPY_AND_ASSIGN(PipelineTeardownTest); |
1240 }; | 1288 }; |
1241 | 1289 |
1242 #define INSTANTIATE_TEARDOWN_TEST(stop_or_error, state) \ | 1290 #define INSTANTIATE_TEARDOWN_TEST(stop_or_error, state) \ |
1243 TEST_F(PipelineTeardownTest, stop_or_error##_##state) { \ | 1291 TEST_F(PipelineTeardownTest, stop_or_error##_##state) { \ |
1244 RunTest(k##state, k##stop_or_error); \ | 1292 RunTest(k##state, k##stop_or_error); \ |
1245 } | 1293 } |
1246 | 1294 |
1295 INSTANTIATE_TEARDOWN_TEST(Stop, InitDemuxer); | |
1296 INSTANTIATE_TEARDOWN_TEST(Stop, InitAudioDecoder); | |
1297 INSTANTIATE_TEARDOWN_TEST(Stop, InitAudioRenderer); | |
1298 INSTANTIATE_TEARDOWN_TEST(Stop, InitVideoDecoder); | |
1299 INSTANTIATE_TEARDOWN_TEST(Stop, InitVideoRenderer); | |
1247 INSTANTIATE_TEARDOWN_TEST(Stop, Pausing); | 1300 INSTANTIATE_TEARDOWN_TEST(Stop, Pausing); |
1248 INSTANTIATE_TEARDOWN_TEST(Stop, Flushing); | 1301 INSTANTIATE_TEARDOWN_TEST(Stop, Flushing); |
1249 INSTANTIATE_TEARDOWN_TEST(Stop, Seeking); | 1302 INSTANTIATE_TEARDOWN_TEST(Stop, Seeking); |
1250 INSTANTIATE_TEARDOWN_TEST(Stop, Prerolling); | 1303 INSTANTIATE_TEARDOWN_TEST(Stop, Prerolling); |
1251 INSTANTIATE_TEARDOWN_TEST(Stop, Starting); | 1304 INSTANTIATE_TEARDOWN_TEST(Stop, Starting); |
1252 INSTANTIATE_TEARDOWN_TEST(Stop, Playing); | 1305 INSTANTIATE_TEARDOWN_TEST(Stop, Playing); |
1253 | 1306 |
1307 INSTANTIATE_TEARDOWN_TEST(Error, InitDemuxer); | |
1308 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioDecoder); | |
1309 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); | |
1310 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoDecoder); | |
1311 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); | |
1254 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); | 1312 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); |
1255 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); | 1313 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); |
1256 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); | 1314 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); |
1257 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); | 1315 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); |
1258 INSTANTIATE_TEARDOWN_TEST(Error, Starting); | 1316 INSTANTIATE_TEARDOWN_TEST(Error, Starting); |
1259 INSTANTIATE_TEARDOWN_TEST(Error, Playing); | 1317 INSTANTIATE_TEARDOWN_TEST(Error, Playing); |
1260 | 1318 |
1261 } // namespace media | 1319 } // namespace media |
OLD | NEW |