OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/base/scoped_ptr_vector.h" | 5 #include "cc/base/scoped_ptr_vector.h" |
6 #include "cc/output/compositor_frame_metadata.h" | 6 #include "cc/output/compositor_frame_metadata.h" |
7 #include "cc/output/gl_renderer.h" | 7 #include "cc/output/gl_renderer.h" |
8 #include "cc/output/output_surface.h" | 8 #include "cc/output/output_surface.h" |
9 #include "cc/output/output_surface_client.h" | 9 #include "cc/output/output_surface_client.h" |
10 #include "cc/output/overlay_candidate_validator.h" | 10 #include "cc/output/overlay_candidate_validator.h" |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
271 | 271 |
272 EXPECT_EQ(expected->shared_quad_state_list.size(), | 272 EXPECT_EQ(expected->shared_quad_state_list.size(), |
273 actual->shared_quad_state_list.size()); | 273 actual->shared_quad_state_list.size()); |
274 EXPECT_EQ(expected->quad_list.size(), actual->quad_list.size()); | 274 EXPECT_EQ(expected->quad_list.size(), actual->quad_list.size()); |
275 | 275 |
276 for (auto exp_iter = expected->quad_list.cbegin(), | 276 for (auto exp_iter = expected->quad_list.cbegin(), |
277 act_iter = actual->quad_list.cbegin(); | 277 act_iter = actual->quad_list.cbegin(); |
278 exp_iter != expected->quad_list.cend(); | 278 exp_iter != expected->quad_list.cend(); |
279 ++exp_iter, ++act_iter) { | 279 ++exp_iter, ++act_iter) { |
280 EXPECT_EQ(exp_iter->rect.ToString(), act_iter->rect.ToString()); | 280 EXPECT_EQ(exp_iter->rect.ToString(), act_iter->rect.ToString()); |
281 EXPECT_EQ(exp_iter->shared_quad_state->content_bounds.ToString(), | 281 EXPECT_EQ(exp_iter->shared_quad_state->quad_layer_bounds.ToString(), |
282 act_iter->shared_quad_state->content_bounds.ToString()); | 282 act_iter->shared_quad_state->quad_layer_bounds.ToString()); |
283 } | 283 } |
284 } | 284 } |
285 } | 285 } |
286 | 286 |
287 TEST(OverlayTest, NoOverlaysByDefault) { | 287 TEST(OverlayTest, NoOverlaysByDefault) { |
288 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); | 288 scoped_refptr<TestContextProvider> provider = TestContextProvider::Create(); |
289 OverlayOutputSurface output_surface(provider); | 289 OverlayOutputSurface output_surface(provider); |
290 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); | 290 EXPECT_EQ(NULL, output_surface.GetOverlayCandidateValidator()); |
291 | 291 |
292 output_surface.InitWithSingleOverlayValidator(); | 292 output_surface.InitWithSingleOverlayValidator(); |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
539 ASSERT_EQ(1U, pass_list.size()); | 539 ASSERT_EQ(1U, pass_list.size()); |
540 EXPECT_EQ(0U, candidate_list.size()); | 540 EXPECT_EQ(0U, candidate_list.size()); |
541 } | 541 } |
542 | 542 |
543 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { | 543 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { |
544 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 544 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
545 CreateFullscreenCandidateQuad(resource_provider_.get(), | 545 CreateFullscreenCandidateQuad(resource_provider_.get(), |
546 pass->shared_quad_state_list.back(), | 546 pass->shared_quad_state_list.back(), |
547 pass.get()); | 547 pass.get()); |
548 pass->shared_quad_state_list.back() | 548 pass->shared_quad_state_list.back() |
549 ->content_to_target_transform.RotateAboutXAxis(45.f); | 549 ->quad_to_target_transform.RotateAboutXAxis(45.f); |
550 | 550 |
551 RenderPassList pass_list; | 551 RenderPassList pass_list; |
552 pass_list.push_back(pass.Pass()); | 552 pass_list.push_back(pass.Pass()); |
553 OverlayCandidateList candidate_list; | 553 OverlayCandidateList candidate_list; |
554 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 554 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
555 ASSERT_EQ(1U, pass_list.size()); | 555 ASSERT_EQ(1U, pass_list.size()); |
556 EXPECT_EQ(0U, candidate_list.size()); | 556 EXPECT_EQ(0U, candidate_list.size()); |
557 } | 557 } |
558 | 558 |
559 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { | 559 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { |
560 gfx::Rect rect = kOverlayRect; | 560 gfx::Rect rect = kOverlayRect; |
561 rect.set_width(rect.width() / 2); | 561 rect.set_width(rect.width() / 2); |
562 rect.Offset(0, -rect.height()); | 562 rect.Offset(0, -rect.height()); |
563 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 563 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
564 CreateCandidateQuadAt(resource_provider_.get(), | 564 CreateCandidateQuadAt(resource_provider_.get(), |
565 pass->shared_quad_state_list.back(), pass.get(), rect); | 565 pass->shared_quad_state_list.back(), pass.get(), rect); |
566 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.0f, | 566 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
567 -1.0f); | 567 -1.0f); |
568 | 568 |
569 RenderPassList pass_list; | 569 RenderPassList pass_list; |
570 pass_list.push_back(pass.Pass()); | 570 pass_list.push_back(pass.Pass()); |
571 OverlayCandidateList candidate_list; | 571 OverlayCandidateList candidate_list; |
572 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 572 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
573 ASSERT_EQ(1U, pass_list.size()); | 573 ASSERT_EQ(1U, pass_list.size()); |
574 ASSERT_EQ(2U, candidate_list.size()); | 574 ASSERT_EQ(2U, candidate_list.size()); |
575 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, | 575 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, |
576 candidate_list.back().transform); | 576 candidate_list.back().transform); |
577 } | 577 } |
578 | 578 |
579 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { | 579 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { |
580 gfx::Rect rect = kOverlayRect; | 580 gfx::Rect rect = kOverlayRect; |
581 rect.set_height(rect.height() / 2); | 581 rect.set_height(rect.height() / 2); |
582 rect.Offset(-rect.width(), 0); | 582 rect.Offset(-rect.width(), 0); |
583 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 583 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
584 CreateCandidateQuadAt(resource_provider_.get(), | 584 CreateCandidateQuadAt(resource_provider_.get(), |
585 pass->shared_quad_state_list.back(), pass.get(), rect); | 585 pass->shared_quad_state_list.back(), pass.get(), rect); |
586 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(-1.0f, | 586 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, |
587 2.0f); | 587 2.0f); |
588 | 588 |
589 RenderPassList pass_list; | 589 RenderPassList pass_list; |
590 pass_list.push_back(pass.Pass()); | 590 pass_list.push_back(pass.Pass()); |
591 OverlayCandidateList candidate_list; | 591 OverlayCandidateList candidate_list; |
592 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 592 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
593 ASSERT_EQ(1U, pass_list.size()); | 593 ASSERT_EQ(1U, pass_list.size()); |
594 ASSERT_EQ(2U, candidate_list.size()); | 594 ASSERT_EQ(2U, candidate_list.size()); |
595 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, | 595 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, |
596 candidate_list.back().transform); | 596 candidate_list.back().transform); |
597 } | 597 } |
598 | 598 |
599 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { | 599 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { |
600 gfx::Rect rect = kOverlayRect; | 600 gfx::Rect rect = kOverlayRect; |
601 rect.set_width(rect.width() / 2); | 601 rect.set_width(rect.width() / 2); |
602 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 602 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
603 CreateCandidateQuadAt(resource_provider_.get(), | 603 CreateCandidateQuadAt(resource_provider_.get(), |
604 pass->shared_quad_state_list.back(), pass.get(), rect); | 604 pass->shared_quad_state_list.back(), pass.get(), rect); |
605 pass->shared_quad_state_list.back()->content_to_target_transform.Scale(2.0f, | 605 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, |
606 1.0f); | 606 1.0f); |
607 | 607 |
608 RenderPassList pass_list; | 608 RenderPassList pass_list; |
609 pass_list.push_back(pass.Pass()); | 609 pass_list.push_back(pass.Pass()); |
610 OverlayCandidateList candidate_list; | 610 OverlayCandidateList candidate_list; |
611 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 611 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
612 ASSERT_EQ(1U, pass_list.size()); | 612 ASSERT_EQ(1U, pass_list.size()); |
613 EXPECT_EQ(2U, candidate_list.size()); | 613 EXPECT_EQ(2U, candidate_list.size()); |
614 } | 614 } |
615 | 615 |
616 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { | 616 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { |
617 gfx::Rect rect = kOverlayRect; | 617 gfx::Rect rect = kOverlayRect; |
618 rect.Offset(0, -rect.height()); | 618 rect.Offset(0, -rect.height()); |
619 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 619 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
620 CreateCandidateQuadAt(resource_provider_.get(), | 620 CreateCandidateQuadAt(resource_provider_.get(), |
621 pass->shared_quad_state_list.back(), pass.get(), rect); | 621 pass->shared_quad_state_list.back(), pass.get(), rect); |
622 pass->shared_quad_state_list.back() | 622 pass->shared_quad_state_list.back() |
623 ->content_to_target_transform.RotateAboutZAxis(90.f); | 623 ->quad_to_target_transform.RotateAboutZAxis(90.f); |
624 | 624 |
625 RenderPassList pass_list; | 625 RenderPassList pass_list; |
626 pass_list.push_back(pass.Pass()); | 626 pass_list.push_back(pass.Pass()); |
627 OverlayCandidateList candidate_list; | 627 OverlayCandidateList candidate_list; |
628 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 628 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
629 ASSERT_EQ(1U, pass_list.size()); | 629 ASSERT_EQ(1U, pass_list.size()); |
630 ASSERT_EQ(2U, candidate_list.size()); | 630 ASSERT_EQ(2U, candidate_list.size()); |
631 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); | 631 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); |
632 } | 632 } |
633 | 633 |
634 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { | 634 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { |
635 gfx::Rect rect = kOverlayRect; | 635 gfx::Rect rect = kOverlayRect; |
636 rect.Offset(-rect.width(), -rect.height()); | 636 rect.Offset(-rect.width(), -rect.height()); |
637 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 637 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
638 CreateCandidateQuadAt(resource_provider_.get(), | 638 CreateCandidateQuadAt(resource_provider_.get(), |
639 pass->shared_quad_state_list.back(), pass.get(), rect); | 639 pass->shared_quad_state_list.back(), pass.get(), rect); |
640 pass->shared_quad_state_list.back() | 640 pass->shared_quad_state_list.back() |
641 ->content_to_target_transform.RotateAboutZAxis(180.f); | 641 ->quad_to_target_transform.RotateAboutZAxis(180.f); |
642 | 642 |
643 RenderPassList pass_list; | 643 RenderPassList pass_list; |
644 pass_list.push_back(pass.Pass()); | 644 pass_list.push_back(pass.Pass()); |
645 OverlayCandidateList candidate_list; | 645 OverlayCandidateList candidate_list; |
646 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 646 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
647 ASSERT_EQ(1U, pass_list.size()); | 647 ASSERT_EQ(1U, pass_list.size()); |
648 ASSERT_EQ(2U, candidate_list.size()); | 648 ASSERT_EQ(2U, candidate_list.size()); |
649 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); | 649 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); |
650 } | 650 } |
651 | 651 |
652 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { | 652 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { |
653 gfx::Rect rect = kOverlayRect; | 653 gfx::Rect rect = kOverlayRect; |
654 rect.Offset(-rect.width(), 0); | 654 rect.Offset(-rect.width(), 0); |
655 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 655 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
656 CreateCandidateQuadAt(resource_provider_.get(), | 656 CreateCandidateQuadAt(resource_provider_.get(), |
657 pass->shared_quad_state_list.back(), pass.get(), rect); | 657 pass->shared_quad_state_list.back(), pass.get(), rect); |
658 pass->shared_quad_state_list.back() | 658 pass->shared_quad_state_list.back() |
659 ->content_to_target_transform.RotateAboutZAxis(270.f); | 659 ->quad_to_target_transform.RotateAboutZAxis(270.f); |
660 | 660 |
661 RenderPassList pass_list; | 661 RenderPassList pass_list; |
662 pass_list.push_back(pass.Pass()); | 662 pass_list.push_back(pass.Pass()); |
663 OverlayCandidateList candidate_list; | 663 OverlayCandidateList candidate_list; |
664 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); | 664 overlay_processor_->ProcessForOverlays(&pass_list, &candidate_list); |
665 ASSERT_EQ(1U, pass_list.size()); | 665 ASSERT_EQ(1U, pass_list.size()); |
666 ASSERT_EQ(2U, candidate_list.size()); | 666 ASSERT_EQ(2U, candidate_list.size()); |
667 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); | 667 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); |
668 } | 668 } |
669 | 669 |
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 renderer_->BeginDrawingFrame(&frame3); | 1182 renderer_->BeginDrawingFrame(&frame3); |
1183 renderer_->FinishDrawingFrame(&frame3); | 1183 renderer_->FinishDrawingFrame(&frame3); |
1184 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1184 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
1185 SwapBuffers(); | 1185 SwapBuffers(); |
1186 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1186 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
1187 Mock::VerifyAndClearExpectations(&scheduler_); | 1187 Mock::VerifyAndClearExpectations(&scheduler_); |
1188 } | 1188 } |
1189 | 1189 |
1190 } // namespace | 1190 } // namespace |
1191 } // namespace cc | 1191 } // namespace cc |
OLD | NEW |