| Index: media/filters/ffmpeg_demuxer_unittest.cc
|
| diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
|
| index 9ce865938d8352ab565492e5a631b81354a7ea1e..e0dc371d26ca0cb18e3445d949001482a55fc4a5 100644
|
| --- a/media/filters/ffmpeg_demuxer_unittest.cc
|
| +++ b/media/filters/ffmpeg_demuxer_unittest.cc
|
| @@ -11,8 +11,8 @@
|
| #include "base/file_util.h"
|
| #include "base/path_service.h"
|
| #include "base/threading/thread.h"
|
| -#include "media/base/mock_callback.h"
|
| #include "media/base/mock_demuxer_host.h"
|
| +#include "media/base/test_helpers.h"
|
| #include "media/ffmpeg/ffmpeg_common.h"
|
| #include "media/filters/ffmpeg_demuxer.h"
|
| #include "media/filters/file_data_source.h"
|
| @@ -87,8 +87,9 @@ class FFmpegDemuxerTest : public testing::Test {
|
|
|
| void InitializeDemuxer() {
|
| EXPECT_CALL(host_, SetDuration(_));
|
| - demuxer_->Initialize(&host_, NewStatusCB(PIPELINE_OK));
|
| - message_loop_.Run();
|
| + WaitableMessageLoopEvent event;
|
| + demuxer_->Initialize(&host_, event.GetPipelineStatusCB());
|
| + event.RunAndWaitForStatus(PIPELINE_OK);
|
| }
|
|
|
| MOCK_METHOD2(OnReadDoneCalled, void(int, int64));
|
| @@ -122,18 +123,6 @@ class FFmpegDemuxerTest : public testing::Test {
|
| location, size, timestampInMicroseconds);
|
| }
|
|
|
| - PipelineStatusCB NewStatusCB(PipelineStatus expected) {
|
| - return base::Bind(&FFmpegDemuxerTest::OnStatusDone,
|
| - base::Unretained(this), expected);
|
| - }
|
| -
|
| - void OnStatusDone(PipelineStatus expected, PipelineStatus status) {
|
| - EXPECT_EQ(expected, status);
|
| -
|
| - DCHECK_EQ(&message_loop_, MessageLoop::current());
|
| - message_loop_.PostTask(FROM_HERE, MessageLoop::QuitWhenIdleClosure());
|
| - }
|
| -
|
| // Accessor to demuxer internals.
|
| void set_duration_known(bool duration_known) {
|
| demuxer_->duration_known_ = duration_known;
|
| @@ -192,8 +181,9 @@ class FFmpegDemuxerTest : public testing::Test {
|
| TEST_F(FFmpegDemuxerTest, Initialize_OpenFails) {
|
| // Simulate avformat_open_input() failing.
|
| CreateDemuxer("ten_byte_file");
|
| - demuxer_->Initialize(&host_, NewStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN));
|
| - message_loop_.Run();
|
| + WaitableMessageLoopEvent event;
|
| + demuxer_->Initialize(&host_, event.GetPipelineStatusCB());
|
| + event.RunAndWaitForStatus(DEMUXER_ERROR_COULD_NOT_OPEN);
|
| }
|
|
|
| // TODO(acolwell): Uncomment this test when we discover a file that passes
|
| @@ -209,15 +199,17 @@ TEST_F(FFmpegDemuxerTest, Initialize_OpenFails) {
|
| TEST_F(FFmpegDemuxerTest, Initialize_NoStreams) {
|
| // Open a file with no streams whatsoever.
|
| CreateDemuxer("no_streams.webm");
|
| - demuxer_->Initialize(&host_, NewStatusCB(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
|
| - message_loop_.Run();
|
| + WaitableMessageLoopEvent event;
|
| + demuxer_->Initialize(&host_, event.GetPipelineStatusCB());
|
| + event.RunAndWaitForStatus(DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
|
| }
|
|
|
| TEST_F(FFmpegDemuxerTest, Initialize_NoAudioVideo) {
|
| // Open a file containing streams but none of which are audio/video streams.
|
| CreateDemuxer("no_audio_video.webm");
|
| - demuxer_->Initialize(&host_, NewStatusCB(DEMUXER_ERROR_NO_SUPPORTED_STREAMS));
|
| - message_loop_.Run();
|
| + WaitableMessageLoopEvent event;
|
| + demuxer_->Initialize(&host_, event.GetPipelineStatusCB());
|
| + event.RunAndWaitForStatus(DEMUXER_ERROR_NO_SUPPORTED_STREAMS);
|
| }
|
|
|
| TEST_F(FFmpegDemuxerTest, Initialize_Successful) {
|
| @@ -380,9 +372,10 @@ TEST_F(FFmpegDemuxerTest, Seek) {
|
| message_loop_.Run();
|
|
|
| // Issue a simple forward seek, which should discard queued packets.
|
| + WaitableMessageLoopEvent event;
|
| demuxer_->Seek(base::TimeDelta::FromMicroseconds(1000000),
|
| - NewStatusCB(PIPELINE_OK));
|
| - message_loop_.Run();
|
| + event.GetPipelineStatusCB());
|
| + event.RunAndWaitForStatus(PIPELINE_OK);
|
|
|
| // Audio read #1.
|
| audio->Read(NewReadCB(FROM_HERE, 145, 803000));
|
| @@ -553,9 +546,10 @@ TEST_F(FFmpegDemuxerTest, SeekWithCuesBeforeFirstCluster) {
|
| message_loop_.Run();
|
|
|
| // Issue a simple forward seek, which should discard queued packets.
|
| + WaitableMessageLoopEvent event;
|
| demuxer_->Seek(base::TimeDelta::FromMicroseconds(2500000),
|
| - NewStatusCB(PIPELINE_OK));
|
| - message_loop_.Run();
|
| + event.GetPipelineStatusCB());
|
| + event.RunAndWaitForStatus(PIPELINE_OK);
|
|
|
| // Audio read #1.
|
| audio->Read(NewReadCB(FROM_HERE, 40, 2403000));
|
|
|