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

Side by Side Diff: media/test/pipeline_integration_test_base.cc

Issue 2086353002: Remove calls to deprecated MessageLoop methods in media. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 5 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
« no previous file with comments | « media/renderers/video_renderer_impl_unittest.cc ('k') | no next file » | 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 "media/test/pipeline_integration_test_base.h" 5 #include "media/test/pipeline_integration_test_base.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/memory/scoped_vector.h" 11 #include "base/memory/scoped_vector.h"
12 #include "base/run_loop.h"
13 #include "base/single_thread_task_runner.h"
12 #include "media/base/cdm_context.h" 14 #include "media/base/cdm_context.h"
13 #include "media/base/media_log.h" 15 #include "media/base/media_log.h"
14 #include "media/base/media_tracks.h" 16 #include "media/base/media_tracks.h"
15 #include "media/base/test_data_util.h" 17 #include "media/base/test_data_util.h"
16 #include "media/filters/chunk_demuxer.h" 18 #include "media/filters/chunk_demuxer.h"
17 #if !defined(MEDIA_DISABLE_FFMPEG) 19 #if !defined(MEDIA_DISABLE_FFMPEG)
18 #include "media/filters/ffmpeg_audio_decoder.h" 20 #include "media/filters/ffmpeg_audio_decoder.h"
19 #include "media/filters/ffmpeg_demuxer.h" 21 #include "media/filters/ffmpeg_demuxer.h"
20 #include "media/filters/ffmpeg_video_decoder.h" 22 #include "media/filters/ffmpeg_video_decoder.h"
21 #endif 23 #endif
(...skipping 28 matching lines...) Expand all
50 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), 52 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN),
51 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED) { 53 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED) {
52 base::MD5Init(&md5_context_); 54 base::MD5Init(&md5_context_);
53 } 55 }
54 56
55 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { 57 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() {
56 if (pipeline_->IsRunning()) 58 if (pipeline_->IsRunning())
57 Stop(); 59 Stop();
58 60
59 pipeline_.reset(); 61 pipeline_.reset();
60 message_loop_.RunUntilIdle(); 62 base::RunLoop().RunUntilIdle();
61 } 63 }
62 64
63 // TODO(xhwang): Method definitions in this file needs to be reordered. 65 // TODO(xhwang): Method definitions in this file needs to be reordered.
64 66
65 void PipelineIntegrationTestBase::OnSeeked(base::TimeDelta seek_time, 67 void PipelineIntegrationTestBase::OnSeeked(base::TimeDelta seek_time,
66 PipelineStatus status) { 68 PipelineStatus status) {
67 EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); 69 EXPECT_EQ(seek_time, pipeline_->GetMediaTime());
68 pipeline_status_ = status; 70 pipeline_status_ = status;
69 } 71 }
70 72
71 void PipelineIntegrationTestBase::OnStatusCallback(PipelineStatus status) { 73 void PipelineIntegrationTestBase::OnStatusCallback(PipelineStatus status) {
72 pipeline_status_ = status; 74 pipeline_status_ = status;
73 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 75 message_loop_.task_runner()->PostTask(
76 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
74 } 77 }
75 78
76 void PipelineIntegrationTestBase::DemuxerEncryptedMediaInitDataCB( 79 void PipelineIntegrationTestBase::DemuxerEncryptedMediaInitDataCB(
77 EmeInitDataType type, 80 EmeInitDataType type,
78 const std::vector<uint8_t>& init_data) { 81 const std::vector<uint8_t>& init_data) {
79 DCHECK(!init_data.empty()); 82 DCHECK(!init_data.empty());
80 CHECK(!encrypted_media_init_data_cb_.is_null()); 83 CHECK(!encrypted_media_init_data_cb_.is_null());
81 encrypted_media_init_data_cb_.Run(type, init_data); 84 encrypted_media_init_data_cb_.Run(type, init_data);
82 } 85 }
83 86
84 void PipelineIntegrationTestBase::DemuxerMediaTracksUpdatedCB( 87 void PipelineIntegrationTestBase::DemuxerMediaTracksUpdatedCB(
85 std::unique_ptr<MediaTracks> tracks) { 88 std::unique_ptr<MediaTracks> tracks) {
86 CHECK(tracks); 89 CHECK(tracks);
87 CHECK_GT(tracks->tracks().size(), 0u); 90 CHECK_GT(tracks->tracks().size(), 0u);
88 91
89 // Verify that track ids are unique. 92 // Verify that track ids are unique.
90 std::set<MediaTrack::Id> track_ids; 93 std::set<MediaTrack::Id> track_ids;
91 for (const auto& track : tracks->tracks()) { 94 for (const auto& track : tracks->tracks()) {
92 EXPECT_EQ(track_ids.end(), track_ids.find(track->id())); 95 EXPECT_EQ(track_ids.end(), track_ids.find(track->id()));
93 track_ids.insert(track->id()); 96 track_ids.insert(track->id());
94 } 97 }
95 } 98 }
96 99
97 void PipelineIntegrationTestBase::OnEnded() { 100 void PipelineIntegrationTestBase::OnEnded() {
98 DCHECK(!ended_); 101 DCHECK(!ended_);
99 ended_ = true; 102 ended_ = true;
100 pipeline_status_ = PIPELINE_OK; 103 pipeline_status_ = PIPELINE_OK;
101 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 104 message_loop_.task_runner()->PostTask(
105 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
102 } 106 }
103 107
104 bool PipelineIntegrationTestBase::WaitUntilOnEnded() { 108 bool PipelineIntegrationTestBase::WaitUntilOnEnded() {
105 if (ended_) 109 if (ended_)
106 return (pipeline_status_ == PIPELINE_OK); 110 return (pipeline_status_ == PIPELINE_OK);
107 message_loop_.Run(); 111 base::RunLoop().Run();
108 EXPECT_TRUE(ended_); 112 EXPECT_TRUE(ended_);
109 return ended_ && (pipeline_status_ == PIPELINE_OK); 113 return ended_ && (pipeline_status_ == PIPELINE_OK);
110 } 114 }
111 115
112 PipelineStatus PipelineIntegrationTestBase::WaitUntilEndedOrError() { 116 PipelineStatus PipelineIntegrationTestBase::WaitUntilEndedOrError() {
113 if (ended_ || pipeline_status_ != PIPELINE_OK) 117 if (ended_ || pipeline_status_ != PIPELINE_OK)
114 return pipeline_status_; 118 return pipeline_status_;
115 message_loop_.Run(); 119 base::RunLoop().Run();
116 return pipeline_status_; 120 return pipeline_status_;
117 } 121 }
118 122
119 void PipelineIntegrationTestBase::OnError(PipelineStatus status) { 123 void PipelineIntegrationTestBase::OnError(PipelineStatus status) {
120 DCHECK_NE(status, PIPELINE_OK); 124 DCHECK_NE(status, PIPELINE_OK);
121 pipeline_status_ = status; 125 pipeline_status_ = status;
122 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 126 message_loop_.task_runner()->PostTask(
127 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
123 } 128 }
124 129
125 PipelineStatus PipelineIntegrationTestBase::StartInternal( 130 PipelineStatus PipelineIntegrationTestBase::StartInternal(
126 std::unique_ptr<DataSource> data_source, 131 std::unique_ptr<DataSource> data_source,
127 CdmContext* cdm_context, 132 CdmContext* cdm_context,
128 uint8_t test_type) { 133 uint8_t test_type) {
129 hashing_enabled_ = test_type & kHashed; 134 hashing_enabled_ = test_type & kHashed;
130 clockless_playback_ = test_type & kClockless; 135 clockless_playback_ = test_type & kClockless;
131 136
132 EXPECT_CALL(*this, OnMetadata(_)) 137 EXPECT_CALL(*this, OnMetadata(_))
(...skipping 15 matching lines...) Expand all
148 base::Unretained(this))); 153 base::Unretained(this)));
149 } 154 }
150 155
151 // Should never be called as the required decryption keys for the encrypted 156 // Should never be called as the required decryption keys for the encrypted
152 // media files are provided in advance. 157 // media files are provided in advance.
153 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); 158 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0);
154 159
155 pipeline_->Start(demuxer_.get(), CreateRenderer(), this, 160 pipeline_->Start(demuxer_.get(), CreateRenderer(), this,
156 base::Bind(&PipelineIntegrationTestBase::OnStatusCallback, 161 base::Bind(&PipelineIntegrationTestBase::OnStatusCallback,
157 base::Unretained(this))); 162 base::Unretained(this)));
158 message_loop_.Run(); 163 base::RunLoop().Run();
159 return pipeline_status_; 164 return pipeline_status_;
160 } 165 }
161 166
162 PipelineStatus PipelineIntegrationTestBase::StartWithFile( 167 PipelineStatus PipelineIntegrationTestBase::StartWithFile(
163 const std::string& filename, 168 const std::string& filename,
164 CdmContext* cdm_context, 169 CdmContext* cdm_context,
165 uint8_t test_type) { 170 uint8_t test_type) {
166 std::unique_ptr<FileDataSource> file_data_source(new FileDataSource()); 171 std::unique_ptr<FileDataSource> file_data_source(new FileDataSource());
167 base::FilePath file_path(GetTestDataFilePath(filename)); 172 base::FilePath file_path(GetTestDataFilePath(filename));
168 CHECK(file_data_source->Initialize(file_path)) << "Is " << file_path.value() 173 CHECK(file_data_source->Initialize(file_path)) << "Is " << file_path.value()
(...skipping 30 matching lines...) Expand all
199 pipeline_->SetPlaybackRate(0); 204 pipeline_->SetPlaybackRate(0);
200 } 205 }
201 206
202 bool PipelineIntegrationTestBase::Seek(base::TimeDelta seek_time) { 207 bool PipelineIntegrationTestBase::Seek(base::TimeDelta seek_time) {
203 ended_ = false; 208 ended_ = false;
204 209
205 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) 210 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH))
206 .WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow)); 211 .WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow));
207 pipeline_->Seek(seek_time, base::Bind(&PipelineIntegrationTestBase::OnSeeked, 212 pipeline_->Seek(seek_time, base::Bind(&PipelineIntegrationTestBase::OnSeeked,
208 base::Unretained(this), seek_time)); 213 base::Unretained(this), seek_time));
209 message_loop_.Run(); 214 base::RunLoop().Run();
210 return (pipeline_status_ == PIPELINE_OK); 215 return (pipeline_status_ == PIPELINE_OK);
211 } 216 }
212 217
213 bool PipelineIntegrationTestBase::Suspend() { 218 bool PipelineIntegrationTestBase::Suspend() {
214 pipeline_->Suspend(base::Bind(&PipelineIntegrationTestBase::OnStatusCallback, 219 pipeline_->Suspend(base::Bind(&PipelineIntegrationTestBase::OnStatusCallback,
215 base::Unretained(this))); 220 base::Unretained(this)));
216 message_loop_.Run(); 221 base::RunLoop().Run();
217 return (pipeline_status_ == PIPELINE_OK); 222 return (pipeline_status_ == PIPELINE_OK);
218 } 223 }
219 224
220 bool PipelineIntegrationTestBase::Resume(base::TimeDelta seek_time) { 225 bool PipelineIntegrationTestBase::Resume(base::TimeDelta seek_time) {
221 ended_ = false; 226 ended_ = false;
222 227
223 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) 228 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH))
224 .WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow)); 229 .WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow));
225 pipeline_->Resume(CreateRenderer(), seek_time, 230 pipeline_->Resume(CreateRenderer(), seek_time,
226 base::Bind(&PipelineIntegrationTestBase::OnSeeked, 231 base::Bind(&PipelineIntegrationTestBase::OnSeeked,
227 base::Unretained(this), seek_time)); 232 base::Unretained(this), seek_time));
228 message_loop_.Run(); 233 base::RunLoop().Run();
229 return (pipeline_status_ == PIPELINE_OK); 234 return (pipeline_status_ == PIPELINE_OK);
230 } 235 }
231 236
232 void PipelineIntegrationTestBase::Stop() { 237 void PipelineIntegrationTestBase::Stop() {
233 DCHECK(pipeline_->IsRunning()); 238 DCHECK(pipeline_->IsRunning());
234 pipeline_->Stop(); 239 pipeline_->Stop();
235 message_loop_.RunUntilIdle(); 240 base::RunLoop().RunUntilIdle();
236 } 241 }
237 242
238 void PipelineIntegrationTestBase::FailTest(PipelineStatus status) { 243 void PipelineIntegrationTestBase::FailTest(PipelineStatus status) {
239 DCHECK_NE(PIPELINE_OK, status); 244 DCHECK_NE(PIPELINE_OK, status);
240 OnError(status); 245 OnError(status);
241 } 246 }
242 247
243 void PipelineIntegrationTestBase::QuitAfterCurrentTimeTask( 248 void PipelineIntegrationTestBase::QuitAfterCurrentTimeTask(
244 const base::TimeDelta& quit_time) { 249 const base::TimeDelta& quit_time) {
245 if (pipeline_->GetMediaTime() >= quit_time || 250 if (pipeline_->GetMediaTime() >= quit_time ||
246 pipeline_status_ != PIPELINE_OK) { 251 pipeline_status_ != PIPELINE_OK) {
247 message_loop_.QuitWhenIdle(); 252 message_loop_.QuitWhenIdle();
248 return; 253 return;
249 } 254 }
250 255
251 message_loop_.PostDelayedTask( 256 message_loop_.task_runner()->PostDelayedTask(
252 FROM_HERE, 257 FROM_HERE,
253 base::Bind(&PipelineIntegrationTestBase::QuitAfterCurrentTimeTask, 258 base::Bind(&PipelineIntegrationTestBase::QuitAfterCurrentTimeTask,
254 base::Unretained(this), quit_time), 259 base::Unretained(this), quit_time),
255 base::TimeDelta::FromMilliseconds(10)); 260 base::TimeDelta::FromMilliseconds(10));
256 } 261 }
257 262
258 bool PipelineIntegrationTestBase::WaitUntilCurrentTimeIsAfter( 263 bool PipelineIntegrationTestBase::WaitUntilCurrentTimeIsAfter(
259 const base::TimeDelta& wait_time) { 264 const base::TimeDelta& wait_time) {
260 DCHECK(pipeline_->IsRunning()); 265 DCHECK(pipeline_->IsRunning());
261 DCHECK_GT(pipeline_->GetPlaybackRate(), 0); 266 DCHECK_GT(pipeline_->GetPlaybackRate(), 0);
262 DCHECK(wait_time <= pipeline_->GetMediaDuration()); 267 DCHECK(wait_time <= pipeline_->GetMediaDuration());
263 268
264 message_loop_.PostDelayedTask( 269 message_loop_.task_runner()->PostDelayedTask(
265 FROM_HERE, 270 FROM_HERE,
266 base::Bind(&PipelineIntegrationTestBase::QuitAfterCurrentTimeTask, 271 base::Bind(&PipelineIntegrationTestBase::QuitAfterCurrentTimeTask,
267 base::Unretained(this), wait_time), 272 base::Unretained(this), wait_time),
268 base::TimeDelta::FromMilliseconds(10)); 273 base::TimeDelta::FromMilliseconds(10));
269 message_loop_.Run(); 274 base::RunLoop().Run();
270 return (pipeline_status_ == PIPELINE_OK); 275 return (pipeline_status_ == PIPELINE_OK);
271 } 276 }
272 277
273 void PipelineIntegrationTestBase::CreateDemuxer( 278 void PipelineIntegrationTestBase::CreateDemuxer(
274 std::unique_ptr<DataSource> data_source) { 279 std::unique_ptr<DataSource> data_source) {
275 data_source_ = std::move(data_source); 280 data_source_ = std::move(data_source);
276 281
277 #if !defined(MEDIA_DISABLE_FFMPEG) 282 #if !defined(MEDIA_DISABLE_FFMPEG)
278 demuxer_ = std::unique_ptr<Demuxer>(new FFmpegDemuxer( 283 demuxer_ = std::unique_ptr<Demuxer>(new FFmpegDemuxer(
279 message_loop_.task_runner(), data_source_.get(), 284 message_loop_.task_runner(), data_source_.get(),
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 DCHECK(clockless_playback_); 394 DCHECK(clockless_playback_);
390 return clockless_audio_sink_->render_time(); 395 return clockless_audio_sink_->render_time();
391 } 396 }
392 397
393 base::TimeTicks DummyTickClock::NowTicks() { 398 base::TimeTicks DummyTickClock::NowTicks() {
394 now_ += base::TimeDelta::FromSeconds(60); 399 now_ += base::TimeDelta::FromSeconds(60);
395 return now_; 400 return now_;
396 } 401 }
397 402
398 } // namespace media 403 } // namespace media
OLDNEW
« no previous file with comments | « media/renderers/video_renderer_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698