Chromium Code Reviews| Index: cc/output/overlay_unittest.cc |
| diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc |
| index 545b5f54eb368d6bd809ed5480ba1252880df188..7d91e998119a0676ce4dce7d8f1e7eb390e13327 100644 |
| --- a/cc/output/overlay_unittest.cc |
| +++ b/cc/output/overlay_unittest.cc |
| @@ -31,6 +31,7 @@ namespace cc { |
| namespace { |
| const gfx::Rect kOverlayRect(0, 0, 128, 128); |
| +const gfx::RectF kExpectedDisplayRect(0, 0, 128, 128); |
| const gfx::Rect kOverlayTopLeftRect(0, 0, 64, 64); |
| const gfx::Rect kOverlayBottomRightRect(64, 64, 64, 64); |
| const gfx::PointF kUVTopLeft(0.1f, 0.2f); |
| @@ -61,10 +62,14 @@ void SingleOverlayValidator::CheckOverlaySupport( |
| ASSERT_EQ(2U, surfaces->size()); |
| OverlayCandidate& candidate = surfaces->back(); |
| - if (candidate.display_rect.width() == 64) |
| + if (candidate.display_rect.width() == 64) { |
| EXPECT_EQ(kOverlayBottomRightRect, candidate.display_rect); |
| - else |
| - EXPECT_EQ(kOverlayRect, candidate.display_rect); |
| + } else { |
| + EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); |
| + EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); |
| + EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); |
| + EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), 0.01f); |
| + } |
| EXPECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight).ToString(), |
| candidate.uv_rect.ToString()); |
| candidate.overlay_handled = true; |
| @@ -540,7 +545,7 @@ TEST_F(SingleOverlayOnTopTest, RejectOpacity) { |
| EXPECT_EQ(0U, candidate_list.size()); |
| } |
| -TEST_F(SingleOverlayOnTopTest, RejectNonScaleTransform) { |
| +TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
| scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| CreateFullscreenCandidateQuad(resource_provider_.get(), |
| pass->shared_quad_state_list.back(), |
| @@ -556,11 +561,13 @@ TEST_F(SingleOverlayOnTopTest, RejectNonScaleTransform) { |
| EXPECT_EQ(0U, candidate_list.size()); |
| } |
| -TEST_F(SingleOverlayOnTopTest, RejectNegativeScaleTransform) { |
| +TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
| + gfx::Rect rect = kOverlayRect; |
| + rect.set_width(rect.width() / 2); |
|
danakj
2015/05/12 23:32:15
why the width/2 ?
halliwell
2015/05/13 00:49:50
Following the same pattern as existing tests (you
danakj
2015/05/13 16:29:25
Ah, missed the scale2 down there.
|
| + rect.Offset(0, -rect.height()); |
| scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| - CreateFullscreenCandidateQuad(resource_provider_.get(), |
| - pass->shared_quad_state_list.back(), |
| - pass.get()); |
| + CreateCandidateQuadAt(resource_provider_.get(), |
| + pass->shared_quad_state_list.back(), pass.get(), rect); |
| pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.0f, |
| -1.0f); |
| @@ -569,7 +576,29 @@ TEST_F(SingleOverlayOnTopTest, RejectNegativeScaleTransform) { |
| OverlayCandidateList candidate_list; |
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| ASSERT_EQ(1U, pass_list.size()); |
| - EXPECT_EQ(0U, candidate_list.size()); |
| + ASSERT_EQ(2U, candidate_list.size()); |
| + EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
| + candidate_list.back().transform); |
| +} |
| + |
| +TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { |
| + gfx::Rect rect = kOverlayRect; |
| + rect.set_height(rect.height() / 2); |
|
danakj
2015/05/12 23:32:15
why height/2 ?
halliwell
2015/05/13 00:49:50
Same reason as previous test. In this case, y sca
|
| + rect.Offset(-rect.width(), 0); |
| + scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| + CreateCandidateQuadAt(resource_provider_.get(), |
| + pass->shared_quad_state_list.back(), pass.get(), rect); |
| + pass->shared_quad_state_list.back()->content_to_target_transform.Scale(-1.0f, |
| + 2.0f); |
| + |
| + RenderPassList pass_list; |
| + pass_list.push_back(pass.Pass()); |
| + OverlayCandidateList candidate_list; |
| + overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| + ASSERT_EQ(1U, pass_list.size()); |
| + ASSERT_EQ(2U, candidate_list.size()); |
| + EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
| + candidate_list.back().transform); |
| } |
| TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
| @@ -589,6 +618,60 @@ TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
| EXPECT_EQ(2U, candidate_list.size()); |
| } |
| +TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { |
| + gfx::Rect rect = kOverlayRect; |
| + rect.Offset(0, -rect.height()); |
| + scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| + CreateCandidateQuadAt(resource_provider_.get(), |
| + pass->shared_quad_state_list.back(), pass.get(), rect); |
| + pass->shared_quad_state_list.back() |
| + ->content_to_target_transform.RotateAboutZAxis(90.f); |
| + |
| + RenderPassList pass_list; |
| + pass_list.push_back(pass.Pass()); |
| + OverlayCandidateList candidate_list; |
| + overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| + ASSERT_EQ(1U, pass_list.size()); |
| + ASSERT_EQ(2U, candidate_list.size()); |
| + EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
| +} |
| + |
| +TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { |
| + gfx::Rect rect = kOverlayRect; |
| + rect.Offset(-rect.width(), -rect.height()); |
| + scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| + CreateCandidateQuadAt(resource_provider_.get(), |
| + pass->shared_quad_state_list.back(), pass.get(), rect); |
| + pass->shared_quad_state_list.back() |
| + ->content_to_target_transform.RotateAboutZAxis(180.f); |
| + |
| + RenderPassList pass_list; |
| + pass_list.push_back(pass.Pass()); |
| + OverlayCandidateList candidate_list; |
| + overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| + ASSERT_EQ(1U, pass_list.size()); |
| + ASSERT_EQ(2U, candidate_list.size()); |
| + EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
| +} |
| + |
| +TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { |
| + gfx::Rect rect = kOverlayRect; |
| + rect.Offset(-rect.width(), 0); |
| + scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| + CreateCandidateQuadAt(resource_provider_.get(), |
| + pass->shared_quad_state_list.back(), pass.get(), rect); |
| + pass->shared_quad_state_list.back() |
| + ->content_to_target_transform.RotateAboutZAxis(270.f); |
| + |
| + RenderPassList pass_list; |
| + pass_list.push_back(pass.Pass()); |
| + OverlayCandidateList candidate_list; |
| + overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
| + ASSERT_EQ(1U, pass_list.size()); |
| + ASSERT_EQ(2U, candidate_list.size()); |
| + EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
| +} |
| + |
| TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { |
| scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| CreateCheckeredQuadAt(resource_provider_.get(), |