Index: content/renderer/media/video_capture_message_filter_unittest.cc |
diff --git a/content/renderer/media/video_capture_message_filter_unittest.cc b/content/renderer/media/video_capture_message_filter_unittest.cc |
index 1298e11c798a6c94b4ef40e38bba1d3b0db6402a..72fd23554a77039e0dde1085466bf5776b27f929 100644 |
--- a/content/renderer/media/video_capture_message_filter_unittest.cc |
+++ b/content/renderer/media/video_capture_message_filter_unittest.cc |
@@ -12,10 +12,13 @@ |
using ::testing::_; |
using ::testing::AnyNumber; |
+using ::testing::DoAll; |
+using ::testing::Invoke; |
using ::testing::Mock; |
using ::testing::Return; |
using ::testing::SaveArg; |
using ::testing::StrictMock; |
+using ::testing::WithArg; |
namespace content { |
namespace { |
@@ -29,16 +32,18 @@ class MockVideoCaptureDelegate : public VideoCaptureMessageFilter::Delegate { |
int length, |
int buffer_id)); |
MOCK_METHOD1(OnBufferDestroyed, void(int buffer_id)); |
- MOCK_METHOD4(OnBufferReceived, |
+ MOCK_METHOD5(OnBufferReceived, |
void(int buffer_id, |
- const media::VideoCaptureFormat& format, |
+ const gfx::Size& coded_size, |
const gfx::Rect& visible_rect, |
- base::TimeTicks timestamp)); |
- MOCK_METHOD4(OnMailboxBufferReceived, |
+ base::TimeTicks timestamp, |
+ const base::DictionaryValue& metadata)); |
+ MOCK_METHOD5(OnMailboxBufferReceived, |
void(int buffer_id, |
const gpu::MailboxHolder& mailbox_holder, |
- const media::VideoCaptureFormat& format, |
- base::TimeTicks timestamp)); |
+ const gfx::Size& packed_frame_size, |
+ base::TimeTicks timestamp, |
+ const base::DictionaryValue& metadata)); |
MOCK_METHOD1(OnStateChanged, void(VideoCaptureState state)); |
MOCK_METHOD1(OnDeviceSupportedFormatsEnumerated, |
void(const media::VideoCaptureFormats& formats)); |
@@ -57,6 +62,16 @@ class MockVideoCaptureDelegate : public VideoCaptureMessageFilter::Delegate { |
int device_id_; |
}; |
+void ExpectMetadataContainsFooBarBaz(const base::DictionaryValue& metadata) { |
+ std::string value; |
+ if (metadata.GetString("foo", &value)) |
+ EXPECT_EQ(std::string("bar"), value); |
+ else if (metadata.GetString("bar", &value)) |
+ EXPECT_EQ(std::string("baz"), value); |
+ else |
+ FAIL() << "Missing key 'foo' or key 'bar'."; |
+} |
+ |
} // namespace |
TEST(VideoCaptureMessageFilterTest, Basic) { |
@@ -89,56 +104,55 @@ TEST(VideoCaptureMessageFilterTest, Basic) { |
Mock::VerifyAndClearExpectations(&delegate); |
// VideoCaptureMsg_BufferReady |
- int buffer_id = 22; |
- base::TimeTicks timestamp = base::TimeTicks::FromInternalValue(1); |
- |
- const media::VideoCaptureFormat shm_format( |
- gfx::Size(234, 512), 30, media::PIXEL_FORMAT_I420); |
- media::VideoCaptureFormat saved_format; |
- EXPECT_CALL(delegate, OnBufferReceived(buffer_id, _, _, timestamp)) |
- .WillRepeatedly(SaveArg<1>(&saved_format)); |
- filter->OnMessageReceived(VideoCaptureMsg_BufferReady( |
- delegate.device_id(), buffer_id, shm_format, gfx::Rect(234, 512), |
- timestamp)); |
+ VideoCaptureMsg_BufferReady_Params params; |
+ params.device_id = delegate.device_id(); |
+ params.buffer_id = 22; |
+ params.coded_size = gfx::Size(234, 512); |
+ params.visible_rect = gfx::Rect(100, 200, 300, 400); |
+ params.timestamp = base::TimeTicks::FromInternalValue(1); |
+ params.metadata.SetString("foo", "bar"); |
+ |
+ EXPECT_CALL(delegate, OnBufferReceived(params.buffer_id, |
+ params.coded_size, |
+ params.visible_rect, |
+ params.timestamp, |
+ _)) |
+ .WillRepeatedly(WithArg<4>(Invoke(&ExpectMetadataContainsFooBarBaz))); |
+ filter->OnMessageReceived(VideoCaptureMsg_BufferReady(params)); |
Mock::VerifyAndClearExpectations(&delegate); |
- EXPECT_EQ(shm_format.frame_size, saved_format.frame_size); |
- EXPECT_EQ(shm_format.frame_rate, saved_format.frame_rate); |
- EXPECT_EQ(shm_format.pixel_format, saved_format.pixel_format); |
// VideoCaptureMsg_MailboxBufferReady |
- buffer_id = 33; |
- timestamp = base::TimeTicks::FromInternalValue(2); |
- |
- const media::VideoCaptureFormat mailbox_format( |
- gfx::Size(234, 512), 30, media::PIXEL_FORMAT_TEXTURE); |
+ VideoCaptureMsg_MailboxBufferReady_Params params_m; |
+ params_m.device_id = delegate.device_id(); |
+ params_m.buffer_id = 33; |
gpu::Mailbox mailbox; |
const int8 mailbox_name[arraysize(mailbox.name)] = "TEST MAILBOX"; |
mailbox.SetName(mailbox_name); |
- unsigned int syncpoint = 44; |
+ params_m.mailbox_holder = gpu::MailboxHolder(mailbox, 0, 44); |
+ params_m.packed_frame_size = gfx::Size(345, 256); |
+ params_m.timestamp = base::TimeTicks::FromInternalValue(2); |
+ params_m.metadata.SetString("bar", "baz"); |
+ |
gpu::MailboxHolder saved_mailbox_holder; |
- EXPECT_CALL(delegate, OnMailboxBufferReceived(buffer_id, _, _, timestamp)) |
- .WillRepeatedly( |
- DoAll(SaveArg<1>(&saved_mailbox_holder), SaveArg<2>(&saved_format))); |
- gpu::MailboxHolder mailbox_holder(mailbox, 0, syncpoint); |
- filter->OnMessageReceived( |
- VideoCaptureMsg_MailboxBufferReady(delegate.device_id(), |
- buffer_id, |
- mailbox_holder, |
- mailbox_format, |
- timestamp)); |
+ EXPECT_CALL(delegate, OnMailboxBufferReceived(params_m.buffer_id, |
+ _, |
+ params_m.packed_frame_size, |
+ params_m.timestamp, |
+ _)) |
+ .WillRepeatedly(DoAll( |
+ SaveArg<1>(&saved_mailbox_holder), |
+ WithArg<4>(Invoke(&ExpectMetadataContainsFooBarBaz)))); |
+ filter->OnMessageReceived(VideoCaptureMsg_MailboxBufferReady(params_m)); |
Mock::VerifyAndClearExpectations(&delegate); |
- EXPECT_EQ(mailbox_format.frame_size, saved_format.frame_size); |
- EXPECT_EQ(mailbox_format.frame_rate, saved_format.frame_rate); |
- EXPECT_EQ(mailbox_format.pixel_format, saved_format.pixel_format); |
EXPECT_EQ(memcmp(mailbox.name, |
saved_mailbox_holder.mailbox.name, |
sizeof(mailbox.name)), |
0); |
// VideoCaptureMsg_FreeBuffer |
- EXPECT_CALL(delegate, OnBufferDestroyed(buffer_id)); |
+ EXPECT_CALL(delegate, OnBufferDestroyed(params_m.buffer_id)); |
filter->OnMessageReceived(VideoCaptureMsg_FreeBuffer( |
- delegate.device_id(), buffer_id)); |
+ delegate.device_id(), params_m.buffer_id)); |
Mock::VerifyAndClearExpectations(&delegate); |
} |