| 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..288bbc0442f764f1e8c340de70ff4cbcad2c660d 100644
|
| --- a/content/renderer/media/canvas_capture_handler_unittest.cc
|
| +++ b/content/renderer/media/canvas_capture_handler_unittest.cc
|
| @@ -31,9 +31,9 @@ static const int kTestCanvasCaptureWidth = 320;
|
| static const int kTestCanvasCaptureHeight = 240;
|
| static const double kTestCanvasCaptureFramesPerSecond = 55.5;
|
|
|
| -static const int kTestCanvasCaptureFrameWidth = 2;
|
| -static const int kTestCanvasCaptureFrameHeight = 2;
|
| -static const int kTestCanvasCaptureFrameErrorTolerance = 2;
|
| +static const int kTestCanvasCaptureFrameEvenSize = 2;
|
| +static const int kTestCanvasCaptureFrameOddSize = 3;
|
| +static const int kTestCanvasCaptureFrameColorErrorTolerance = 2;
|
| static const int kTestAlphaValue = 175;
|
|
|
| ACTION_P(RunClosure, closure) {
|
| @@ -42,7 +42,8 @@ ACTION_P(RunClosure, closure) {
|
|
|
| } // namespace
|
|
|
| -class CanvasCaptureHandlerTest : public TestWithParam<bool> {
|
| +class CanvasCaptureHandlerTest
|
| + : public TestWithParam<testing::tuple<bool, int, int>> {
|
| public:
|
| CanvasCaptureHandlerTest() {}
|
|
|
| @@ -81,17 +82,17 @@ 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, int width, int height) {
|
| SkBitmap testBitmap;
|
| - testBitmap.allocN32Pixels(kTestCanvasCaptureFrameWidth,
|
| - kTestCanvasCaptureFrameHeight, opaque);
|
| + testBitmap.allocN32Pixels(width, height, opaque);
|
| testBitmap.eraseARGB(kTestAlphaValue, 30, 60, 200);
|
| return SkImage::MakeFromBitmap(testBitmap);
|
| }
|
|
|
| void OnVerifyDeliveredFrame(
|
| bool opaque,
|
| + int expected_width,
|
| + int expected_height,
|
| const scoped_refptr<media::VideoFrame>& video_frame,
|
| base::TimeTicks estimated_capture_time) {
|
| if (opaque)
|
| @@ -101,17 +102,21 @@ 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 gfx::Size& size = video_frame->visible_rect().size();
|
| + EXPECT_EQ(expected_width, size.width());
|
| + EXPECT_EQ(expected_height, 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 +198,21 @@ 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()),
|
| + testing::get<2>(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 width = testing::get<1>(GetParam());
|
| + const bool height = testing::get<1>(GetParam());
|
| InSequence s;
|
| media::VideoCapturerSource* const source =
|
| GetVideoCapturerSource(static_cast<MediaStreamVideoCapturerSource*>(
|
| @@ -213,9 +224,10 @@ TEST_P(CanvasCaptureHandlerTest, VerifyOpaqueFrame) {
|
| media::VideoCaptureParams params;
|
| source->StartCapture(
|
| params, base::Bind(&CanvasCaptureHandlerTest::OnVerifyDeliveredFrame,
|
| - base::Unretained(this), isOpaque),
|
| + base::Unretained(this), opaque_frame, width, height),
|
| base::Bind(&CanvasCaptureHandlerTest::OnRunning, base::Unretained(this)));
|
| - canvas_capture_handler_->sendNewFrame(GenerateTestImage(isOpaque).get());
|
| + canvas_capture_handler_->sendNewFrame(
|
| + GenerateTestImage(opaque_frame, width, height).get());
|
| run_loop.RunUntilIdle();
|
| }
|
|
|
| @@ -231,6 +243,13 @@ 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::Values(kTestCanvasCaptureFrameEvenSize,
|
| + kTestCanvasCaptureFrameOddSize),
|
| + ::testing::Values(kTestCanvasCaptureFrameEvenSize,
|
| + kTestCanvasCaptureFrameOddSize)));
|
|
|
| } // namespace content
|
|
|