| Index: cc/output/overlay_unittest.cc
|
| diff --git a/cc/output/overlay_unittest.cc b/cc/output/overlay_unittest.cc
|
| index bfdfa9cd45b2f8b5a89bd339981ea083f518e87c..89c1aea4a1a56861833502f2838e7609dab5bb08 100644
|
| --- a/cc/output/overlay_unittest.cc
|
| +++ b/cc/output/overlay_unittest.cc
|
| @@ -153,6 +153,8 @@ class OverlayOutputSurface : public OutputSurface {
|
| return overlay_candidate_validator_.get();
|
| }
|
|
|
| + unsigned GetOverlayTextureId() const override { return 10000; }
|
| +
|
| private:
|
| scoped_ptr<OverlayCandidateValidator> overlay_candidate_validator_;
|
| };
|
| @@ -539,7 +541,8 @@ TEST_F(SandwichTest, SuccessfulSandwichOverlay) {
|
| EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material);
|
| }
|
|
|
| - EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
|
| + EXPECT_TRUE(candidate_list[0].use_output_surface_for_resource);
|
| + EXPECT_FALSE(candidate_list[1].use_output_surface_for_resource);
|
| EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
|
| EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[1].display_rect);
|
| EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
|
| @@ -603,7 +606,8 @@ TEST_F(SandwichTest, MultiQuadOverlay) {
|
| DCHECK(covered_region == transparent_quad_region);
|
|
|
| // Check that overlays cover the same region that the quads covered.
|
| - EXPECT_FALSE(candidate_list[0].use_output_surface_for_resource);
|
| + EXPECT_TRUE(candidate_list[0].use_output_surface_for_resource);
|
| + EXPECT_FALSE(candidate_list[1].use_output_surface_for_resource);
|
| EXPECT_EQ(candidate_id, candidate_list[1].resource_id);
|
| EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[1].display_rect);
|
| EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource);
|
| @@ -667,7 +671,8 @@ TEST_F(SingleOverlayOnTopTest, NoCandidates) {
|
|
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| // There should be nothing new here.
|
| CompareRenderPassLists(pass_list, original_pass_list);
|
| }
|
| @@ -691,7 +696,8 @@ TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
|
|
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| // There should be nothing new here.
|
| CompareRenderPassLists(pass_list, original_pass_list);
|
| }
|
| @@ -739,7 +745,8 @@ TEST_F(SingleOverlayOnTopTest, RejectPremultipliedAlpha) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectBlending) {
|
| @@ -755,7 +762,8 @@ TEST_F(SingleOverlayOnTopTest, RejectBlending) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
|
| @@ -771,7 +779,8 @@ TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
|
| @@ -786,7 +795,8 @@ TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
|
| @@ -801,7 +811,8 @@ TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
|
| @@ -817,7 +828,8 @@ TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowClipped) {
|
| @@ -1033,7 +1045,8 @@ TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
|
| @@ -1054,7 +1067,8 @@ TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| EXPECT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
|
| @@ -1068,7 +1082,8 @@ TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
|
| OverlayCandidateList candidate_list;
|
| overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list);
|
| ASSERT_EQ(1U, pass_list.size());
|
| - EXPECT_EQ(0U, candidate_list.size());
|
| + EXPECT_EQ(1U, candidate_list.size());
|
| + EXPECT_TRUE(candidate_list.front().use_output_surface_for_resource);
|
| }
|
|
|
| TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) {
|
| @@ -1288,11 +1303,13 @@ TEST_F(GLRendererWithOverlaysTest, OverlayQuadNotDrawn) {
|
| // so only draw 2 quads.
|
| EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(2);
|
| EXPECT_CALL(scheduler_,
|
| - Schedule(1,
|
| - gfx::OVERLAY_TRANSFORM_NONE,
|
| - _,
|
| - kOverlayRect,
|
| - BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1);
|
| + Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
|
| + gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
|
| + .Times(1);
|
| + EXPECT_CALL(scheduler_,
|
| + Schedule(1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
|
| + BoundingRect(kUVTopLeft, kUVBottomRight)))
|
| + .Times(1);
|
| renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
|
|
|
| SwapBuffers();
|
| @@ -1325,8 +1342,13 @@ TEST_F(GLRendererWithOverlaysTest, OccludedQuadInUnderlay) {
|
| // Expect to be replaced with transparent hole quad and placed in underlay.
|
| EXPECT_CALL(*renderer_, DoDrawQuad(_, _, _)).Times(3);
|
| EXPECT_CALL(scheduler_,
|
| + Schedule(0, gfx::OVERLAY_TRANSFORM_NONE, _,
|
| + gfx::Rect(kDisplaySize), gfx::RectF(0, 0, 1, 1)))
|
| + .Times(1);
|
| + EXPECT_CALL(scheduler_,
|
| Schedule(-1, gfx::OVERLAY_TRANSFORM_NONE, _, kOverlayRect,
|
| - BoundingRect(kUVTopLeft, kUVBottomRight))).Times(1);
|
| + BoundingRect(kUVTopLeft, kUVBottomRight)))
|
| + .Times(1);
|
| renderer_->DrawFrame(&pass_list, 1.f, viewport_rect, viewport_rect, false);
|
|
|
| SwapBuffers();
|
| @@ -1381,6 +1403,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
| DirectRenderer::DrawingFrame frame1;
|
| frame1.render_passes_in_draw_order = &pass_list;
|
| frame1.overlay_list.resize(2);
|
| + frame1.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay1 = frame1.overlay_list.back();
|
| overlay1.resource_id = resource1;
|
| overlay1.plane_z_order = 1;
|
| @@ -1388,19 +1411,21 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
| DirectRenderer::DrawingFrame frame2;
|
| frame2.render_passes_in_draw_order = &pass_list;
|
| frame2.overlay_list.resize(2);
|
| + frame2.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay2 = frame2.overlay_list.back();
|
| overlay2.resource_id = resource2;
|
| overlay2.plane_z_order = 1;
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| + printf("About to finish, %d %d\n", resource1, resource2);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2));
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame2);
|
| renderer_->FinishDrawingFrame(&frame2);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1409,7 +1434,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
| EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1));
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1433,14 +1458,14 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturned) {
|
|
|
| // Use the same buffer twice.
|
| renderer_->set_expect_overlays(true);
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1475,6 +1500,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| DirectRenderer::DrawingFrame frame1;
|
| frame1.render_passes_in_draw_order = &pass_list;
|
| frame1.overlay_list.resize(2);
|
| + frame1.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay1 = frame1.overlay_list.back();
|
| overlay1.resource_id = resource1;
|
| overlay1.plane_z_order = 1;
|
| @@ -1482,6 +1508,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| DirectRenderer::DrawingFrame frame2;
|
| frame2.render_passes_in_draw_order = &pass_list;
|
| frame2.overlay_list.resize(2);
|
| + frame2.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay2 = frame2.overlay_list.back();
|
| overlay2.resource_id = resource2;
|
| overlay2.plane_z_order = 1;
|
| @@ -1489,11 +1516,12 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| DirectRenderer::DrawingFrame frame3;
|
| frame3.render_passes_in_draw_order = &pass_list;
|
| frame3.overlay_list.resize(2);
|
| + frame3.overlay_list.front().use_output_surface_for_resource = true;
|
| OverlayCandidate& overlay3 = frame3.overlay_list.back();
|
| overlay3.resource_id = resource3;
|
| overlay3.plane_z_order = 1;
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1501,7 +1529,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame2);
|
| renderer_->FinishDrawingFrame(&frame2);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1511,7 +1539,7 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource2));
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame3);
|
| renderer_->FinishDrawingFrame(&frame3);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| @@ -1541,14 +1569,14 @@ TEST_F(GLRendererWithOverlaysTest, ResourcesExportedAndReturnedWithDelay) {
|
|
|
| // Use the same buffer twice.
|
| renderer_->set_expect_overlays(true);
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
| SwapBuffers();
|
| Mock::VerifyAndClearExpectations(&scheduler_);
|
|
|
| - EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(1);
|
| + EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2);
|
| renderer_->BeginDrawingFrame(&frame1);
|
| renderer_->FinishDrawingFrame(&frame1);
|
| EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1));
|
|
|