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.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 |