Index: media/base/pipeline_unittest.cc |
diff --git a/media/base/pipeline_unittest.cc b/media/base/pipeline_unittest.cc |
index 68e4590175d8bafb907e0a84b3eea3361a92d371..d6f1308c2521396b28fab5c901e36ec0d12b0a66 100644 |
--- a/media/base/pipeline_unittest.cc |
+++ b/media/base/pipeline_unittest.cc |
@@ -55,6 +55,20 @@ ACTION_P2(SetBufferingState, cb, buffering_state) { |
cb->Run(buffering_state); |
} |
+ACTION_TEMPLATE(PostCallback, |
+ HAS_1_TEMPLATE_PARAMS(int, k), |
+ AND_0_VALUE_PARAMS()) { |
+ return base::MessageLoop::current()->PostTask(FROM_HERE, |
+ ::std::tr1::get<k>(args)); |
+} |
+ |
+ACTION_TEMPLATE(PostCallback, |
+ HAS_1_TEMPLATE_PARAMS(int, k), |
+ AND_1_VALUE_PARAMS(p0)) { |
+ return base::MessageLoop::current()->PostTask( |
+ FROM_HERE, base::Bind(::std::tr1::get<k>(args), p0)); |
+} |
+ |
// TODO(scherkus): even though some filters are initialized on separate |
// threads these test aren't flaky... why? It's because filters' Initialize() |
// is executed on |message_loop_| and the mock filters instantly call |
@@ -139,7 +153,7 @@ class PipelineTest : public ::testing::Test { |
EXPECT_CALL(callbacks_, OnDurationChange()); |
EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
.WillOnce(DoAll(SetDemuxerProperties(duration), |
- RunCallback<1>(PIPELINE_OK))); |
+ PostCallback<1>(PIPELINE_OK))); |
// Configure the demuxer to return the streams. |
for (size_t i = 0; i < streams->size(); ++i) { |
@@ -166,7 +180,7 @@ class PipelineTest : public ::testing::Test { |
EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
.WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
SaveArg<5>(&ended_cb_), |
- RunCallback<1>())); |
+ PostCallback<1>())); |
EXPECT_CALL(*renderer_, HasAudio()).WillRepeatedly(Return(audio_stream())); |
EXPECT_CALL(*renderer_, HasVideo()).WillRepeatedly(Return(video_stream())); |
} |
@@ -372,7 +386,7 @@ TEST_F(PipelineTest, StopWithoutStart) { |
TEST_F(PipelineTest, StartThenStopImmediately) { |
EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
- .WillOnce(RunCallback<1>(PIPELINE_OK)); |
+ .WillOnce(PostCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*demuxer_, Stop()); |
EXPECT_CALL(callbacks_, OnStart(_)); |
@@ -406,7 +420,7 @@ TEST_F(PipelineTest, DemuxerErrorDuringStop) { |
TEST_F(PipelineTest, URLNotFound) { |
EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
- .WillOnce(RunCallback<1>(PIPELINE_ERROR_URL_NOT_FOUND)); |
+ .WillOnce(PostCallback<1>(PIPELINE_ERROR_URL_NOT_FOUND)); |
EXPECT_CALL(*demuxer_, Stop()); |
StartPipelineAndExpect(PIPELINE_ERROR_URL_NOT_FOUND); |
@@ -414,7 +428,7 @@ TEST_F(PipelineTest, URLNotFound) { |
TEST_F(PipelineTest, NoStreams) { |
EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
- .WillOnce(RunCallback<1>(PIPELINE_OK)); |
+ .WillOnce(PostCallback<1>(PIPELINE_OK)); |
EXPECT_CALL(*demuxer_, Stop()); |
StartPipelineAndExpect(PIPELINE_ERROR_COULD_NOT_RENDER); |
@@ -825,12 +839,12 @@ class PipelineTeardownTest : public PipelineTest { |
if (stop_or_error == kStop) { |
EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
.WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
- RunCallback<1>(PIPELINE_OK))); |
+ PostCallback<1>(PIPELINE_OK))); |
ExpectPipelineStopAndDestroyPipeline(); |
} else { |
status = DEMUXER_ERROR_COULD_NOT_OPEN; |
EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
- .WillOnce(RunCallback<1>(status)); |
+ .WillOnce(PostCallback<1>(status)); |
} |
EXPECT_CALL(*demuxer_, Stop()); |
@@ -851,12 +865,13 @@ class PipelineTeardownTest : public PipelineTest { |
if (stop_or_error == kStop) { |
EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
.WillOnce(DoAll(Stop(pipeline_.get(), stop_cb), |
- RunCallback<1>())); |
+ PostCallback<1>())); |
ExpectPipelineStopAndDestroyPipeline(); |
} else { |
status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
- .WillOnce(DoAll(RunCallback<6>(status), RunCallback<1>())); |
+ .WillOnce( |
+ DoAll(RunCallback<6>(status), PostCallback<1>())); |
} |
EXPECT_CALL(*demuxer_, Stop()); |
@@ -865,7 +880,7 @@ class PipelineTeardownTest : public PipelineTest { |
EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
.WillOnce(DoAll(SaveArg<3>(&buffering_state_cb_), |
- RunCallback<1>())); |
+ PostCallback<1>())); |
EXPECT_CALL(callbacks_, OnMetadata(_)); |