| Index: media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
|
| diff --git a/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc b/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
|
| index 6d891b2487440832c6033556489f8c812eeef785..fed0730f2074dcfd1bfd5c84359848c0f32e607f 100644
|
| --- a/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
|
| +++ b/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc
|
| @@ -253,4 +253,29 @@ TEST_F(GpuMemoryBufferVideoFramePoolTest, CreateOneHardwareNV12Frame) {
|
| EXPECT_EQ(1u, gles2_->gen_textures);
|
| }
|
|
|
| +// AllocateGpuMemoryBuffer can return null (e.g: when the GPU process is down).
|
| +// This test checks that in that case we don't crash and still create the
|
| +// textures.
|
| +TEST_F(GpuMemoryBufferVideoFramePoolTest, AllocateGpuMemoryBufferBFail) {
|
| + scoped_refptr<VideoFrame> software_frame = CreateTestYUVVideoFrame(10);
|
| + scoped_refptr<MockGpuVideoAcceleratorFactories> mock_gpu_factories(
|
| + new MockGpuVideoAcceleratorFactories);
|
| + mock_gpu_factories->SetFailToAllocateGpuMemoryBuffer(true);
|
| + scoped_ptr<GpuMemoryBufferVideoFramePool> gpu_memory_buffer_pool_ =
|
| + make_scoped_ptr(new GpuMemoryBufferVideoFramePool(
|
| + media_task_runner_, copy_task_runner_.get(), mock_gpu_factories));
|
| +
|
| + EXPECT_CALL(*mock_gpu_factories.get(), GetGLES2Interface())
|
| + .WillRepeatedly(testing::Return(gles2_.get()));
|
| +
|
| + scoped_refptr<VideoFrame> frame;
|
| + gpu_memory_buffer_pool_->MaybeCreateHardwareFrame(
|
| + software_frame, base::Bind(MaybeCreateHardwareFrameCallback, &frame));
|
| +
|
| + RunUntilIdle();
|
| +
|
| + EXPECT_NE(software_frame.get(), frame.get());
|
| + EXPECT_EQ(3u, gles2_->gen_textures);
|
| +}
|
| +
|
| } // namespace media
|
|
|