Chromium Code Reviews| Index: media/base/pipeline_unittest.cc |
| diff --git a/media/base/pipeline_unittest.cc b/media/base/pipeline_unittest.cc |
| index 68e4590175d8bafb907e0a84b3eea3361a92d371..cf4b2f0729674993d3b4563381cfcd8ff13f1730 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(TrampolineRunCallback, |
|
xhwang
2015/01/16 23:09:07
How about PostCallback?
DaleCurtis
2015/01/20 21:37:43
Done.
|
| + HAS_1_TEMPLATE_PARAMS(int, k), |
| + AND_0_VALUE_PARAMS()) { |
| + return base::MessageLoop::current()->PostTask(FROM_HERE, |
| + ::std::tr1::get<k>(args)); |
|
xhwang
2015/01/16 23:09:07
worth adding to media/base/gmock_callback_support.
DaleCurtis
2015/01/20 21:37:43
If we see this pattern elsewhere, maybe, but these
xhwang
2015/01/20 23:00:38
\o/ Acknowledged.
|
| +} |
| + |
| +ACTION_TEMPLATE(TrampolineRunCallback, |
| + 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))); |
| + TrampolineRunCallback<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>())); |
| + TrampolineRunCallback<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(TrampolineRunCallback<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(TrampolineRunCallback<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(TrampolineRunCallback<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))); |
| + TrampolineRunCallback<1>(PIPELINE_OK))); |
| ExpectPipelineStopAndDestroyPipeline(); |
| } else { |
| status = DEMUXER_ERROR_COULD_NOT_OPEN; |
| EXPECT_CALL(*demuxer_, Initialize(_, _, _)) |
| - .WillOnce(RunCallback<1>(status)); |
| + .WillOnce(TrampolineRunCallback<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>())); |
| + TrampolineRunCallback<1>())); |
| ExpectPipelineStopAndDestroyPipeline(); |
| } else { |
| status = PIPELINE_ERROR_INITIALIZATION_FAILED; |
| EXPECT_CALL(*renderer_, Initialize(_, _, _, _, _, _, _)) |
| - .WillOnce(DoAll(RunCallback<6>(status), RunCallback<1>())); |
| + .WillOnce( |
| + DoAll(RunCallback<6>(status), TrampolineRunCallback<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>())); |
| + TrampolineRunCallback<1>())); |
| EXPECT_CALL(callbacks_, OnMetadata(_)); |