Index: content/renderer/media/capture_video_decoder_unittest.cc |
diff --git a/content/renderer/media/capture_video_decoder_unittest.cc b/content/renderer/media/capture_video_decoder_unittest.cc |
index 643fc509dc4502b9c30cd3c0c35ecb2cc6a2a7dc..57aab50bdfc60e8fadc24fa05c784be5d6be3e1b 100644 |
--- a/content/renderer/media/capture_video_decoder_unittest.cc |
+++ b/content/renderer/media/capture_video_decoder_unittest.cc |
@@ -24,19 +24,6 @@ static const int kHeight = 144; |
static const int kFPS = 30; |
static const media::VideoCaptureSessionId kVideoStreamId = 1; |
-ACTION_P3(CreateDataBufferFromCapture, decoder, vc_impl, data_buffer_number) { |
- for (int i = 0; i < data_buffer_number; i++) { |
- media::VideoCapture::VideoFrameBuffer* buffer; |
- buffer = new media::VideoCapture::VideoFrameBuffer(); |
- buffer->width = arg1.width; |
- buffer->height = arg1.height; |
- int length = buffer->width * buffer->height * 3 / 2; |
- buffer->memory_pointer = new uint8[length]; |
- buffer->buffer_size = length; |
- decoder->OnBufferReady(vc_impl, buffer); |
- } |
-} |
- |
ACTION(DeleteDataBuffer) { |
delete[] arg0->memory_pointer; |
} |
@@ -45,6 +32,17 @@ ACTION_P2(CaptureStopped, decoder, vc_impl) { |
decoder->OnStopped(vc_impl); |
} |
+MATCHER_P2(HasSize, width, height, "") { |
+ EXPECT_EQ(arg->data_size().width(), width); |
+ EXPECT_EQ(arg->data_size().height(), height); |
+ EXPECT_EQ(arg->natural_size().width(), width); |
+ EXPECT_EQ(arg->natural_size().height(), height); |
+ return (arg->data_size().width() == width) && |
+ (arg->data_size().height() == height) && |
+ (arg->natural_size().width() == width) && |
+ (arg->natural_size().height() == height); |
+} |
+ |
class MockVideoCaptureImpl : public VideoCaptureImpl { |
public: |
MockVideoCaptureImpl(const media::VideoCaptureSessionId id, |
@@ -119,25 +117,17 @@ class CaptureVideoDecoderTest : public ::testing::Test { |
} |
void Initialize() { |
- // Issue a read. |
- EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, _)); |
- decoder_->Read(read_cb_); |
- |
EXPECT_CALL(*vc_manager_, AddDevice(_, _)) |
.WillOnce(Return(vc_impl_.get())); |
- int buffer_count = 1; |
- EXPECT_CALL(*vc_impl_, StartCapture(capture_client(), _)) |
- .Times(1) |
- .WillOnce(CreateDataBufferFromCapture(capture_client(), |
- vc_impl_.get(), |
- buffer_count)); |
- EXPECT_CALL(*vc_impl_, FeedBuffer(_)) |
- .Times(buffer_count) |
- .WillRepeatedly(DeleteDataBuffer()); |
- |
+ EXPECT_CALL(*vc_impl_, StartCapture(capture_client(), _)); |
decoder_->Initialize(NULL, |
media::NewExpectedStatusCB(media::PIPELINE_OK), |
NewStatisticsCB()); |
+ |
+ EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, |
+ HasSize(kWidth, kHeight))); |
+ decoder_->Read(read_cb_); |
+ SendBufferToDecoder(gfx::Size(kWidth, kHeight)); |
message_loop_->RunAllPending(); |
} |
@@ -155,6 +145,20 @@ class CaptureVideoDecoderTest : public ::testing::Test { |
return static_cast<media::VideoCapture::EventHandler*>(decoder_); |
} |
+ void SendBufferToDecoder(const gfx::Size& size) { |
+ scoped_refptr<media::VideoCapture::VideoFrameBuffer> buffer = |
+ new media::VideoCapture::VideoFrameBuffer(); |
+ buffer->width = size.width(); |
+ buffer->height = size.height(); |
+ int length = buffer->width * buffer->height * 3 / 2; |
+ buffer->memory_pointer = new uint8[length]; |
+ buffer->buffer_size = length; |
+ |
+ EXPECT_CALL(*vc_impl_, FeedBuffer(_)) |
+ .WillOnce(DeleteDataBuffer()); |
+ decoder_->OnBufferReady(vc_impl_.get(), buffer); |
+ } |
+ |
MOCK_METHOD2(FrameReady, void(media::VideoDecoder::DecoderStatus status, |
const scoped_refptr<media::VideoFrame>&)); |
@@ -175,11 +179,8 @@ class CaptureVideoDecoderTest : public ::testing::Test { |
TEST_F(CaptureVideoDecoderTest, ReadAndReset) { |
// Test basic initialize and teardown sequence. |
Initialize(); |
- // Natural size should be initialized to default capability. |
- EXPECT_EQ(kWidth, decoder_->natural_size().width()); |
- EXPECT_EQ(kHeight, decoder_->natural_size().height()); |
- |
- EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, _)); |
+ EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, |
+ HasSize(kWidth, kHeight))); |
decoder_->Read(read_cb_); |
decoder_->Reset(media::NewExpectedClosure()); |
message_loop_->RunAllPending(); |
@@ -200,10 +201,13 @@ TEST_F(CaptureVideoDecoderTest, OnDeviceInfoReceived) { |
params.session_id = kVideoStreamId; |
decoder_->OnDeviceInfoReceived(vc_impl_.get(), params); |
- message_loop_->RunAllPending(); |
- EXPECT_EQ(expected_size.width(), decoder_->natural_size().width()); |
- EXPECT_EQ(expected_size.height(), decoder_->natural_size().height()); |
+ EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, |
+ HasSize(expected_size.width(), |
+ expected_size.height()))); |
+ decoder_->Read(read_cb_); |
+ SendBufferToDecoder(expected_size); |
+ message_loop_->RunAllPending(); |
Stop(); |
} |
@@ -213,7 +217,8 @@ TEST_F(CaptureVideoDecoderTest, ReadAndShutdown) { |
// teardown the pipeline) even when there's no input frame. |
Initialize(); |
- EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, _)).Times(2); |
+ EXPECT_CALL(*this, FrameReady(media::VideoDecoder::kOk, |
+ HasSize(0, 0))).Times(2); |
decoder_->Read(read_cb_); |
decoder_->PrepareForShutdownHack(); |
decoder_->Read(read_cb_); |
@@ -221,4 +226,3 @@ TEST_F(CaptureVideoDecoderTest, ReadAndShutdown) { |
Stop(); |
} |
- |