| Index: content/renderer/media/media_stream_video_renderer_sink_unittest.cc
|
| diff --git a/content/renderer/media/media_stream_video_renderer_sink_unittest.cc b/content/renderer/media/media_stream_video_renderer_sink_unittest.cc
|
| index 057f51d4571501f22a0eed99dbd34bbcc26f113c..94a02ccead8e155aed1bbab706f4d38f5195a89b 100644
|
| --- a/content/renderer/media/media_stream_video_renderer_sink_unittest.cc
|
| +++ b/content/renderer/media/media_stream_video_renderer_sink_unittest.cc
|
| @@ -9,6 +9,8 @@
|
| #include "content/renderer/media/media_stream_video_renderer_sink.h"
|
| #include "content/renderer/media/mock_media_stream_registry.h"
|
| #include "media/base/video_frame.h"
|
| +#include "media/renderers/gpu_video_accelerator_factories.h"
|
| +#include "media/renderers/mock_gpu_memory_buffer_video_frame_pool.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/WebKit/public/platform/WebString.h"
|
| @@ -45,7 +47,9 @@ class MediaStreamVideoRendererSinkTest : public testing::Test {
|
| base::Bind(&MediaStreamVideoRendererSinkTest::ErrorCallback,
|
| base::Unretained(this)),
|
| base::Bind(&MediaStreamVideoRendererSinkTest::RepaintCallback,
|
| - base::Unretained(this)));
|
| + base::Unretained(this)),
|
| + message_loop_.task_runner(), message_loop_.task_runner().get(),
|
| + nullptr /* gpu_factories */);
|
|
|
| EXPECT_TRUE(IsInStoppedState());
|
| }
|
| @@ -81,7 +85,7 @@ class MediaStreamVideoRendererSinkTest : public testing::Test {
|
|
|
| // A ChildProcess and a MessageLoopForUI are both needed to fool the Tracks
|
| // and Sources in |registry_| into believing they are on the right threads.
|
| - const base::MessageLoopForUI message_loop_;
|
| + base::MessageLoopForUI message_loop_;
|
| const ChildProcess child_process_;
|
| MockMediaStreamRegistry registry_;
|
|
|
| @@ -120,4 +124,36 @@ TEST_F(MediaStreamVideoRendererSinkTest, EncodeVideoFrames) {
|
| media_stream_video_renderer_sink_->Stop();
|
| }
|
|
|
| +class MediaStreamVideoRendererSinkAsyncAddFrameReadyTest
|
| + : public MediaStreamVideoRendererSinkTest {
|
| + public:
|
| + MediaStreamVideoRendererSinkAsyncAddFrameReadyTest() {
|
| + scoped_ptr<media::GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool(
|
| + new media::MockGpuMemoryBufferVideoFramePool(&frame_ready_cbs_));
|
| + media_stream_video_renderer_sink_->SetGpuMemoryBufferVideoForTesting(
|
| + gpu_memory_buffer_pool.Pass());
|
| + }
|
| +
|
| + protected:
|
| + std::vector<base::Closure> frame_ready_cbs_;
|
| +};
|
| +
|
| +TEST_F(MediaStreamVideoRendererSinkAsyncAddFrameReadyTest,
|
| + CreateHardwareFrames) {
|
| + media_stream_video_renderer_sink_->Start();
|
| +
|
| + InSequence s;
|
| + const scoped_refptr<media::VideoFrame> video_frame =
|
| + media::VideoFrame::CreateBlackFrame(gfx::Size(160, 80));
|
| + OnVideoFrame(video_frame);
|
| + message_loop_.RunUntilIdle();
|
| + ASSERT_EQ(1u, frame_ready_cbs_.size());
|
| +
|
| + EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1);
|
| + frame_ready_cbs_[0].Run();
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + media_stream_video_renderer_sink_->Stop();
|
| +}
|
| +
|
| } // namespace content
|
|
|