Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1403)

Side by Side Diff: media/base/pipeline_unittest.cc

Issue 14371023: Remove reference counting from media::Pipeline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/base/pipeline.cc ('k') | media/filters/pipeline_integration_test_base.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/test/simple_test_clock.h" 10 #include "base/test/simple_test_clock.h"
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 EXPECT_CALL(*video_renderer_, Stop(_)) 118 EXPECT_CALL(*video_renderer_, Stop(_))
119 .WillOnce(RunClosure<0>()); 119 .WillOnce(RunClosure<0>());
120 } 120 }
121 121
122 // Expect a stop callback if we were started. 122 // Expect a stop callback if we were started.
123 EXPECT_CALL(callbacks_, OnStop()); 123 EXPECT_CALL(callbacks_, OnStop());
124 pipeline_->Stop(base::Bind(&CallbackHelper::OnStop, 124 pipeline_->Stop(base::Bind(&CallbackHelper::OnStop,
125 base::Unretained(&callbacks_))); 125 base::Unretained(&callbacks_)));
126 message_loop_.RunUntilIdle(); 126 message_loop_.RunUntilIdle();
127 127
128 pipeline_ = NULL;
129 filter_collection_.reset(); 128 filter_collection_.reset();
129 pipeline_.reset();
130 } 130 }
131 131
132 protected: 132 protected:
133 // Sets up expectations to allow the demuxer to initialize. 133 // Sets up expectations to allow the demuxer to initialize.
134 typedef std::vector<MockDemuxerStream*> MockDemuxerStreamVector; 134 typedef std::vector<MockDemuxerStream*> MockDemuxerStreamVector;
135 void InitializeDemuxer(MockDemuxerStreamVector* streams, 135 void InitializeDemuxer(MockDemuxerStreamVector* streams,
136 const base::TimeDelta& duration) { 136 const base::TimeDelta& duration) {
137 EXPECT_CALL(callbacks_, OnDurationChange()); 137 EXPECT_CALL(callbacks_, OnDurationChange());
138 EXPECT_CALL(*demuxer_, Initialize(_, _)) 138 EXPECT_CALL(*demuxer_, Initialize(_, _))
139 .WillOnce(DoAll(SetDemuxerProperties(duration), 139 .WillOnce(DoAll(SetDemuxerProperties(duration),
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 // We expect the time to be updated only after the seek has completed. 282 // We expect the time to be updated only after the seek has completed.
283 EXPECT_NE(seek_time, pipeline_->GetMediaTime()); 283 EXPECT_NE(seek_time, pipeline_->GetMediaTime());
284 message_loop_.RunUntilIdle(); 284 message_loop_.RunUntilIdle();
285 EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); 285 EXPECT_EQ(seek_time, pipeline_->GetMediaTime());
286 } 286 }
287 287
288 // Fixture members. 288 // Fixture members.
289 StrictMock<CallbackHelper> callbacks_; 289 StrictMock<CallbackHelper> callbacks_;
290 base::SimpleTestClock test_clock_; 290 base::SimpleTestClock test_clock_;
291 base::MessageLoop message_loop_; 291 base::MessageLoop message_loop_;
292 scoped_refptr<Pipeline> pipeline_; 292 scoped_ptr<Pipeline> pipeline_;
293 293
294 scoped_ptr<FilterCollection> filter_collection_; 294 scoped_ptr<FilterCollection> filter_collection_;
295 scoped_ptr<MockDemuxer> demuxer_; 295 scoped_ptr<MockDemuxer> demuxer_;
296 MockVideoRenderer* video_renderer_; 296 MockVideoRenderer* video_renderer_;
297 MockAudioRenderer* audio_renderer_; 297 MockAudioRenderer* audio_renderer_;
298 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_; 298 scoped_ptr<StrictMock<MockDemuxerStream> > audio_stream_;
299 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_; 299 scoped_ptr<StrictMock<MockDemuxerStream> > video_stream_;
300 AudioRenderer::TimeCB audio_time_cb_; 300 AudioRenderer::TimeCB audio_time_cb_;
301 VideoDecoderConfig video_decoder_config_; 301 VideoDecoderConfig video_decoder_config_;
302 302
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 CreateAudioStream(); 704 CreateAudioStream();
705 MockDemuxerStreamVector streams; 705 MockDemuxerStreamVector streams;
706 streams.push_back(audio_stream()); 706 streams.push_back(audio_stream());
707 707
708 InitializeDemuxer(&streams); 708 InitializeDemuxer(&streams);
709 InitializeAudioRenderer(audio_stream(), false); 709 InitializeAudioRenderer(audio_stream(), false);
710 InitializePipeline(PIPELINE_OK); 710 InitializePipeline(PIPELINE_OK);
711 711
712 // Trigger additional requests on the pipeline during tear down from error. 712 // Trigger additional requests on the pipeline during tear down from error.
713 base::Callback<void(PipelineStatus)> cb = base::Bind( 713 base::Callback<void(PipelineStatus)> cb = base::Bind(
714 &TestNoCallsAfterError, pipeline_, &message_loop_); 714 &TestNoCallsAfterError, pipeline_.get(), &message_loop_);
715 ON_CALL(callbacks_, OnError(_)) 715 ON_CALL(callbacks_, OnError(_))
716 .WillByDefault(Invoke(&cb, &base::Callback<void(PipelineStatus)>::Run)); 716 .WillByDefault(Invoke(&cb, &base::Callback<void(PipelineStatus)>::Run));
717 717
718 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5); 718 base::TimeDelta seek_time = base::TimeDelta::FromSeconds(5);
719 719
720 // Seek() isn't called as the demuxer errors out first. 720 // Seek() isn't called as the demuxer errors out first.
721 EXPECT_CALL(*audio_renderer_, Pause(_)) 721 EXPECT_CALL(*audio_renderer_, Pause(_))
722 .WillOnce(RunClosure<0>()); 722 .WillOnce(RunClosure<0>());
723 EXPECT_CALL(*audio_renderer_, Flush(_)) 723 EXPECT_CALL(*audio_renderer_, Flush(_))
724 .WillOnce(RunClosure<0>()); 724 .WillOnce(RunClosure<0>());
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 905
906 PipelineStatus SetInitializeExpectations(TeardownState state, 906 PipelineStatus SetInitializeExpectations(TeardownState state,
907 StopOrError stop_or_error) { 907 StopOrError stop_or_error) {
908 PipelineStatus status = PIPELINE_OK; 908 PipelineStatus status = PIPELINE_OK;
909 base::Closure stop_cb = base::Bind( 909 base::Closure stop_cb = base::Bind(
910 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); 910 &CallbackHelper::OnStop, base::Unretained(&callbacks_));
911 911
912 if (state == kInitDemuxer) { 912 if (state == kInitDemuxer) {
913 if (stop_or_error == kStop) { 913 if (stop_or_error == kStop) {
914 EXPECT_CALL(*demuxer_, Initialize(_, _)) 914 EXPECT_CALL(*demuxer_, Initialize(_, _))
915 .WillOnce(DoAll(Stop(pipeline_, stop_cb), 915 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb),
916 RunCallback<1>(PIPELINE_OK))); 916 RunCallback<1>(PIPELINE_OK)));
917 EXPECT_CALL(callbacks_, OnStop()); 917 EXPECT_CALL(callbacks_, OnStop());
918 } else { 918 } else {
919 status = DEMUXER_ERROR_COULD_NOT_OPEN; 919 status = DEMUXER_ERROR_COULD_NOT_OPEN;
920 EXPECT_CALL(*demuxer_, Initialize(_, _)) 920 EXPECT_CALL(*demuxer_, Initialize(_, _))
921 .WillOnce(RunCallback<1>(status)); 921 .WillOnce(RunCallback<1>(status));
922 } 922 }
923 923
924 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); 924 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>());
925 return status; 925 return status;
926 } 926 }
927 927
928 CreateAudioStream(); 928 CreateAudioStream();
929 CreateVideoStream(); 929 CreateVideoStream();
930 MockDemuxerStreamVector streams; 930 MockDemuxerStreamVector streams;
931 streams.push_back(audio_stream()); 931 streams.push_back(audio_stream());
932 streams.push_back(video_stream()); 932 streams.push_back(video_stream());
933 InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000)); 933 InitializeDemuxer(&streams, base::TimeDelta::FromSeconds(3000));
934 934
935 if (state == kInitAudioRenderer) { 935 if (state == kInitAudioRenderer) {
936 if (stop_or_error == kStop) { 936 if (stop_or_error == kStop) {
937 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _)) 937 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _))
938 .WillOnce(DoAll(Stop(pipeline_, stop_cb), 938 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb),
939 RunCallback<1>(PIPELINE_OK))); 939 RunCallback<1>(PIPELINE_OK)));
940 EXPECT_CALL(callbacks_, OnStop()); 940 EXPECT_CALL(callbacks_, OnStop());
941 } else { 941 } else {
942 status = PIPELINE_ERROR_INITIALIZATION_FAILED; 942 status = PIPELINE_ERROR_INITIALIZATION_FAILED;
943 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _)) 943 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _))
944 .WillOnce(RunCallback<1>(status)); 944 .WillOnce(RunCallback<1>(status));
945 } 945 }
946 946
947 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); 947 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>());
948 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); 948 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>());
949 return status; 949 return status;
950 } 950 }
951 951
952 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _)) 952 EXPECT_CALL(*audio_renderer_, Initialize(_, _, _, _, _, _, _, _))
953 .WillOnce(RunCallback<1>(PIPELINE_OK)); 953 .WillOnce(RunCallback<1>(PIPELINE_OK));
954 954
955 if (state == kInitVideoRenderer) { 955 if (state == kInitVideoRenderer) {
956 if (stop_or_error == kStop) { 956 if (stop_or_error == kStop) {
957 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) 957 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _))
958 .WillOnce(DoAll(Stop(pipeline_, stop_cb), 958 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb),
959 RunCallback<1>(PIPELINE_OK))); 959 RunCallback<1>(PIPELINE_OK)));
960 EXPECT_CALL(callbacks_, OnStop()); 960 EXPECT_CALL(callbacks_, OnStop());
961 } else { 961 } else {
962 status = PIPELINE_ERROR_INITIALIZATION_FAILED; 962 status = PIPELINE_ERROR_INITIALIZATION_FAILED;
963 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _)) 963 EXPECT_CALL(*video_renderer_, Initialize(_, _, _, _, _, _, _, _, _))
964 .WillOnce(RunCallback<1>(status)); 964 .WillOnce(RunCallback<1>(status));
965 } 965 }
966 966
967 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>()); 967 EXPECT_CALL(*demuxer_, Stop(_)).WillOnce(RunClosure<0>());
968 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>()); 968 EXPECT_CALL(*audio_renderer_, Stop(_)).WillOnce(RunClosure<0>());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1017 1017
1018 PipelineStatus SetSeekExpectations(TeardownState state, 1018 PipelineStatus SetSeekExpectations(TeardownState state,
1019 StopOrError stop_or_error) { 1019 StopOrError stop_or_error) {
1020 PipelineStatus status = PIPELINE_OK; 1020 PipelineStatus status = PIPELINE_OK;
1021 base::Closure stop_cb = base::Bind( 1021 base::Closure stop_cb = base::Bind(
1022 &CallbackHelper::OnStop, base::Unretained(&callbacks_)); 1022 &CallbackHelper::OnStop, base::Unretained(&callbacks_));
1023 1023
1024 if (state == kPausing) { 1024 if (state == kPausing) {
1025 if (stop_or_error == kStop) { 1025 if (stop_or_error == kStop) {
1026 EXPECT_CALL(*audio_renderer_, Pause(_)) 1026 EXPECT_CALL(*audio_renderer_, Pause(_))
1027 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure<0>())); 1027 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), RunClosure<0>()));
1028 } else { 1028 } else {
1029 status = PIPELINE_ERROR_READ; 1029 status = PIPELINE_ERROR_READ;
1030 EXPECT_CALL(*audio_renderer_, Pause(_)) 1030 EXPECT_CALL(*audio_renderer_, Pause(_)).WillOnce(
1031 .WillOnce(DoAll(SetError(pipeline_, status), RunClosure<0>())); 1031 DoAll(SetError(pipeline_.get(), status), RunClosure<0>()));
1032 } 1032 }
1033 1033
1034 return status; 1034 return status;
1035 } 1035 }
1036 1036
1037 EXPECT_CALL(*audio_renderer_, Pause(_)).WillOnce(RunClosure<0>()); 1037 EXPECT_CALL(*audio_renderer_, Pause(_)).WillOnce(RunClosure<0>());
1038 EXPECT_CALL(*video_renderer_, Pause(_)).WillOnce(RunClosure<0>()); 1038 EXPECT_CALL(*video_renderer_, Pause(_)).WillOnce(RunClosure<0>());
1039 1039
1040 if (state == kFlushing) { 1040 if (state == kFlushing) {
1041 if (stop_or_error == kStop) { 1041 if (stop_or_error == kStop) {
1042 EXPECT_CALL(*audio_renderer_, Flush(_)) 1042 EXPECT_CALL(*audio_renderer_, Flush(_))
1043 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure<0>())); 1043 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), RunClosure<0>()));
1044 } else { 1044 } else {
1045 status = PIPELINE_ERROR_READ; 1045 status = PIPELINE_ERROR_READ;
1046 EXPECT_CALL(*audio_renderer_, Flush(_)) 1046 EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(
1047 .WillOnce(DoAll(SetError(pipeline_, status), RunClosure<0>())); 1047 DoAll(SetError(pipeline_.get(), status), RunClosure<0>()));
1048 } 1048 }
1049 1049
1050 return status; 1050 return status;
1051 } 1051 }
1052 1052
1053 EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(RunClosure<0>()); 1053 EXPECT_CALL(*audio_renderer_, Flush(_)).WillOnce(RunClosure<0>());
1054 EXPECT_CALL(*video_renderer_, Flush(_)).WillOnce(RunClosure<0>()); 1054 EXPECT_CALL(*video_renderer_, Flush(_)).WillOnce(RunClosure<0>());
1055 1055
1056 if (state == kSeeking) { 1056 if (state == kSeeking) {
1057 if (stop_or_error == kStop) { 1057 if (stop_or_error == kStop) {
1058 EXPECT_CALL(*demuxer_, Seek(_, _)) 1058 EXPECT_CALL(*demuxer_, Seek(_, _))
1059 .WillOnce(DoAll(Stop(pipeline_, stop_cb), 1059 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb),
1060 RunCallback<1>(PIPELINE_OK))); 1060 RunCallback<1>(PIPELINE_OK)));
1061 } else { 1061 } else {
1062 status = PIPELINE_ERROR_READ; 1062 status = PIPELINE_ERROR_READ;
1063 EXPECT_CALL(*demuxer_, Seek(_, _)) 1063 EXPECT_CALL(*demuxer_, Seek(_, _))
1064 .WillOnce(RunCallback<1>(status)); 1064 .WillOnce(RunCallback<1>(status));
1065 } 1065 }
1066 1066
1067 return status; 1067 return status;
1068 } 1068 }
1069 1069
1070 EXPECT_CALL(*demuxer_, Seek(_, _)) 1070 EXPECT_CALL(*demuxer_, Seek(_, _))
1071 .WillOnce(RunCallback<1>(PIPELINE_OK)); 1071 .WillOnce(RunCallback<1>(PIPELINE_OK));
1072 1072
1073 if (state == kPrerolling) { 1073 if (state == kPrerolling) {
1074 if (stop_or_error == kStop) { 1074 if (stop_or_error == kStop) {
1075 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) 1075 EXPECT_CALL(*audio_renderer_, Preroll(_, _))
1076 .WillOnce(DoAll(Stop(pipeline_, stop_cb), 1076 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb),
1077 RunCallback<1>(PIPELINE_OK))); 1077 RunCallback<1>(PIPELINE_OK)));
1078 } else { 1078 } else {
1079 status = PIPELINE_ERROR_READ; 1079 status = PIPELINE_ERROR_READ;
1080 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) 1080 EXPECT_CALL(*audio_renderer_, Preroll(_, _))
1081 .WillOnce(RunCallback<1>(status)); 1081 .WillOnce(RunCallback<1>(status));
1082 } 1082 }
1083 1083
1084 return status; 1084 return status;
1085 } 1085 }
1086 1086
1087 EXPECT_CALL(*audio_renderer_, Preroll(_, _)) 1087 EXPECT_CALL(*audio_renderer_, Preroll(_, _))
1088 .WillOnce(RunCallback<1>(PIPELINE_OK)); 1088 .WillOnce(RunCallback<1>(PIPELINE_OK));
1089 EXPECT_CALL(*video_renderer_, Preroll(_, _)) 1089 EXPECT_CALL(*video_renderer_, Preroll(_, _))
1090 .WillOnce(RunCallback<1>(PIPELINE_OK)); 1090 .WillOnce(RunCallback<1>(PIPELINE_OK));
1091 1091
1092 // Playback rate and volume are updated prior to starting. 1092 // Playback rate and volume are updated prior to starting.
1093 EXPECT_CALL(*demuxer_, SetPlaybackRate(0.0f)); 1093 EXPECT_CALL(*demuxer_, SetPlaybackRate(0.0f));
1094 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f)); 1094 EXPECT_CALL(*audio_renderer_, SetPlaybackRate(0.0f));
1095 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f)); 1095 EXPECT_CALL(*video_renderer_, SetPlaybackRate(0.0f));
1096 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f)); 1096 EXPECT_CALL(*audio_renderer_, SetVolume(1.0f));
1097 1097
1098 if (state == kStarting) { 1098 if (state == kStarting) {
1099 if (stop_or_error == kStop) { 1099 if (stop_or_error == kStop) {
1100 EXPECT_CALL(*audio_renderer_, Play(_)) 1100 EXPECT_CALL(*audio_renderer_, Play(_))
1101 .WillOnce(DoAll(Stop(pipeline_, stop_cb), RunClosure<0>())); 1101 .WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), RunClosure<0>()));
1102 } else { 1102 } else {
1103 status = PIPELINE_ERROR_READ; 1103 status = PIPELINE_ERROR_READ;
1104 EXPECT_CALL(*audio_renderer_, Play(_)) 1104 EXPECT_CALL(*audio_renderer_, Play(_)).WillOnce(
1105 .WillOnce(DoAll(SetError(pipeline_, status), RunClosure<0>())); 1105 DoAll(SetError(pipeline_.get(), status), RunClosure<0>()));
1106 } 1106 }
1107 return status; 1107 return status;
1108 } 1108 }
1109 1109
1110 NOTREACHED() << "State not supported: " << state; 1110 NOTREACHED() << "State not supported: " << state;
1111 return status; 1111 return status;
1112 } 1112 }
1113 1113
1114 void DoStopOrError(StopOrError stop_or_error) { 1114 void DoStopOrError(StopOrError stop_or_error) {
1115 InSequence s; 1115 InSequence s;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer); 1152 INSTANTIATE_TEARDOWN_TEST(Error, InitAudioRenderer);
1153 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer); 1153 INSTANTIATE_TEARDOWN_TEST(Error, InitVideoRenderer);
1154 INSTANTIATE_TEARDOWN_TEST(Error, Pausing); 1154 INSTANTIATE_TEARDOWN_TEST(Error, Pausing);
1155 INSTANTIATE_TEARDOWN_TEST(Error, Flushing); 1155 INSTANTIATE_TEARDOWN_TEST(Error, Flushing);
1156 INSTANTIATE_TEARDOWN_TEST(Error, Seeking); 1156 INSTANTIATE_TEARDOWN_TEST(Error, Seeking);
1157 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling); 1157 INSTANTIATE_TEARDOWN_TEST(Error, Prerolling);
1158 INSTANTIATE_TEARDOWN_TEST(Error, Starting); 1158 INSTANTIATE_TEARDOWN_TEST(Error, Starting);
1159 INSTANTIATE_TEARDOWN_TEST(Error, Playing); 1159 INSTANTIATE_TEARDOWN_TEST(Error, Playing);
1160 1160
1161 } // namespace media 1161 } // namespace media
OLDNEW
« no previous file with comments | « media/base/pipeline.cc ('k') | media/filters/pipeline_integration_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698