Chromium Code Reviews| Index: content/renderer/media/canvas_capture_handler_unittest.cc |
| diff --git a/content/renderer/media/canvas_capture_handler_unittest.cc b/content/renderer/media/canvas_capture_handler_unittest.cc |
| index d5153123206d8149231cbfe4e3c79eb52be19295..3d5d87c28f7f9b0a0f276d6aa31d805442cbf7f3 100644 |
| --- a/content/renderer/media/canvas_capture_handler_unittest.cc |
| +++ b/content/renderer/media/canvas_capture_handler_unittest.cc |
| @@ -33,7 +33,8 @@ static const double kTestCanvasCaptureFramesPerSecond = 55.5; |
| static const int kTestCanvasCaptureFrameWidth = 2; |
| static const int kTestCanvasCaptureFrameHeight = 2; |
| -static const int kTestCanvasCaptureFrameErrorTolerance = 2; |
| +static const int kTestCanvasOddSizeOffset = 1; |
| +static const int kTestCanvasCaptureFrameColorErrorTolerance = 2; |
| static const int kTestAlphaValue = 175; |
| ACTION_P(RunClosure, closure) { |
| @@ -42,7 +43,8 @@ ACTION_P(RunClosure, closure) { |
| } // namespace |
| -class CanvasCaptureHandlerTest : public TestWithParam<bool> { |
| +class CanvasCaptureHandlerTest |
| + : public TestWithParam<testing::tuple<bool, bool>> { |
| public: |
| CanvasCaptureHandlerTest() {} |
| @@ -81,17 +83,18 @@ class CanvasCaptureHandlerTest : public TestWithParam<bool> { |
| void OnRunning(bool state) { DoOnRunning(state); } |
| // Verify returned frames. |
| - static sk_sp<SkImage> GenerateTestImage(bool opaque) { |
| - |
| + static sk_sp<SkImage> GenerateTestImage(bool opaque, bool odd_size) { |
| SkBitmap testBitmap; |
| - testBitmap.allocN32Pixels(kTestCanvasCaptureFrameWidth, |
| - kTestCanvasCaptureFrameHeight, opaque); |
| + const int offset = odd_size ? kTestCanvasOddSizeOffset : 0; |
|
mcasas
2016/04/26 00:07:14
I'd say: Just use an integer parameter for the tes
emircan
2016/04/26 19:47:07
Done.
|
| + testBitmap.allocN32Pixels(kTestCanvasCaptureFrameWidth + offset, |
| + kTestCanvasCaptureFrameHeight + offset, opaque); |
| testBitmap.eraseARGB(kTestAlphaValue, 30, 60, 200); |
| return SkImage::MakeFromBitmap(testBitmap); |
| } |
| void OnVerifyDeliveredFrame( |
| bool opaque, |
| + bool odd_size, |
| const scoped_refptr<media::VideoFrame>& video_frame, |
| base::TimeTicks estimated_capture_time) { |
| if (opaque) |
| @@ -101,17 +104,22 @@ class CanvasCaptureHandlerTest : public TestWithParam<bool> { |
| EXPECT_EQ(video_frame->timestamp().InMilliseconds(), |
| (estimated_capture_time - base::TimeTicks()).InMilliseconds()); |
| - const gfx::Size& size = video_frame->coded_size(); |
| - EXPECT_EQ(kTestCanvasCaptureFrameWidth, size.width()); |
| - EXPECT_EQ(kTestCanvasCaptureFrameHeight, size.height()); |
| - const uint8_t* y_plane = video_frame->data(media::VideoFrame::kYPlane); |
| - EXPECT_NEAR(74, y_plane[0], kTestCanvasCaptureFrameErrorTolerance); |
| - const uint8_t* u_plane = video_frame->data(media::VideoFrame::kUPlane); |
| - EXPECT_NEAR(193, u_plane[0], kTestCanvasCaptureFrameErrorTolerance); |
| - const uint8_t* v_plane = video_frame->data(media::VideoFrame::kVPlane); |
| - EXPECT_NEAR(105, v_plane[0], kTestCanvasCaptureFrameErrorTolerance); |
| + const int offset = odd_size ? kTestCanvasOddSizeOffset : 0; |
| + const gfx::Size& size = video_frame->visible_rect().size(); |
| + EXPECT_EQ(kTestCanvasCaptureFrameWidth + offset, size.width()); |
| + EXPECT_EQ(kTestCanvasCaptureFrameHeight + offset, size.height()); |
| + const uint8_t* y_plane = |
| + video_frame->visible_data(media::VideoFrame::kYPlane); |
| + EXPECT_NEAR(74, y_plane[0], kTestCanvasCaptureFrameColorErrorTolerance); |
| + const uint8_t* u_plane = |
| + video_frame->visible_data(media::VideoFrame::kUPlane); |
| + EXPECT_NEAR(193, u_plane[0], kTestCanvasCaptureFrameColorErrorTolerance); |
| + const uint8_t* v_plane = |
| + video_frame->visible_data(media::VideoFrame::kVPlane); |
| + EXPECT_NEAR(105, v_plane[0], kTestCanvasCaptureFrameColorErrorTolerance); |
| if (!opaque) { |
| - const uint8_t* a_plane = video_frame->data(media::VideoFrame::kAPlane); |
| + const uint8_t* a_plane = |
| + video_frame->visible_data(media::VideoFrame::kAPlane); |
| EXPECT_EQ(kTestAlphaValue, a_plane[0]); |
| } |
| } |
| @@ -193,15 +201,17 @@ TEST_P(CanvasCaptureHandlerTest, GetFormatsStartAndStop) { |
| params, base::Bind(&CanvasCaptureHandlerTest::OnDeliverFrame, |
| base::Unretained(this)), |
| base::Bind(&CanvasCaptureHandlerTest::OnRunning, base::Unretained(this))); |
| - canvas_capture_handler_->sendNewFrame(GenerateTestImage(GetParam()).get()); |
| + canvas_capture_handler_->sendNewFrame(GenerateTestImage( |
| + testing::get<0>(GetParam()), testing::get<1>(GetParam())).get()); |
| run_loop.Run(); |
| source->StopCapture(); |
| } |
| // Verifies that SkImage is processed and produces VideoFrame as expected. |
| -TEST_P(CanvasCaptureHandlerTest, VerifyOpaqueFrame) { |
| - const bool isOpaque = GetParam(); |
| +TEST_P(CanvasCaptureHandlerTest, VerifyFrame) { |
| + const bool opaque_frame = testing::get<0>(GetParam()); |
| + const bool odd_size_frame = testing::get<1>(GetParam()); |
| InSequence s; |
| media::VideoCapturerSource* const source = |
| GetVideoCapturerSource(static_cast<MediaStreamVideoCapturerSource*>( |
| @@ -213,9 +223,10 @@ TEST_P(CanvasCaptureHandlerTest, VerifyOpaqueFrame) { |
| media::VideoCaptureParams params; |
| source->StartCapture( |
| params, base::Bind(&CanvasCaptureHandlerTest::OnVerifyDeliveredFrame, |
| - base::Unretained(this), isOpaque), |
| + base::Unretained(this), opaque_frame, odd_size_frame), |
| base::Bind(&CanvasCaptureHandlerTest::OnRunning, base::Unretained(this))); |
| - canvas_capture_handler_->sendNewFrame(GenerateTestImage(isOpaque).get()); |
| + canvas_capture_handler_->sendNewFrame( |
| + GenerateTestImage(opaque_frame, odd_size_frame).get()); |
| run_loop.RunUntilIdle(); |
| } |
| @@ -231,6 +242,9 @@ TEST_F(CanvasCaptureHandlerTest, CheckNeedsNewFrame) { |
| EXPECT_FALSE(canvas_capture_handler_->needsNewFrame()); |
| } |
| -INSTANTIATE_TEST_CASE_P(, CanvasCaptureHandlerTest, ::testing::Bool()); |
| +INSTANTIATE_TEST_CASE_P(, |
| + CanvasCaptureHandlerTest, |
| + ::testing::Combine(::testing::Bool(), |
| + ::testing::Bool())); |
| } // namespace content |