Index: media/filters/video_renderer_base_unittest.cc |
diff --git a/media/filters/video_renderer_base_unittest.cc b/media/filters/video_renderer_base_unittest.cc |
index 79b3bf94d3992cdaf0bc6d6ba2ae0c99baaa53be..fdb2202d2d141118d6c54b54d2f3e3cb96d79df0 100644 |
--- a/media/filters/video_renderer_base_unittest.cc |
+++ b/media/filters/video_renderer_base_unittest.cc |
@@ -5,6 +5,7 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
#include "base/callback_helpers.h" |
+#include "base/debug/stack_trace.h" |
#include "base/message_loop.h" |
#include "base/stl_util.h" |
#include "base/stringprintf.h" |
@@ -111,14 +112,18 @@ class VideoRendererBaseTest : public ::testing::Test { |
void InitializeRenderer(PipelineStatus expected) { |
SCOPED_TRACE(base::StringPrintf("InitializeRenderer(%d)", expected)); |
+ WaitableMessageLoopEvent event; |
+ CallInitialize(event.GetPipelineStatusCB()); |
+ event.RunAndWaitForStatus(expected); |
+ } |
+ |
+ void CallInitialize(const PipelineStatusCB& status_cb) { |
VideoRendererBase::VideoDecoderList decoders; |
decoders.push_back(decoder_); |
- |
- WaitableMessageLoopEvent event; |
renderer_->Initialize( |
demuxer_stream_, |
decoders, |
- event.GetPipelineStatusCB(), |
+ status_cb, |
base::Bind(&MockStatisticsCB::OnStatistics, |
base::Unretained(&statistics_cb_object_)), |
base::Bind(&VideoRendererBaseTest::OnTimeUpdate, |
@@ -130,7 +135,6 @@ class VideoRendererBaseTest : public ::testing::Test { |
base::Bind(&VideoRendererBaseTest::GetTime, base::Unretained(this)), |
base::Bind(&VideoRendererBaseTest::GetDuration, |
base::Unretained(this))); |
- event.RunAndWaitForStatus(expected); |
} |
void Play() { |
@@ -368,6 +372,29 @@ TEST_F(VideoRendererBaseTest, Initialize) { |
Shutdown(); |
} |
+static void ExpectNotCalled(PipelineStatus) { |
+ base::debug::StackTrace stack; |
+ ADD_FAILURE() << "Expected callback not to be called\n" << stack.ToString(); |
scherkus (not reviewing)
2013/02/20 08:26:11
I did this to get the stack trace of the callback
|
+} |
+ |
acolwell GONE FROM CHROMIUM
2013/02/20 17:01:14
You should add a test that allows the renderer to
scherkus (not reviewing)
2013/02/21 20:43:54
Done.
|
+TEST_F(VideoRendererBaseTest, InitializeAndStop) { |
+ EXPECT_CALL(*decoder_, Initialize(_, _, _)) |
+ .WillOnce(RunCallback<1>(PIPELINE_OK)); |
+ CallInitialize(base::Bind(&ExpectNotCalled)); |
+ Stop(); |
+ |
+ // ~VideoRendererBase() will CHECK() if we left anything initialized. |
+} |
+ |
+TEST_F(VideoRendererBaseTest, FlushAndStop) { |
+ Initialize(); |
+ Pause(); |
+ renderer_->Flush(base::Bind(&ExpectNotCalled, PIPELINE_OK)); |
+ Stop(); |
+ |
+ // ~VideoRendererBase() will CHECK() if we left anything initialized. |
+} |
+ |
TEST_F(VideoRendererBaseTest, Play) { |
Initialize(); |
Play(); |