Index: media/capture/video/fake_video_capture_device_unittest.cc |
diff --git a/media/capture/video/fake_video_capture_device_unittest.cc b/media/capture/video/fake_video_capture_device_unittest.cc |
index 21563c0fd9301cbdab0289b45bd938a5fa792ba7..27149232e783954c69cd199bc9f8bf322e8a2a08 100644 |
--- a/media/capture/video/fake_video_capture_device_unittest.cc |
+++ b/media/capture/video/fake_video_capture_device_unittest.cc |
@@ -34,36 +34,62 @@ namespace media { |
namespace { |
-// This class is a Client::Buffer that allocates and frees the requested |size|. |
-class MockBuffer : public VideoCaptureDevice::Client::Buffer { |
+class StubBufferHandle : public VideoCaptureBufferHandle { |
public: |
- MockBuffer(int buffer_id, int frame_feedback_id, size_t mapped_size) |
- : id_(buffer_id), |
- frame_feedback_id_(frame_feedback_id), |
- mapped_size_(mapped_size), |
- data_(new uint8_t[mapped_size]) {} |
- ~MockBuffer() override { delete[] data_; } |
- |
- int id() const override { return id_; } |
- int frame_feedback_id() const override { return frame_feedback_id_; } |
- gfx::Size dimensions() const override { return gfx::Size(); } |
+ StubBufferHandle(size_t mapped_size, uint8_t* data) |
+ : mapped_size_(mapped_size), data_(data) {} |
+ |
size_t mapped_size() const override { return mapped_size_; } |
- void* data(int plane) override { return data_; } |
-#if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS)) |
- base::FileDescriptor AsPlatformFile() override { |
- return base::FileDescriptor(); |
+ uint8_t* data() override { return data_; } |
+ const uint8_t* data() const override { return data_; } |
+ |
+ private: |
+ const size_t mapped_size_; |
+ uint8_t* const data_; |
+}; |
+ |
+class StubBufferHandleProvider |
+ : public VideoCaptureDevice::Client::Buffer::HandleProvider { |
+ public: |
+ StubBufferHandleProvider(size_t mapped_size, uint8_t* data) |
+ : mapped_size_(mapped_size), data_(data) {} |
+ |
+ ~StubBufferHandleProvider() override {} |
+ |
+ mojo::ScopedSharedBufferHandle GetHandleForInterProcessTransit() override { |
+ return mojo::ScopedSharedBufferHandle(); |
+ } |
+ |
+ std::unique_ptr<VideoCaptureBufferHandle> GetHandleForInProcessAccess() |
+ override { |
+ return base::MakeUnique<StubBufferHandle>(mapped_size_, data_); |
} |
-#endif |
- bool IsBackedByVideoFrame() const override { return false; }; |
- scoped_refptr<VideoFrame> GetVideoFrame() override { return nullptr; } |
private: |
- const int id_; |
- const int frame_feedback_id_; |
const size_t mapped_size_; |
uint8_t* const data_; |
}; |
+class StubReadWritePermission |
+ : public VideoCaptureDevice::Client::Buffer::ScopedAccessPermission { |
+ public: |
+ StubReadWritePermission(uint8_t* data) : data_(data) {} |
+ ~StubReadWritePermission() override { delete[] data_; } |
+ |
+ private: |
+ uint8_t* const data_; |
+}; |
+ |
+VideoCaptureDevice::Client::Buffer CreateStubBuffer(int buffer_id, |
+ size_t mapped_size) { |
+ auto buffer = new uint8_t[mapped_size]; |
+ const int arbitrary_frame_feedback_id = 0; |
+ return VideoCaptureDevice::Client::Buffer( |
+ buffer_id, arbitrary_frame_feedback_id, |
+ base::MakeUnique<StubBufferHandleProvider>(mapped_size, buffer), |
+ base::MakeUnique<StubReadWritePermission>(buffer)); |
+}; |
+ |
class MockClient : public VideoCaptureDevice::Client { |
public: |
MOCK_METHOD2(OnError, |
@@ -84,25 +110,24 @@ class MockClient : public VideoCaptureDevice::Client { |
frame_cb_.Run(format); |
} |
// Virtual methods for capturing using Client's Buffers. |
- std::unique_ptr<Buffer> ReserveOutputBuffer(const gfx::Size& dimensions, |
- media::VideoPixelFormat format, |
- media::VideoPixelStorage storage, |
- int frame_feedback_id) override { |
+ Buffer ReserveOutputBuffer(const gfx::Size& dimensions, |
+ media::VideoPixelFormat format, |
+ media::VideoPixelStorage storage, |
+ int frame_feedback_id) override { |
EXPECT_TRUE((format == media::PIXEL_FORMAT_ARGB && |
storage == media::PIXEL_STORAGE_CPU)); |
EXPECT_GT(dimensions.GetArea(), 0); |
const VideoCaptureFormat frame_format(dimensions, 0.0, format); |
- return base::MakeUnique<MockBuffer>(0, frame_feedback_id, |
- frame_format.ImageAllocationSize()); |
+ return CreateStubBuffer(0, frame_format.ImageAllocationSize()); |
} |
- void OnIncomingCapturedBuffer(std::unique_ptr<Buffer> buffer, |
+ void OnIncomingCapturedBuffer(Buffer buffer, |
const VideoCaptureFormat& format, |
base::TimeTicks reference_time, |
base::TimeDelta timestamp) override { |
frame_cb_.Run(format); |
} |
void OnIncomingCapturedBufferExt( |
- std::unique_ptr<Buffer> buffer, |
+ Buffer buffer, |
const VideoCaptureFormat& format, |
base::TimeTicks reference_time, |
base::TimeDelta timestamp, |
@@ -110,12 +135,11 @@ class MockClient : public VideoCaptureDevice::Client { |
const VideoFrameMetadata& additional_metadata) override { |
frame_cb_.Run(format); |
} |
- std::unique_ptr<Buffer> ResurrectLastOutputBuffer( |
- const gfx::Size& dimensions, |
- media::VideoPixelFormat format, |
- media::VideoPixelStorage storage, |
- int frame_feedback_id) override { |
- return std::unique_ptr<Buffer>(); |
+ Buffer ResurrectLastOutputBuffer(const gfx::Size& dimensions, |
+ media::VideoPixelFormat format, |
+ media::VideoPixelStorage storage, |
+ int frame_feedback_id) override { |
+ return Buffer(); |
} |
double GetBufferPoolUtilization() const override { return 0.0; } |