Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: cc/output/overlay_unittest.cc

Issue 2881483002: Always set damage rect to output rect if 3D context was reshaped. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« cc/output/direct_renderer.cc ('K') | « cc/output/overlay_processor.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <utility> 7 #include <utility>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/containers/flat_map.h" 10 #include "base/containers/flat_map.h"
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 499
500 // Add something behind it. 500 // Add something behind it.
501 CreateFullscreenOpaqueQuad(resource_provider_.get(), 501 CreateFullscreenOpaqueQuad(resource_provider_.get(),
502 pass->shared_quad_state_list.back(), pass.get()); 502 pass->shared_quad_state_list.back(), pass.get());
503 503
504 // Check for potential candidates. 504 // Check for potential candidates.
505 OverlayCandidateList candidate_list; 505 OverlayCandidateList candidate_list;
506 base::flat_map<int, FilterOperations*> render_pass_filters; 506 base::flat_map<int, FilterOperations*> render_pass_filters;
507 base::flat_map<int, FilterOperations*> render_pass_background_filters; 507 base::flat_map<int, FilterOperations*> render_pass_background_filters;
508 overlay_processor_->ProcessForOverlays( 508 overlay_processor_->ProcessForOverlays(
509 resource_provider_.get(), pass.get(), render_pass_filters, 509 resource_provider_.get(), pass.get(), false, render_pass_filters,
510 render_pass_background_filters, &candidate_list, nullptr, nullptr, 510 render_pass_background_filters, &candidate_list, nullptr, nullptr,
511 &damage_rect_, &content_bounds_); 511 &damage_rect_, &content_bounds_);
512 ASSERT_EQ(1U, candidate_list.size()); 512 ASSERT_EQ(1U, candidate_list.size());
513 513
514 RenderPass* main_pass = pass.get(); 514 RenderPass* main_pass = pass.get();
515 // Check that all the quads are gone. 515 // Check that all the quads are gone.
516 EXPECT_EQ(0U, main_pass->quad_list.size()); 516 EXPECT_EQ(0U, main_pass->quad_list.size());
517 // Check that we have only one overlay. 517 // Check that we have only one overlay.
518 EXPECT_EQ(1U, candidate_list.size()); 518 EXPECT_EQ(1U, candidate_list.size());
519 // Check that the right resource id got extracted. 519 // Check that the right resource id got extracted.
520 EXPECT_EQ(original_resource_id, candidate_list.front().resource_id); 520 EXPECT_EQ(original_resource_id, candidate_list.front().resource_id);
521 } 521 }
522 522
523 TEST_F(FullscreenOverlayTest, AlphaFail) { 523 TEST_F(FullscreenOverlayTest, AlphaFail) {
524 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 524 std::unique_ptr<RenderPass> pass = CreateRenderPass();
525 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( 525 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad(
526 resource_provider_.get(), pass->shared_quad_state_list.back(), 526 resource_provider_.get(), pass->shared_quad_state_list.back(),
527 pass.get()); 527 pass.get());
528 original_quad->opaque_rect = gfx::Rect(0, 0, 0, 0); 528 original_quad->opaque_rect = gfx::Rect(0, 0, 0, 0);
529 529
530 // Check for potential candidates. 530 // Check for potential candidates.
531 OverlayCandidateList candidate_list; 531 OverlayCandidateList candidate_list;
532 base::flat_map<int, FilterOperations*> render_pass_filters; 532 base::flat_map<int, FilterOperations*> render_pass_filters;
533 base::flat_map<int, FilterOperations*> render_pass_background_filters; 533 base::flat_map<int, FilterOperations*> render_pass_background_filters;
534 overlay_processor_->ProcessForOverlays( 534 overlay_processor_->ProcessForOverlays(
535 resource_provider_.get(), pass.get(), render_pass_filters, 535 resource_provider_.get(), pass.get(), false, render_pass_filters,
536 render_pass_background_filters, &candidate_list, nullptr, nullptr, 536 render_pass_background_filters, &candidate_list, nullptr, nullptr,
537 &damage_rect_, &content_bounds_); 537 &damage_rect_, &content_bounds_);
538 538
539 RenderPass* main_pass = pass.get(); 539 RenderPass* main_pass = pass.get();
540 // Check that all the quads are gone. 540 // Check that all the quads are gone.
541 EXPECT_EQ(1U, main_pass->quad_list.size()); 541 EXPECT_EQ(1U, main_pass->quad_list.size());
542 // Check that we have only one overlay. 542 // Check that we have only one overlay.
543 EXPECT_EQ(0U, candidate_list.size()); 543 EXPECT_EQ(0U, candidate_list.size());
544 } 544 }
545 545
546 TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) { 546 TEST_F(FullscreenOverlayTest, ResourceSizeInPixelsFail) {
547 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 547 std::unique_ptr<RenderPass> pass = CreateRenderPass();
548 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( 548 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad(
549 resource_provider_.get(), pass->shared_quad_state_list.back(), 549 resource_provider_.get(), pass->shared_quad_state_list.back(),
550 pass.get()); 550 pass.get());
551 original_quad->set_resource_size_in_pixels(gfx::Size(64, 64)); 551 original_quad->set_resource_size_in_pixels(gfx::Size(64, 64));
552 552
553 // Check for potential candidates. 553 // Check for potential candidates.
554 OverlayCandidateList candidate_list; 554 OverlayCandidateList candidate_list;
555 base::flat_map<int, FilterOperations*> render_pass_filters; 555 base::flat_map<int, FilterOperations*> render_pass_filters;
556 base::flat_map<int, FilterOperations*> render_pass_background_filters; 556 base::flat_map<int, FilterOperations*> render_pass_background_filters;
557 overlay_processor_->ProcessForOverlays( 557 overlay_processor_->ProcessForOverlays(
558 resource_provider_.get(), pass.get(), render_pass_filters, 558 resource_provider_.get(), pass.get(), false, render_pass_filters,
559 render_pass_background_filters, &candidate_list, nullptr, nullptr, 559 render_pass_background_filters, &candidate_list, nullptr, nullptr,
560 &damage_rect_, &content_bounds_); 560 &damage_rect_, &content_bounds_);
561 ASSERT_EQ(0U, candidate_list.size()); 561 ASSERT_EQ(0U, candidate_list.size());
562 562
563 RenderPass* main_pass = pass.get(); 563 RenderPass* main_pass = pass.get();
564 // Check that the quad is not gone. 564 // Check that the quad is not gone.
565 EXPECT_EQ(1U, main_pass->quad_list.size()); 565 EXPECT_EQ(1U, main_pass->quad_list.size());
566 } 566 }
567 567
568 TEST_F(FullscreenOverlayTest, OnTopFail) { 568 TEST_F(FullscreenOverlayTest, OnTopFail) {
569 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 569 std::unique_ptr<RenderPass> pass = CreateRenderPass();
570 570
571 // Add something in front of it. 571 // Add something in front of it.
572 CreateOpaqueQuadAt(resource_provider_.get(), 572 CreateOpaqueQuadAt(resource_provider_.get(),
573 pass->shared_quad_state_list.back(), pass.get(), 573 pass->shared_quad_state_list.back(), pass.get(),
574 kOverlayTopLeftRect); 574 kOverlayTopLeftRect);
575 575
576 CreateFullscreenCandidateQuad(resource_provider_.get(), 576 CreateFullscreenCandidateQuad(resource_provider_.get(),
577 pass->shared_quad_state_list.back(), 577 pass->shared_quad_state_list.back(),
578 pass.get()); 578 pass.get());
579 579
580 // Check for potential candidates. 580 // Check for potential candidates.
581 OverlayCandidateList candidate_list; 581 OverlayCandidateList candidate_list;
582 base::flat_map<int, FilterOperations*> render_pass_filters; 582 base::flat_map<int, FilterOperations*> render_pass_filters;
583 base::flat_map<int, FilterOperations*> render_pass_background_filters; 583 base::flat_map<int, FilterOperations*> render_pass_background_filters;
584 overlay_processor_->ProcessForOverlays( 584 overlay_processor_->ProcessForOverlays(
585 resource_provider_.get(), pass.get(), render_pass_filters, 585 resource_provider_.get(), pass.get(), false, render_pass_filters,
586 render_pass_background_filters, &candidate_list, nullptr, nullptr, 586 render_pass_background_filters, &candidate_list, nullptr, nullptr,
587 &damage_rect_, &content_bounds_); 587 &damage_rect_, &content_bounds_);
588 ASSERT_EQ(0U, candidate_list.size()); 588 ASSERT_EQ(0U, candidate_list.size());
589 589
590 RenderPass* main_pass = pass.get(); 590 RenderPass* main_pass = pass.get();
591 // Check that the 2 quads are not gone. 591 // Check that the 2 quads are not gone.
592 EXPECT_EQ(2U, main_pass->quad_list.size()); 592 EXPECT_EQ(2U, main_pass->quad_list.size());
593 } 593 }
594 594
595 TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) { 595 TEST_F(FullscreenOverlayTest, NotCoveringFullscreenFail) {
596 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 596 std::unique_ptr<RenderPass> pass = CreateRenderPass();
597 gfx::Rect inset_rect = pass->output_rect; 597 gfx::Rect inset_rect = pass->output_rect;
598 inset_rect.Inset(0, 1, 0, 1); 598 inset_rect.Inset(0, 1, 0, 1);
599 CreateCandidateQuadAt(resource_provider_.get(), 599 CreateCandidateQuadAt(resource_provider_.get(),
600 pass->shared_quad_state_list.back(), pass.get(), 600 pass->shared_quad_state_list.back(), pass.get(),
601 inset_rect); 601 inset_rect);
602 602
603 // Check for potential candidates. 603 // Check for potential candidates.
604 OverlayCandidateList candidate_list; 604 OverlayCandidateList candidate_list;
605 base::flat_map<int, FilterOperations*> render_pass_filters; 605 base::flat_map<int, FilterOperations*> render_pass_filters;
606 base::flat_map<int, FilterOperations*> render_pass_background_filters; 606 base::flat_map<int, FilterOperations*> render_pass_background_filters;
607 overlay_processor_->ProcessForOverlays( 607 overlay_processor_->ProcessForOverlays(
608 resource_provider_.get(), pass.get(), render_pass_filters, 608 resource_provider_.get(), pass.get(), false, render_pass_filters,
609 render_pass_background_filters, &candidate_list, nullptr, nullptr, 609 render_pass_background_filters, &candidate_list, nullptr, nullptr,
610 &damage_rect_, &content_bounds_); 610 &damage_rect_, &content_bounds_);
611 ASSERT_EQ(0U, candidate_list.size()); 611 ASSERT_EQ(0U, candidate_list.size());
612 612
613 RenderPass* main_pass = pass.get(); 613 RenderPass* main_pass = pass.get();
614 // Check that the quad is not gone. 614 // Check that the quad is not gone.
615 EXPECT_EQ(1U, main_pass->quad_list.size()); 615 EXPECT_EQ(1U, main_pass->quad_list.size());
616 } 616 }
617 617
618 TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) { 618 TEST_F(FullscreenOverlayTest, RemoveFullscreenQuadFromQuadList) {
619 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 619 std::unique_ptr<RenderPass> pass = CreateRenderPass();
620 620
621 // Add something in front of it that is fully transparent. 621 // Add something in front of it that is fully transparent.
622 pass->shared_quad_state_list.back()->opacity = 0.0f; 622 pass->shared_quad_state_list.back()->opacity = 0.0f;
623 CreateOpaqueQuadAt(resource_provider_.get(), 623 CreateOpaqueQuadAt(resource_provider_.get(),
624 pass->shared_quad_state_list.back(), pass.get(), 624 pass->shared_quad_state_list.back(), pass.get(),
625 kOverlayTopLeftRect); 625 kOverlayTopLeftRect);
626 626
627 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 627 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
628 shared_state->opacity = 1.f; 628 shared_state->opacity = 1.f;
629 CreateFullscreenCandidateQuad(resource_provider_.get(), 629 CreateFullscreenCandidateQuad(resource_provider_.get(),
630 pass->shared_quad_state_list.back(), 630 pass->shared_quad_state_list.back(),
631 pass.get()); 631 pass.get());
632 632
633 // Check for potential candidates. 633 // Check for potential candidates.
634 OverlayCandidateList candidate_list; 634 OverlayCandidateList candidate_list;
635 base::flat_map<int, FilterOperations*> render_pass_filters; 635 base::flat_map<int, FilterOperations*> render_pass_filters;
636 base::flat_map<int, FilterOperations*> render_pass_background_filters; 636 base::flat_map<int, FilterOperations*> render_pass_background_filters;
637 overlay_processor_->ProcessForOverlays( 637 overlay_processor_->ProcessForOverlays(
638 resource_provider_.get(), pass.get(), render_pass_filters, 638 resource_provider_.get(), pass.get(), false, render_pass_filters,
639 render_pass_background_filters, &candidate_list, nullptr, nullptr, 639 render_pass_background_filters, &candidate_list, nullptr, nullptr,
640 &damage_rect_, &content_bounds_); 640 &damage_rect_, &content_bounds_);
641 ASSERT_EQ(1U, candidate_list.size()); 641 ASSERT_EQ(1U, candidate_list.size());
642 642
643 // Check that the fullscreen quad is gone. 643 // Check that the fullscreen quad is gone.
644 for (const DrawQuad* quad : pass->quad_list) { 644 for (const DrawQuad* quad : pass->quad_list) {
645 EXPECT_NE(pass->output_rect, quad->rect); 645 EXPECT_NE(pass->output_rect, quad->rect);
646 } 646 }
647 } 647 }
648 648
649 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) { 649 TEST_F(SingleOverlayOnTopTest, SuccessfulOverlay) {
650 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 650 std::unique_ptr<RenderPass> pass = CreateRenderPass();
651 TextureDrawQuad* original_quad = 651 TextureDrawQuad* original_quad =
652 CreateFullscreenCandidateQuad(resource_provider_.get(), 652 CreateFullscreenCandidateQuad(resource_provider_.get(),
653 pass->shared_quad_state_list.back(), 653 pass->shared_quad_state_list.back(),
654 pass.get()); 654 pass.get());
655 unsigned original_resource_id = original_quad->resource_id(); 655 unsigned original_resource_id = original_quad->resource_id();
656 656
657 // Add something behind it. 657 // Add something behind it.
658 CreateFullscreenOpaqueQuad(resource_provider_.get(), 658 CreateFullscreenOpaqueQuad(resource_provider_.get(),
659 pass->shared_quad_state_list.back(), pass.get()); 659 pass->shared_quad_state_list.back(), pass.get());
660 CreateFullscreenOpaqueQuad(resource_provider_.get(), 660 CreateFullscreenOpaqueQuad(resource_provider_.get(),
661 pass->shared_quad_state_list.back(), pass.get()); 661 pass->shared_quad_state_list.back(), pass.get());
662 662
663 // Check for potential candidates. 663 // Check for potential candidates.
664 OverlayCandidateList candidate_list; 664 OverlayCandidateList candidate_list;
665 base::flat_map<int, FilterOperations*> render_pass_filters; 665 base::flat_map<int, FilterOperations*> render_pass_filters;
666 base::flat_map<int, FilterOperations*> render_pass_background_filters; 666 base::flat_map<int, FilterOperations*> render_pass_background_filters;
667 overlay_processor_->ProcessForOverlays( 667 overlay_processor_->ProcessForOverlays(
668 resource_provider_.get(), pass.get(), render_pass_filters, 668 resource_provider_.get(), pass.get(), false, render_pass_filters,
669 render_pass_background_filters, &candidate_list, nullptr, nullptr, 669 render_pass_background_filters, &candidate_list, nullptr, nullptr,
670 &damage_rect_, &content_bounds_); 670 &damage_rect_, &content_bounds_);
671 ASSERT_EQ(1U, candidate_list.size()); 671 ASSERT_EQ(1U, candidate_list.size());
672 672
673 RenderPass* main_pass = pass.get(); 673 RenderPass* main_pass = pass.get();
674 // Check that the quad is gone. 674 // Check that the quad is gone.
675 EXPECT_EQ(2U, main_pass->quad_list.size()); 675 EXPECT_EQ(2U, main_pass->quad_list.size());
676 const QuadList& quad_list = main_pass->quad_list; 676 const QuadList& quad_list = main_pass->quad_list;
677 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); 677 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin();
678 it != quad_list.BackToFrontEnd(); 678 it != quad_list.BackToFrontEnd();
(...skipping 27 matching lines...) Expand all
706 706
707 // Add something behind it. 707 // Add something behind it.
708 CreateFullscreenOpaqueQuad(resource_provider_.get(), 708 CreateFullscreenOpaqueQuad(resource_provider_.get(),
709 pass->shared_quad_state_list.back(), pass.get()); 709 pass->shared_quad_state_list.back(), pass.get());
710 710
711 // Check for potential candidates. 711 // Check for potential candidates.
712 OverlayCandidateList candidate_list; 712 OverlayCandidateList candidate_list;
713 base::flat_map<int, FilterOperations*> render_pass_filters; 713 base::flat_map<int, FilterOperations*> render_pass_filters;
714 base::flat_map<int, FilterOperations*> render_pass_background_filters; 714 base::flat_map<int, FilterOperations*> render_pass_background_filters;
715 overlay_processor_->ProcessForOverlays( 715 overlay_processor_->ProcessForOverlays(
716 resource_provider_.get(), pass.get(), render_pass_filters, 716 resource_provider_.get(), pass.get(), false, render_pass_filters,
717 render_pass_background_filters, &candidate_list, nullptr, nullptr, 717 render_pass_background_filters, &candidate_list, nullptr, nullptr,
718 &damage_rect_, &content_bounds_); 718 &damage_rect_, &content_bounds_);
719 ASSERT_EQ(1U, candidate_list.size()); 719 ASSERT_EQ(1U, candidate_list.size());
720 720
721 RenderPass* main_pass = pass.get(); 721 RenderPass* main_pass = pass.get();
722 // Check that one quad is gone. 722 // Check that one quad is gone.
723 EXPECT_EQ(2U, main_pass->quad_list.size()); 723 EXPECT_EQ(2U, main_pass->quad_list.size());
724 // Check that we have only one overlay. 724 // Check that we have only one overlay.
725 EXPECT_EQ(1U, candidate_list.size()); 725 EXPECT_EQ(1U, candidate_list.size());
726 // Check that the right resource id (bigger quad) got extracted. 726 // Check that the right resource id (bigger quad) got extracted.
(...skipping 20 matching lines...) Expand all
747 OverlayCandidate output_surface_plane; 747 OverlayCandidate output_surface_plane;
748 output_surface_plane.display_rect = gfx::RectF(kOverlayRect); 748 output_surface_plane.display_rect = gfx::RectF(kOverlayRect);
749 output_surface_plane.quad_rect_in_target_space = kOverlayRect; 749 output_surface_plane.quad_rect_in_target_space = kOverlayRect;
750 output_surface_plane.use_output_surface_for_resource = true; 750 output_surface_plane.use_output_surface_for_resource = true;
751 output_surface_plane.overlay_handled = true; 751 output_surface_plane.overlay_handled = true;
752 candidate_list.push_back(output_surface_plane); 752 candidate_list.push_back(output_surface_plane);
753 753
754 base::flat_map<int, FilterOperations*> render_pass_filters; 754 base::flat_map<int, FilterOperations*> render_pass_filters;
755 base::flat_map<int, FilterOperations*> render_pass_background_filters; 755 base::flat_map<int, FilterOperations*> render_pass_background_filters;
756 overlay_processor_->ProcessForOverlays( 756 overlay_processor_->ProcessForOverlays(
757 resource_provider_.get(), pass.get(), render_pass_filters, 757 resource_provider_.get(), pass.get(), false, render_pass_filters,
758 render_pass_background_filters, &candidate_list, nullptr, nullptr, 758 render_pass_background_filters, &candidate_list, nullptr, nullptr,
759 &damage_rect_, &content_bounds_); 759 &damage_rect_, &content_bounds_);
760 EXPECT_TRUE(damage_rect_.IsEmpty()); 760 EXPECT_TRUE(damage_rect_.IsEmpty());
761 } 761 }
762 762
763 TEST_F(SingleOverlayOnTopTest, NoCandidates) { 763 TEST_F(SingleOverlayOnTopTest, NoCandidates) {
764 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 764 std::unique_ptr<RenderPass> pass = CreateRenderPass();
765 CreateFullscreenOpaqueQuad(resource_provider_.get(), 765 CreateFullscreenOpaqueQuad(resource_provider_.get(),
766 pass->shared_quad_state_list.back(), pass.get()); 766 pass->shared_quad_state_list.back(), pass.get());
767 CreateFullscreenOpaqueQuad(resource_provider_.get(), 767 CreateFullscreenOpaqueQuad(resource_provider_.get(),
768 pass->shared_quad_state_list.back(), pass.get()); 768 pass->shared_quad_state_list.back(), pass.get());
769 769
770 RenderPassList pass_list; 770 RenderPassList pass_list;
771 pass_list.push_back(std::move(pass)); 771 pass_list.push_back(std::move(pass));
772 772
773 RenderPassList original_pass_list; 773 RenderPassList original_pass_list;
774 RenderPass::CopyAll(pass_list, &original_pass_list); 774 RenderPass::CopyAll(pass_list, &original_pass_list);
775 775
776 OverlayCandidateList candidate_list; 776 OverlayCandidateList candidate_list;
777 base::flat_map<int, FilterOperations*> render_pass_filters; 777 base::flat_map<int, FilterOperations*> render_pass_filters;
778 base::flat_map<int, FilterOperations*> render_pass_background_filters; 778 base::flat_map<int, FilterOperations*> render_pass_background_filters;
779 overlay_processor_->ProcessForOverlays( 779 overlay_processor_->ProcessForOverlays(
780 resource_provider_.get(), pass_list.back().get(), render_pass_filters, 780 resource_provider_.get(), pass_list.back().get(), false,
781 render_pass_background_filters, &candidate_list, nullptr, nullptr, 781 render_pass_filters, render_pass_background_filters, &candidate_list,
782 &damage_rect_, &content_bounds_); 782 nullptr, nullptr, &damage_rect_, &content_bounds_);
783 EXPECT_EQ(0U, candidate_list.size()); 783 EXPECT_EQ(0U, candidate_list.size());
784 // There should be nothing new here. 784 // There should be nothing new here.
785 CompareRenderPassLists(pass_list, original_pass_list); 785 CompareRenderPassLists(pass_list, original_pass_list);
786 } 786 }
787 787
788 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) { 788 TEST_F(SingleOverlayOnTopTest, OccludedCandidates) {
789 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 789 std::unique_ptr<RenderPass> pass = CreateRenderPass();
790 CreateFullscreenOpaqueQuad(resource_provider_.get(), 790 CreateFullscreenOpaqueQuad(resource_provider_.get(),
791 pass->shared_quad_state_list.back(), pass.get()); 791 pass->shared_quad_state_list.back(), pass.get());
792 CreateFullscreenOpaqueQuad(resource_provider_.get(), 792 CreateFullscreenOpaqueQuad(resource_provider_.get(),
793 pass->shared_quad_state_list.back(), pass.get()); 793 pass->shared_quad_state_list.back(), pass.get());
794 794
795 CreateFullscreenCandidateQuad(resource_provider_.get(), 795 CreateFullscreenCandidateQuad(resource_provider_.get(),
796 pass->shared_quad_state_list.back(), 796 pass->shared_quad_state_list.back(),
797 pass.get()); 797 pass.get());
798 798
799 RenderPassList pass_list; 799 RenderPassList pass_list;
800 pass_list.push_back(std::move(pass)); 800 pass_list.push_back(std::move(pass));
801 801
802 RenderPassList original_pass_list; 802 RenderPassList original_pass_list;
803 RenderPass::CopyAll(pass_list, &original_pass_list); 803 RenderPass::CopyAll(pass_list, &original_pass_list);
804 804
805 OverlayCandidateList candidate_list; 805 OverlayCandidateList candidate_list;
806 base::flat_map<int, FilterOperations*> render_pass_filters; 806 base::flat_map<int, FilterOperations*> render_pass_filters;
807 base::flat_map<int, FilterOperations*> render_pass_background_filters; 807 base::flat_map<int, FilterOperations*> render_pass_background_filters;
808 overlay_processor_->ProcessForOverlays( 808 overlay_processor_->ProcessForOverlays(
809 resource_provider_.get(), pass_list.back().get(), render_pass_filters, 809 resource_provider_.get(), pass_list.back().get(), false,
810 render_pass_background_filters, &candidate_list, nullptr, nullptr, 810 render_pass_filters, render_pass_background_filters, &candidate_list,
811 &damage_rect_, &content_bounds_); 811 nullptr, nullptr, &damage_rect_, &content_bounds_);
812 EXPECT_EQ(0U, candidate_list.size()); 812 EXPECT_EQ(0U, candidate_list.size());
813 // There should be nothing new here. 813 // There should be nothing new here.
814 CompareRenderPassLists(pass_list, original_pass_list); 814 CompareRenderPassLists(pass_list, original_pass_list);
815 } 815 }
816 816
817 // Test with multiple render passes. 817 // Test with multiple render passes.
818 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) { 818 TEST_F(SingleOverlayOnTopTest, MultipleRenderPasses) {
819 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 819 std::unique_ptr<RenderPass> pass = CreateRenderPass();
820 CreateFullscreenCandidateQuad(resource_provider_.get(), 820 CreateFullscreenCandidateQuad(resource_provider_.get(),
821 pass->shared_quad_state_list.back(), 821 pass->shared_quad_state_list.back(),
822 pass.get()); 822 pass.get());
823 823
824 // Add something behind it. 824 // Add something behind it.
825 CreateFullscreenOpaqueQuad(resource_provider_.get(), 825 CreateFullscreenOpaqueQuad(resource_provider_.get(),
826 pass->shared_quad_state_list.back(), pass.get()); 826 pass->shared_quad_state_list.back(), pass.get());
827 CreateFullscreenOpaqueQuad(resource_provider_.get(), 827 CreateFullscreenOpaqueQuad(resource_provider_.get(),
828 pass->shared_quad_state_list.back(), pass.get()); 828 pass->shared_quad_state_list.back(), pass.get());
829 829
830 // Check for potential candidates. 830 // Check for potential candidates.
831 OverlayCandidateList candidate_list; 831 OverlayCandidateList candidate_list;
832 base::flat_map<int, FilterOperations*> render_pass_filters; 832 base::flat_map<int, FilterOperations*> render_pass_filters;
833 base::flat_map<int, FilterOperations*> render_pass_background_filters; 833 base::flat_map<int, FilterOperations*> render_pass_background_filters;
834 overlay_processor_->ProcessForOverlays( 834 overlay_processor_->ProcessForOverlays(
835 resource_provider_.get(), pass.get(), render_pass_filters, 835 resource_provider_.get(), pass.get(), false, render_pass_filters,
836 render_pass_background_filters, &candidate_list, nullptr, nullptr, 836 render_pass_background_filters, &candidate_list, nullptr, nullptr,
837 &damage_rect_, &content_bounds_); 837 &damage_rect_, &content_bounds_);
838 EXPECT_EQ(1U, candidate_list.size()); 838 EXPECT_EQ(1U, candidate_list.size());
839 } 839 }
840 840
841 TEST_F(SingleOverlayOnTopTest, AcceptBlending) { 841 TEST_F(SingleOverlayOnTopTest, AcceptBlending) {
842 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 842 std::unique_ptr<RenderPass> pass = CreateRenderPass();
843 TextureDrawQuad* quad = 843 TextureDrawQuad* quad =
844 CreateFullscreenCandidateQuad(resource_provider_.get(), 844 CreateFullscreenCandidateQuad(resource_provider_.get(),
845 pass->shared_quad_state_list.back(), 845 pass->shared_quad_state_list.back(),
846 pass.get()); 846 pass.get());
847 quad->needs_blending = true; 847 quad->needs_blending = true;
848 quad->opaque_rect = gfx::Rect(0, 0, 0, 0); 848 quad->opaque_rect = gfx::Rect(0, 0, 0, 0);
849 849
850 OverlayCandidateList candidate_list; 850 OverlayCandidateList candidate_list;
851 base::flat_map<int, FilterOperations*> render_pass_filters; 851 base::flat_map<int, FilterOperations*> render_pass_filters;
852 base::flat_map<int, FilterOperations*> render_pass_background_filters; 852 base::flat_map<int, FilterOperations*> render_pass_background_filters;
853 damage_rect_ = quad->rect; 853 damage_rect_ = quad->rect;
854 overlay_processor_->ProcessForOverlays( 854 overlay_processor_->ProcessForOverlays(
855 resource_provider_.get(), pass.get(), render_pass_filters, 855 resource_provider_.get(), pass.get(), false, render_pass_filters,
856 render_pass_background_filters, &candidate_list, nullptr, nullptr, 856 render_pass_background_filters, &candidate_list, nullptr, nullptr,
857 &damage_rect_, &content_bounds_); 857 &damage_rect_, &content_bounds_);
858 EXPECT_EQ(1U, candidate_list.size()); 858 EXPECT_EQ(1U, candidate_list.size());
859 EXPECT_FALSE(damage_rect_.IsEmpty()); 859 EXPECT_FALSE(damage_rect_.IsEmpty());
860 } 860 }
861 861
862 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) { 862 TEST_F(SingleOverlayOnTopTest, RejectBackgroundColor) {
863 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 863 std::unique_ptr<RenderPass> pass = CreateRenderPass();
864 TextureDrawQuad* quad = 864 TextureDrawQuad* quad =
865 CreateFullscreenCandidateQuad(resource_provider_.get(), 865 CreateFullscreenCandidateQuad(resource_provider_.get(),
866 pass->shared_quad_state_list.back(), 866 pass->shared_quad_state_list.back(),
867 pass.get()); 867 pass.get());
868 quad->background_color = SK_ColorBLACK; 868 quad->background_color = SK_ColorBLACK;
869 869
870 OverlayCandidateList candidate_list; 870 OverlayCandidateList candidate_list;
871 base::flat_map<int, FilterOperations*> render_pass_filters; 871 base::flat_map<int, FilterOperations*> render_pass_filters;
872 base::flat_map<int, FilterOperations*> render_pass_background_filters; 872 base::flat_map<int, FilterOperations*> render_pass_background_filters;
873 overlay_processor_->ProcessForOverlays( 873 overlay_processor_->ProcessForOverlays(
874 resource_provider_.get(), pass.get(), render_pass_filters, 874 resource_provider_.get(), pass.get(), false, render_pass_filters,
875 render_pass_background_filters, &candidate_list, nullptr, nullptr, 875 render_pass_background_filters, &candidate_list, nullptr, nullptr,
876 &damage_rect_, &content_bounds_); 876 &damage_rect_, &content_bounds_);
877 EXPECT_EQ(0U, candidate_list.size()); 877 EXPECT_EQ(0U, candidate_list.size());
878 } 878 }
879 879
880 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) { 880 TEST_F(SingleOverlayOnTopTest, RejectBlendMode) {
881 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 881 std::unique_ptr<RenderPass> pass = CreateRenderPass();
882 CreateFullscreenCandidateQuad(resource_provider_.get(), 882 CreateFullscreenCandidateQuad(resource_provider_.get(),
883 pass->shared_quad_state_list.back(), 883 pass->shared_quad_state_list.back(),
884 pass.get()); 884 pass.get());
885 pass->shared_quad_state_list.back()->blend_mode = SkBlendMode::kScreen; 885 pass->shared_quad_state_list.back()->blend_mode = SkBlendMode::kScreen;
886 886
887 OverlayCandidateList candidate_list; 887 OverlayCandidateList candidate_list;
888 base::flat_map<int, FilterOperations*> render_pass_filters; 888 base::flat_map<int, FilterOperations*> render_pass_filters;
889 base::flat_map<int, FilterOperations*> render_pass_background_filters; 889 base::flat_map<int, FilterOperations*> render_pass_background_filters;
890 overlay_processor_->ProcessForOverlays( 890 overlay_processor_->ProcessForOverlays(
891 resource_provider_.get(), pass.get(), render_pass_filters, 891 resource_provider_.get(), pass.get(), false, render_pass_filters,
892 render_pass_background_filters, &candidate_list, nullptr, nullptr, 892 render_pass_background_filters, &candidate_list, nullptr, nullptr,
893 &damage_rect_, &content_bounds_); 893 &damage_rect_, &content_bounds_);
894 EXPECT_EQ(0U, candidate_list.size()); 894 EXPECT_EQ(0U, candidate_list.size());
895 } 895 }
896 896
897 TEST_F(SingleOverlayOnTopTest, RejectOpacity) { 897 TEST_F(SingleOverlayOnTopTest, RejectOpacity) {
898 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 898 std::unique_ptr<RenderPass> pass = CreateRenderPass();
899 CreateFullscreenCandidateQuad(resource_provider_.get(), 899 CreateFullscreenCandidateQuad(resource_provider_.get(),
900 pass->shared_quad_state_list.back(), 900 pass->shared_quad_state_list.back(),
901 pass.get()); 901 pass.get());
902 pass->shared_quad_state_list.back()->opacity = 0.5f; 902 pass->shared_quad_state_list.back()->opacity = 0.5f;
903 903
904 OverlayCandidateList candidate_list; 904 OverlayCandidateList candidate_list;
905 base::flat_map<int, FilterOperations*> render_pass_filters; 905 base::flat_map<int, FilterOperations*> render_pass_filters;
906 base::flat_map<int, FilterOperations*> render_pass_background_filters; 906 base::flat_map<int, FilterOperations*> render_pass_background_filters;
907 overlay_processor_->ProcessForOverlays( 907 overlay_processor_->ProcessForOverlays(
908 resource_provider_.get(), pass.get(), render_pass_filters, 908 resource_provider_.get(), pass.get(), false, render_pass_filters,
909 render_pass_background_filters, &candidate_list, nullptr, nullptr, 909 render_pass_background_filters, &candidate_list, nullptr, nullptr,
910 &damage_rect_, &content_bounds_); 910 &damage_rect_, &content_bounds_);
911 EXPECT_EQ(0U, candidate_list.size()); 911 EXPECT_EQ(0U, candidate_list.size());
912 } 912 }
913 913
914 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) { 914 TEST_F(SingleOverlayOnTopTest, RejectNonAxisAlignedTransform) {
915 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 915 std::unique_ptr<RenderPass> pass = CreateRenderPass();
916 CreateFullscreenCandidateQuad(resource_provider_.get(), 916 CreateFullscreenCandidateQuad(resource_provider_.get(),
917 pass->shared_quad_state_list.back(), 917 pass->shared_quad_state_list.back(),
918 pass.get()); 918 pass.get());
919 pass->shared_quad_state_list.back() 919 pass->shared_quad_state_list.back()
920 ->quad_to_target_transform.RotateAboutXAxis(45.f); 920 ->quad_to_target_transform.RotateAboutXAxis(45.f);
921 921
922 OverlayCandidateList candidate_list; 922 OverlayCandidateList candidate_list;
923 base::flat_map<int, FilterOperations*> render_pass_filters; 923 base::flat_map<int, FilterOperations*> render_pass_filters;
924 base::flat_map<int, FilterOperations*> render_pass_background_filters; 924 base::flat_map<int, FilterOperations*> render_pass_background_filters;
925 overlay_processor_->ProcessForOverlays( 925 overlay_processor_->ProcessForOverlays(
926 resource_provider_.get(), pass.get(), render_pass_filters, 926 resource_provider_.get(), pass.get(), false, render_pass_filters,
927 render_pass_background_filters, &candidate_list, nullptr, nullptr, 927 render_pass_background_filters, &candidate_list, nullptr, nullptr,
928 &damage_rect_, &content_bounds_); 928 &damage_rect_, &content_bounds_);
929 EXPECT_EQ(0U, candidate_list.size()); 929 EXPECT_EQ(0U, candidate_list.size());
930 } 930 }
931 931
932 TEST_F(SingleOverlayOnTopTest, AllowClipped) { 932 TEST_F(SingleOverlayOnTopTest, AllowClipped) {
933 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 933 std::unique_ptr<RenderPass> pass = CreateRenderPass();
934 CreateFullscreenCandidateQuad(resource_provider_.get(), 934 CreateFullscreenCandidateQuad(resource_provider_.get(),
935 pass->shared_quad_state_list.back(), 935 pass->shared_quad_state_list.back(),
936 pass.get()); 936 pass.get());
937 pass->shared_quad_state_list.back()->is_clipped = true; 937 pass->shared_quad_state_list.back()->is_clipped = true;
938 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect; 938 pass->shared_quad_state_list.back()->clip_rect = kOverlayClipRect;
939 939
940 OverlayCandidateList candidate_list; 940 OverlayCandidateList candidate_list;
941 base::flat_map<int, FilterOperations*> render_pass_filters; 941 base::flat_map<int, FilterOperations*> render_pass_filters;
942 base::flat_map<int, FilterOperations*> render_pass_background_filters; 942 base::flat_map<int, FilterOperations*> render_pass_background_filters;
943 overlay_processor_->ProcessForOverlays( 943 overlay_processor_->ProcessForOverlays(
944 resource_provider_.get(), pass.get(), render_pass_filters, 944 resource_provider_.get(), pass.get(), false, render_pass_filters,
945 render_pass_background_filters, &candidate_list, nullptr, nullptr, 945 render_pass_background_filters, &candidate_list, nullptr, nullptr,
946 &damage_rect_, &content_bounds_); 946 &damage_rect_, &content_bounds_);
947 EXPECT_EQ(1U, candidate_list.size()); 947 EXPECT_EQ(1U, candidate_list.size());
948 } 948 }
949 949
950 TEST_F(UnderlayTest, AllowVerticalFlip) { 950 TEST_F(UnderlayTest, AllowVerticalFlip) {
951 gfx::Rect rect = kOverlayRect; 951 gfx::Rect rect = kOverlayRect;
952 rect.set_width(rect.width() / 2); 952 rect.set_width(rect.width() / 2);
953 rect.Offset(0, -rect.height()); 953 rect.Offset(0, -rect.height());
954 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 954 std::unique_ptr<RenderPass> pass = CreateRenderPass();
955 CreateCandidateQuadAt(resource_provider_.get(), 955 CreateCandidateQuadAt(resource_provider_.get(),
956 pass->shared_quad_state_list.back(), pass.get(), rect); 956 pass->shared_quad_state_list.back(), pass.get(), rect);
957 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 957 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
958 -1.0f); 958 -1.0f);
959 OverlayCandidateList candidate_list; 959 OverlayCandidateList candidate_list;
960 base::flat_map<int, FilterOperations*> render_pass_filters; 960 base::flat_map<int, FilterOperations*> render_pass_filters;
961 base::flat_map<int, FilterOperations*> render_pass_background_filters; 961 base::flat_map<int, FilterOperations*> render_pass_background_filters;
962 overlay_processor_->ProcessForOverlays( 962 overlay_processor_->ProcessForOverlays(
963 resource_provider_.get(), pass.get(), render_pass_filters, 963 resource_provider_.get(), pass.get(), false, render_pass_filters,
964 render_pass_background_filters, &candidate_list, nullptr, nullptr, 964 render_pass_background_filters, &candidate_list, nullptr, nullptr,
965 &damage_rect_, &content_bounds_); 965 &damage_rect_, &content_bounds_);
966 ASSERT_EQ(1U, candidate_list.size()); 966 ASSERT_EQ(1U, candidate_list.size());
967 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, 967 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
968 candidate_list.back().transform); 968 candidate_list.back().transform);
969 } 969 }
970 970
971 TEST_F(UnderlayTest, AllowHorizontalFlip) { 971 TEST_F(UnderlayTest, AllowHorizontalFlip) {
972 gfx::Rect rect = kOverlayRect; 972 gfx::Rect rect = kOverlayRect;
973 rect.set_height(rect.height() / 2); 973 rect.set_height(rect.height() / 2);
974 rect.Offset(-rect.width(), 0); 974 rect.Offset(-rect.width(), 0);
975 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 975 std::unique_ptr<RenderPass> pass = CreateRenderPass();
976 CreateCandidateQuadAt(resource_provider_.get(), 976 CreateCandidateQuadAt(resource_provider_.get(),
977 pass->shared_quad_state_list.back(), pass.get(), rect); 977 pass->shared_quad_state_list.back(), pass.get(), rect);
978 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, 978 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f,
979 2.0f); 979 2.0f);
980 980
981 OverlayCandidateList candidate_list; 981 OverlayCandidateList candidate_list;
982 base::flat_map<int, FilterOperations*> render_pass_filters; 982 base::flat_map<int, FilterOperations*> render_pass_filters;
983 base::flat_map<int, FilterOperations*> render_pass_background_filters; 983 base::flat_map<int, FilterOperations*> render_pass_background_filters;
984 overlay_processor_->ProcessForOverlays( 984 overlay_processor_->ProcessForOverlays(
985 resource_provider_.get(), pass.get(), render_pass_filters, 985 resource_provider_.get(), pass.get(), false, render_pass_filters,
986 render_pass_background_filters, &candidate_list, nullptr, nullptr, 986 render_pass_background_filters, &candidate_list, nullptr, nullptr,
987 &damage_rect_, &content_bounds_); 987 &damage_rect_, &content_bounds_);
988 ASSERT_EQ(1U, candidate_list.size()); 988 ASSERT_EQ(1U, candidate_list.size());
989 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL, 989 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL,
990 candidate_list.back().transform); 990 candidate_list.back().transform);
991 } 991 }
992 992
993 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) { 993 TEST_F(SingleOverlayOnTopTest, AllowPositiveScaleTransform) {
994 gfx::Rect rect = kOverlayRect; 994 gfx::Rect rect = kOverlayRect;
995 rect.set_width(rect.width() / 2); 995 rect.set_width(rect.width() / 2);
996 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 996 std::unique_ptr<RenderPass> pass = CreateRenderPass();
997 CreateCandidateQuadAt(resource_provider_.get(), 997 CreateCandidateQuadAt(resource_provider_.get(),
998 pass->shared_quad_state_list.back(), pass.get(), rect); 998 pass->shared_quad_state_list.back(), pass.get(), rect);
999 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 999 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
1000 1.0f); 1000 1.0f);
1001 OverlayCandidateList candidate_list; 1001 OverlayCandidateList candidate_list;
1002 base::flat_map<int, FilterOperations*> render_pass_filters; 1002 base::flat_map<int, FilterOperations*> render_pass_filters;
1003 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1003 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1004 overlay_processor_->ProcessForOverlays( 1004 overlay_processor_->ProcessForOverlays(
1005 resource_provider_.get(), pass.get(), render_pass_filters, 1005 resource_provider_.get(), pass.get(), false, render_pass_filters,
1006 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1006 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1007 &damage_rect_, &content_bounds_); 1007 &damage_rect_, &content_bounds_);
1008 EXPECT_EQ(1U, candidate_list.size()); 1008 EXPECT_EQ(1U, candidate_list.size());
1009 } 1009 }
1010 1010
1011 TEST_F(SingleOverlayOnTopTest, AcceptMirrorYTransform) { 1011 TEST_F(SingleOverlayOnTopTest, AcceptMirrorYTransform) {
1012 gfx::Rect rect = kOverlayRect; 1012 gfx::Rect rect = kOverlayRect;
1013 rect.Offset(0, -rect.height()); 1013 rect.Offset(0, -rect.height());
1014 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1014 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1015 CreateCandidateQuadAt(resource_provider_.get(), 1015 CreateCandidateQuadAt(resource_provider_.get(),
1016 pass->shared_quad_state_list.back(), pass.get(), rect); 1016 pass->shared_quad_state_list.back(), pass.get(), rect);
1017 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(1.f, 1017 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(1.f,
1018 -1.f); 1018 -1.f);
1019 1019
1020 OverlayCandidateList candidate_list; 1020 OverlayCandidateList candidate_list;
1021 base::flat_map<int, FilterOperations*> render_pass_filters; 1021 base::flat_map<int, FilterOperations*> render_pass_filters;
1022 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1022 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1023 overlay_processor_->ProcessForOverlays( 1023 overlay_processor_->ProcessForOverlays(
1024 resource_provider_.get(), pass.get(), render_pass_filters, 1024 resource_provider_.get(), pass.get(), false, render_pass_filters,
1025 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1025 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1026 &damage_rect_, &content_bounds_); 1026 &damage_rect_, &content_bounds_);
1027 ASSERT_EQ(1U, candidate_list.size()); 1027 ASSERT_EQ(1U, candidate_list.size());
1028 } 1028 }
1029 1029
1030 TEST_F(UnderlayTest, Allow90DegreeRotation) { 1030 TEST_F(UnderlayTest, Allow90DegreeRotation) {
1031 gfx::Rect rect = kOverlayRect; 1031 gfx::Rect rect = kOverlayRect;
1032 rect.Offset(0, -rect.height()); 1032 rect.Offset(0, -rect.height());
1033 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1033 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1034 CreateCandidateQuadAt(resource_provider_.get(), 1034 CreateCandidateQuadAt(resource_provider_.get(),
1035 pass->shared_quad_state_list.back(), pass.get(), rect); 1035 pass->shared_quad_state_list.back(), pass.get(), rect);
1036 pass->shared_quad_state_list.back() 1036 pass->shared_quad_state_list.back()
1037 ->quad_to_target_transform.RotateAboutZAxis(90.f); 1037 ->quad_to_target_transform.RotateAboutZAxis(90.f);
1038 1038
1039 OverlayCandidateList candidate_list; 1039 OverlayCandidateList candidate_list;
1040 base::flat_map<int, FilterOperations*> render_pass_filters; 1040 base::flat_map<int, FilterOperations*> render_pass_filters;
1041 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1041 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1042 overlay_processor_->ProcessForOverlays( 1042 overlay_processor_->ProcessForOverlays(
1043 resource_provider_.get(), pass.get(), render_pass_filters, 1043 resource_provider_.get(), pass.get(), false, render_pass_filters,
1044 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1044 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1045 &damage_rect_, &content_bounds_); 1045 &damage_rect_, &content_bounds_);
1046 ASSERT_EQ(1U, candidate_list.size()); 1046 ASSERT_EQ(1U, candidate_list.size());
1047 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); 1047 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
1048 } 1048 }
1049 1049
1050 TEST_F(UnderlayTest, Allow180DegreeRotation) { 1050 TEST_F(UnderlayTest, Allow180DegreeRotation) {
1051 gfx::Rect rect = kOverlayRect; 1051 gfx::Rect rect = kOverlayRect;
1052 rect.Offset(-rect.width(), -rect.height()); 1052 rect.Offset(-rect.width(), -rect.height());
1053 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1053 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1054 CreateCandidateQuadAt(resource_provider_.get(), 1054 CreateCandidateQuadAt(resource_provider_.get(),
1055 pass->shared_quad_state_list.back(), pass.get(), rect); 1055 pass->shared_quad_state_list.back(), pass.get(), rect);
1056 pass->shared_quad_state_list.back() 1056 pass->shared_quad_state_list.back()
1057 ->quad_to_target_transform.RotateAboutZAxis(180.f); 1057 ->quad_to_target_transform.RotateAboutZAxis(180.f);
1058 1058
1059 OverlayCandidateList candidate_list; 1059 OverlayCandidateList candidate_list;
1060 base::flat_map<int, FilterOperations*> render_pass_filters; 1060 base::flat_map<int, FilterOperations*> render_pass_filters;
1061 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1061 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1062 overlay_processor_->ProcessForOverlays( 1062 overlay_processor_->ProcessForOverlays(
1063 resource_provider_.get(), pass.get(), render_pass_filters, 1063 resource_provider_.get(), pass.get(), false, render_pass_filters,
1064 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1064 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1065 &damage_rect_, &content_bounds_); 1065 &damage_rect_, &content_bounds_);
1066 ASSERT_EQ(1U, candidate_list.size()); 1066 ASSERT_EQ(1U, candidate_list.size());
1067 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); 1067 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
1068 } 1068 }
1069 1069
1070 TEST_F(UnderlayTest, Allow270DegreeRotation) { 1070 TEST_F(UnderlayTest, Allow270DegreeRotation) {
1071 gfx::Rect rect = kOverlayRect; 1071 gfx::Rect rect = kOverlayRect;
1072 rect.Offset(-rect.width(), 0); 1072 rect.Offset(-rect.width(), 0);
1073 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1073 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1074 CreateCandidateQuadAt(resource_provider_.get(), 1074 CreateCandidateQuadAt(resource_provider_.get(),
1075 pass->shared_quad_state_list.back(), pass.get(), rect); 1075 pass->shared_quad_state_list.back(), pass.get(), rect);
1076 pass->shared_quad_state_list.back() 1076 pass->shared_quad_state_list.back()
1077 ->quad_to_target_transform.RotateAboutZAxis(270.f); 1077 ->quad_to_target_transform.RotateAboutZAxis(270.f);
1078 1078
1079 OverlayCandidateList candidate_list; 1079 OverlayCandidateList candidate_list;
1080 base::flat_map<int, FilterOperations*> render_pass_filters; 1080 base::flat_map<int, FilterOperations*> render_pass_filters;
1081 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1081 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1082 overlay_processor_->ProcessForOverlays( 1082 overlay_processor_->ProcessForOverlays(
1083 resource_provider_.get(), pass.get(), render_pass_filters, 1083 resource_provider_.get(), pass.get(), false, render_pass_filters,
1084 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1084 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1085 &damage_rect_, &content_bounds_); 1085 &damage_rect_, &content_bounds_);
1086 ASSERT_EQ(1U, candidate_list.size()); 1086 ASSERT_EQ(1U, candidate_list.size());
1087 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform); 1087 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_270, candidate_list.back().transform);
1088 } 1088 }
1089 1089
1090 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) { 1090 TEST_F(SingleOverlayOnTopTest, AllowNotTopIfNotOccluded) {
1091 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1091 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1092 gfx::RectF(kOverlayBottomRightRect)); 1092 gfx::RectF(kOverlayBottomRightRect));
1093 1093
1094 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1094 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1095 CreateOpaqueQuadAt(resource_provider_.get(), 1095 CreateOpaqueQuadAt(resource_provider_.get(),
1096 pass->shared_quad_state_list.back(), pass.get(), 1096 pass->shared_quad_state_list.back(), pass.get(),
1097 kOverlayTopLeftRect); 1097 kOverlayTopLeftRect);
1098 CreateCandidateQuadAt(resource_provider_.get(), 1098 CreateCandidateQuadAt(resource_provider_.get(),
1099 pass->shared_quad_state_list.back(), 1099 pass->shared_quad_state_list.back(),
1100 pass.get(), 1100 pass.get(),
1101 kOverlayBottomRightRect); 1101 kOverlayBottomRightRect);
1102 1102
1103 OverlayCandidateList candidate_list; 1103 OverlayCandidateList candidate_list;
1104 base::flat_map<int, FilterOperations*> render_pass_filters; 1104 base::flat_map<int, FilterOperations*> render_pass_filters;
1105 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1105 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1106 overlay_processor_->ProcessForOverlays( 1106 overlay_processor_->ProcessForOverlays(
1107 resource_provider_.get(), pass.get(), render_pass_filters, 1107 resource_provider_.get(), pass.get(), false, render_pass_filters,
1108 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1108 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1109 &damage_rect_, &content_bounds_); 1109 &damage_rect_, &content_bounds_);
1110 EXPECT_EQ(1U, candidate_list.size()); 1110 EXPECT_EQ(1U, candidate_list.size());
1111 } 1111 }
1112 1112
1113 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) { 1113 TEST_F(SingleOverlayOnTopTest, AllowTransparentOnTop) {
1114 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1114 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1115 gfx::RectF(kOverlayBottomRightRect)); 1115 gfx::RectF(kOverlayBottomRightRect));
1116 1116
1117 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1117 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1118 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1118 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1119 shared_state->opacity = 0.f; 1119 shared_state->opacity = 0.f;
1120 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 1120 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
1121 kOverlayBottomRightRect); 1121 kOverlayBottomRightRect);
1122 shared_state = pass->CreateAndAppendSharedQuadState(); 1122 shared_state = pass->CreateAndAppendSharedQuadState();
1123 shared_state->opacity = 1.f; 1123 shared_state->opacity = 1.f;
1124 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1124 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1125 kOverlayBottomRightRect); 1125 kOverlayBottomRightRect);
1126 1126
1127 OverlayCandidateList candidate_list; 1127 OverlayCandidateList candidate_list;
1128 base::flat_map<int, FilterOperations*> render_pass_filters; 1128 base::flat_map<int, FilterOperations*> render_pass_filters;
1129 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1129 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1130 overlay_processor_->ProcessForOverlays( 1130 overlay_processor_->ProcessForOverlays(
1131 resource_provider_.get(), pass.get(), render_pass_filters, 1131 resource_provider_.get(), pass.get(), false, render_pass_filters,
1132 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1132 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1133 &damage_rect_, &content_bounds_); 1133 &damage_rect_, &content_bounds_);
1134 EXPECT_EQ(1U, candidate_list.size()); 1134 EXPECT_EQ(1U, candidate_list.size());
1135 } 1135 }
1136 1136
1137 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) { 1137 TEST_F(SingleOverlayOnTopTest, AllowTransparentColorOnTop) {
1138 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1138 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1139 gfx::RectF(kOverlayBottomRightRect)); 1139 gfx::RectF(kOverlayBottomRightRect));
1140 1140
1141 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1141 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1142 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(), 1142 CreateSolidColorQuadAt(pass->shared_quad_state_list.back(),
1143 SK_ColorTRANSPARENT, pass.get(), 1143 SK_ColorTRANSPARENT, pass.get(),
1144 kOverlayBottomRightRect); 1144 kOverlayBottomRightRect);
1145 CreateCandidateQuadAt(resource_provider_.get(), 1145 CreateCandidateQuadAt(resource_provider_.get(),
1146 pass->shared_quad_state_list.back(), pass.get(), 1146 pass->shared_quad_state_list.back(), pass.get(),
1147 kOverlayBottomRightRect); 1147 kOverlayBottomRightRect);
1148 1148
1149 OverlayCandidateList candidate_list; 1149 OverlayCandidateList candidate_list;
1150 base::flat_map<int, FilterOperations*> render_pass_filters; 1150 base::flat_map<int, FilterOperations*> render_pass_filters;
1151 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1151 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1152 overlay_processor_->ProcessForOverlays( 1152 overlay_processor_->ProcessForOverlays(
1153 resource_provider_.get(), pass.get(), render_pass_filters, 1153 resource_provider_.get(), pass.get(), false, render_pass_filters,
1154 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1154 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1155 &damage_rect_, &content_bounds_); 1155 &damage_rect_, &content_bounds_);
1156 EXPECT_EQ(1U, candidate_list.size()); 1156 EXPECT_EQ(1U, candidate_list.size());
1157 } 1157 }
1158 1158
1159 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) { 1159 TEST_F(SingleOverlayOnTopTest, RejectOpaqueColorOnTop) {
1160 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1160 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1161 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1161 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1162 shared_state->opacity = 0.5f; 1162 shared_state->opacity = 0.5f;
1163 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(), 1163 CreateSolidColorQuadAt(shared_state, SK_ColorBLACK, pass.get(),
1164 kOverlayBottomRightRect); 1164 kOverlayBottomRightRect);
1165 shared_state = pass->CreateAndAppendSharedQuadState(); 1165 shared_state = pass->CreateAndAppendSharedQuadState();
1166 shared_state->opacity = 1.f; 1166 shared_state->opacity = 1.f;
1167 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1167 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1168 kOverlayBottomRightRect); 1168 kOverlayBottomRightRect);
1169 1169
1170 OverlayCandidateList candidate_list; 1170 OverlayCandidateList candidate_list;
1171 base::flat_map<int, FilterOperations*> render_pass_filters; 1171 base::flat_map<int, FilterOperations*> render_pass_filters;
1172 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1172 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1173 overlay_processor_->ProcessForOverlays( 1173 overlay_processor_->ProcessForOverlays(
1174 resource_provider_.get(), pass.get(), render_pass_filters, 1174 resource_provider_.get(), pass.get(), false, render_pass_filters,
1175 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1175 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1176 &damage_rect_, &content_bounds_); 1176 &damage_rect_, &content_bounds_);
1177 EXPECT_EQ(0U, candidate_list.size()); 1177 EXPECT_EQ(0U, candidate_list.size());
1178 } 1178 }
1179 1179
1180 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) { 1180 TEST_F(SingleOverlayOnTopTest, RejectTransparentColorOnTopWithoutBlending) {
1181 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1181 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1182 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState(); 1182 SharedQuadState* shared_state = pass->CreateAndAppendSharedQuadState();
1183 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(), 1183 CreateSolidColorQuadAt(shared_state, SK_ColorTRANSPARENT, pass.get(),
1184 kOverlayBottomRightRect)->opaque_rect = 1184 kOverlayBottomRightRect)->opaque_rect =
1185 kOverlayBottomRightRect; 1185 kOverlayBottomRightRect;
1186 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(), 1186 CreateCandidateQuadAt(resource_provider_.get(), shared_state, pass.get(),
1187 kOverlayBottomRightRect); 1187 kOverlayBottomRightRect);
1188 1188
1189 OverlayCandidateList candidate_list; 1189 OverlayCandidateList candidate_list;
1190 base::flat_map<int, FilterOperations*> render_pass_filters; 1190 base::flat_map<int, FilterOperations*> render_pass_filters;
1191 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1191 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1192 overlay_processor_->ProcessForOverlays( 1192 overlay_processor_->ProcessForOverlays(
1193 resource_provider_.get(), pass.get(), render_pass_filters, 1193 resource_provider_.get(), pass.get(), false, render_pass_filters,
1194 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1194 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1195 &damage_rect_, &content_bounds_); 1195 &damage_rect_, &content_bounds_);
1196 EXPECT_EQ(0U, candidate_list.size()); 1196 EXPECT_EQ(0U, candidate_list.size());
1197 } 1197 }
1198 1198
1199 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) { 1199 TEST_F(SingleOverlayOnTopTest, RejectVideoSwapTransform) {
1200 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1200 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1201 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1201 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1202 pass->shared_quad_state_list.back(), 1202 pass->shared_quad_state_list.back(),
1203 pass.get(), kSwapTransform); 1203 pass.get(), kSwapTransform);
1204 1204
1205 OverlayCandidateList candidate_list; 1205 OverlayCandidateList candidate_list;
1206 base::flat_map<int, FilterOperations*> render_pass_filters; 1206 base::flat_map<int, FilterOperations*> render_pass_filters;
1207 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1207 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1208 overlay_processor_->ProcessForOverlays( 1208 overlay_processor_->ProcessForOverlays(
1209 resource_provider_.get(), pass.get(), render_pass_filters, 1209 resource_provider_.get(), pass.get(), false, render_pass_filters,
1210 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1210 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1211 &damage_rect_, &content_bounds_); 1211 &damage_rect_, &content_bounds_);
1212 EXPECT_EQ(0U, candidate_list.size()); 1212 EXPECT_EQ(0U, candidate_list.size());
1213 } 1213 }
1214 1214
1215 TEST_F(UnderlayTest, AllowVideoXMirrorTransform) { 1215 TEST_F(UnderlayTest, AllowVideoXMirrorTransform) {
1216 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1216 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1217 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1217 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1218 pass->shared_quad_state_list.back(), 1218 pass->shared_quad_state_list.back(),
1219 pass.get(), kXMirrorTransform); 1219 pass.get(), kXMirrorTransform);
1220 1220
1221 OverlayCandidateList candidate_list; 1221 OverlayCandidateList candidate_list;
1222 base::flat_map<int, FilterOperations*> render_pass_filters; 1222 base::flat_map<int, FilterOperations*> render_pass_filters;
1223 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1223 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1224 overlay_processor_->ProcessForOverlays( 1224 overlay_processor_->ProcessForOverlays(
1225 resource_provider_.get(), pass.get(), render_pass_filters, 1225 resource_provider_.get(), pass.get(), false, render_pass_filters,
1226 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1226 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1227 &damage_rect_, &content_bounds_); 1227 &damage_rect_, &content_bounds_);
1228 EXPECT_EQ(1U, candidate_list.size()); 1228 EXPECT_EQ(1U, candidate_list.size());
1229 } 1229 }
1230 1230
1231 TEST_F(UnderlayTest, AllowVideoBothMirrorTransform) { 1231 TEST_F(UnderlayTest, AllowVideoBothMirrorTransform) {
1232 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1232 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1233 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1233 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1234 pass->shared_quad_state_list.back(), 1234 pass->shared_quad_state_list.back(),
1235 pass.get(), kBothMirrorTransform); 1235 pass.get(), kBothMirrorTransform);
1236 1236
1237 OverlayCandidateList candidate_list; 1237 OverlayCandidateList candidate_list;
1238 base::flat_map<int, FilterOperations*> render_pass_filters; 1238 base::flat_map<int, FilterOperations*> render_pass_filters;
1239 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1239 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1240 overlay_processor_->ProcessForOverlays( 1240 overlay_processor_->ProcessForOverlays(
1241 resource_provider_.get(), pass.get(), render_pass_filters, 1241 resource_provider_.get(), pass.get(), false, render_pass_filters,
1242 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1242 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1243 &damage_rect_, &content_bounds_); 1243 &damage_rect_, &content_bounds_);
1244 EXPECT_EQ(1U, candidate_list.size()); 1244 EXPECT_EQ(1U, candidate_list.size());
1245 } 1245 }
1246 1246
1247 TEST_F(UnderlayTest, AllowVideoNormalTransform) { 1247 TEST_F(UnderlayTest, AllowVideoNormalTransform) {
1248 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1248 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1249 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1249 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1250 pass->shared_quad_state_list.back(), 1250 pass->shared_quad_state_list.back(),
1251 pass.get(), kNormalTransform); 1251 pass.get(), kNormalTransform);
1252 1252
1253 OverlayCandidateList candidate_list; 1253 OverlayCandidateList candidate_list;
1254 base::flat_map<int, FilterOperations*> render_pass_filters; 1254 base::flat_map<int, FilterOperations*> render_pass_filters;
1255 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1255 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1256 overlay_processor_->ProcessForOverlays( 1256 overlay_processor_->ProcessForOverlays(
1257 resource_provider_.get(), pass.get(), render_pass_filters, 1257 resource_provider_.get(), pass.get(), false, render_pass_filters,
1258 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1258 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1259 &damage_rect_, &content_bounds_); 1259 &damage_rect_, &content_bounds_);
1260 EXPECT_EQ(1U, candidate_list.size()); 1260 EXPECT_EQ(1U, candidate_list.size());
1261 } 1261 }
1262 1262
1263 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) { 1263 TEST_F(SingleOverlayOnTopTest, AllowVideoYMirrorTransform) {
1264 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1264 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1265 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1265 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1266 pass->shared_quad_state_list.back(), 1266 pass->shared_quad_state_list.back(),
1267 pass.get(), kYMirrorTransform); 1267 pass.get(), kYMirrorTransform);
1268 1268
1269 OverlayCandidateList candidate_list; 1269 OverlayCandidateList candidate_list;
1270 base::flat_map<int, FilterOperations*> render_pass_filters; 1270 base::flat_map<int, FilterOperations*> render_pass_filters;
1271 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1271 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1272 overlay_processor_->ProcessForOverlays( 1272 overlay_processor_->ProcessForOverlays(
1273 resource_provider_.get(), pass.get(), render_pass_filters, 1273 resource_provider_.get(), pass.get(), false, render_pass_filters,
1274 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1274 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1275 &damage_rect_, &content_bounds_); 1275 &damage_rect_, &content_bounds_);
1276 EXPECT_EQ(1U, candidate_list.size()); 1276 EXPECT_EQ(1U, candidate_list.size());
1277 } 1277 }
1278 1278
1279 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) { 1279 TEST_F(UnderlayTest, OverlayLayerUnderMainLayer) {
1280 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1280 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1281 gfx::RectF(kOverlayBottomRightRect)); 1281 gfx::RectF(kOverlayBottomRightRect));
1282 1282
1283 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1283 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1284 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1284 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1285 pass->shared_quad_state_list.back(), pass.get()); 1285 pass->shared_quad_state_list.back(), pass.get());
1286 CreateCandidateQuadAt(resource_provider_.get(), 1286 CreateCandidateQuadAt(resource_provider_.get(),
1287 pass->shared_quad_state_list.back(), pass.get(), 1287 pass->shared_quad_state_list.back(), pass.get(),
1288 kOverlayBottomRightRect); 1288 kOverlayBottomRightRect);
1289 1289
1290 OverlayCandidateList candidate_list; 1290 OverlayCandidateList candidate_list;
1291 base::flat_map<int, FilterOperations*> render_pass_filters; 1291 base::flat_map<int, FilterOperations*> render_pass_filters;
1292 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1292 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1293 overlay_processor_->ProcessForOverlays( 1293 overlay_processor_->ProcessForOverlays(
1294 resource_provider_.get(), pass.get(), render_pass_filters, 1294 resource_provider_.get(), pass.get(), false, render_pass_filters,
1295 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1295 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1296 &damage_rect_, &content_bounds_); 1296 &damage_rect_, &content_bounds_);
1297 ASSERT_EQ(1U, candidate_list.size()); 1297 ASSERT_EQ(1U, candidate_list.size());
1298 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 1298 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
1299 EXPECT_EQ(2U, pass->quad_list.size()); 1299 EXPECT_EQ(2U, pass->quad_list.size());
1300 // The overlay quad should have changed to a SOLID_COLOR quad. 1300 // The overlay quad should have changed to a SOLID_COLOR quad.
1301 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR); 1301 EXPECT_EQ(pass->quad_list.back()->material, DrawQuad::SOLID_COLOR);
1302 } 1302 }
1303 1303
1304 TEST_F(UnderlayTest, AllowOnTop) { 1304 TEST_F(UnderlayTest, AllowOnTop) {
1305 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1305 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1306 CreateFullscreenCandidateQuad(resource_provider_.get(), 1306 CreateFullscreenCandidateQuad(resource_provider_.get(),
1307 pass->shared_quad_state_list.back(), 1307 pass->shared_quad_state_list.back(),
1308 pass.get()); 1308 pass.get());
1309 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f; 1309 pass->CreateAndAppendSharedQuadState()->opacity = 0.5f;
1310 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1310 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1311 pass->shared_quad_state_list.back(), pass.get()); 1311 pass->shared_quad_state_list.back(), pass.get());
1312 1312
1313 OverlayCandidateList candidate_list; 1313 OverlayCandidateList candidate_list;
1314 base::flat_map<int, FilterOperations*> render_pass_filters; 1314 base::flat_map<int, FilterOperations*> render_pass_filters;
1315 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1315 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1316 overlay_processor_->ProcessForOverlays( 1316 overlay_processor_->ProcessForOverlays(
1317 resource_provider_.get(), pass.get(), render_pass_filters, 1317 resource_provider_.get(), pass.get(), false, render_pass_filters,
1318 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1318 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1319 &damage_rect_, &content_bounds_); 1319 &damage_rect_, &content_bounds_);
1320 ASSERT_EQ(1U, candidate_list.size()); 1320 ASSERT_EQ(1U, candidate_list.size());
1321 EXPECT_EQ(-1, candidate_list[0].plane_z_order); 1321 EXPECT_EQ(-1, candidate_list[0].plane_z_order);
1322 // The overlay quad should have changed to a SOLID_COLOR quad. 1322 // The overlay quad should have changed to a SOLID_COLOR quad.
1323 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR); 1323 EXPECT_EQ(pass->quad_list.front()->material, DrawQuad::SOLID_COLOR);
1324 } 1324 }
1325 1325
1326 // The first time an underlay is scheduled its damage must not be subtracted. 1326 // The first time an underlay is scheduled its damage must not be subtracted.
1327 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) { 1327 TEST_F(UnderlayTest, InitialUnderlayDamageNotSubtracted) {
1328 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1328 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1329 CreateFullscreenCandidateQuad(resource_provider_.get(), 1329 CreateFullscreenCandidateQuad(resource_provider_.get(),
1330 pass->shared_quad_state_list.back(), 1330 pass->shared_quad_state_list.back(),
1331 pass.get()); 1331 pass.get());
1332 1332
1333 damage_rect_ = kOverlayRect; 1333 damage_rect_ = kOverlayRect;
1334 1334
1335 OverlayCandidateList candidate_list; 1335 OverlayCandidateList candidate_list;
1336 base::flat_map<int, FilterOperations*> render_pass_filters; 1336 base::flat_map<int, FilterOperations*> render_pass_filters;
1337 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1337 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1338 overlay_processor_->ProcessForOverlays( 1338 overlay_processor_->ProcessForOverlays(
1339 resource_provider_.get(), pass.get(), render_pass_filters, 1339 resource_provider_.get(), pass.get(), false, render_pass_filters,
1340 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1340 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1341 &damage_rect_, &content_bounds_); 1341 &damage_rect_, &content_bounds_);
1342 1342
1343 EXPECT_EQ(kOverlayRect, damage_rect_); 1343 EXPECT_EQ(kOverlayRect, damage_rect_);
1344 } 1344 }
1345 1345
1346 // An identical underlay for two frames in a row means the damage can be 1346 // An identical underlay for two frames in a row means the damage can be
1347 // subtracted the second time. 1347 // subtracted the second time.
1348 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) { 1348 TEST_F(UnderlayTest, DamageSubtractedForConsecutiveIdenticalUnderlays) {
1349 for (int i = 0; i < 2; ++i) { 1349 for (int i = 0; i < 2; ++i) {
1350 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1350 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1351 CreateFullscreenCandidateQuad(resource_provider_.get(), 1351 CreateFullscreenCandidateQuad(resource_provider_.get(),
1352 pass->shared_quad_state_list.back(), 1352 pass->shared_quad_state_list.back(),
1353 pass.get()); 1353 pass.get());
1354 1354
1355 damage_rect_ = kOverlayRect; 1355 damage_rect_ = kOverlayRect;
1356 1356
1357 // Add something behind it. 1357 // Add something behind it.
1358 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1358 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1359 pass->shared_quad_state_list.back(), pass.get()); 1359 pass->shared_quad_state_list.back(), pass.get());
1360 1360
1361 OverlayCandidateList candidate_list; 1361 OverlayCandidateList candidate_list;
1362 base::flat_map<int, FilterOperations*> render_pass_filters; 1362 base::flat_map<int, FilterOperations*> render_pass_filters;
1363 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1363 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1364 overlay_processor_->ProcessForOverlays( 1364 overlay_processor_->ProcessForOverlays(
1365 resource_provider_.get(), pass.get(), render_pass_filters, 1365 resource_provider_.get(), pass.get(), false, render_pass_filters,
1366 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1366 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1367 &damage_rect_, &content_bounds_); 1367 &damage_rect_, &content_bounds_);
1368 } 1368 }
1369 1369
1370 // The second time the same overlay rect is scheduled it will be subtracted 1370 // The second time the same overlay rect is scheduled it will be subtracted
1371 // from the damage rect. 1371 // from the damage rect.
1372 EXPECT_TRUE(damage_rect_.IsEmpty()); 1372 EXPECT_TRUE(damage_rect_.IsEmpty());
1373 } 1373 }
1374 1374
1375 // Underlay damage can only be subtracted if the previous frame's underlay 1375 // Underlay damage can only be subtracted if the previous frame's underlay
1376 // was the same rect. 1376 // was the same rect.
1377 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) { 1377 TEST_F(UnderlayTest, DamageNotSubtractedForNonIdenticalConsecutiveUnderlays) {
1378 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect}; 1378 gfx::Rect overlay_rects[] = {kOverlayBottomRightRect, kOverlayRect};
1379 for (int i = 0; i < 2; ++i) { 1379 for (int i = 0; i < 2; ++i) {
1380 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1380 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1381 gfx::RectF(overlay_rects[i])); 1381 gfx::RectF(overlay_rects[i]));
1382 1382
1383 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1383 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1384 1384
1385 CreateCandidateQuadAt(resource_provider_.get(), 1385 CreateCandidateQuadAt(resource_provider_.get(),
1386 pass->shared_quad_state_list.back(), pass.get(), 1386 pass->shared_quad_state_list.back(), pass.get(),
1387 overlay_rects[i]); 1387 overlay_rects[i]);
1388 1388
1389 damage_rect_ = overlay_rects[i]; 1389 damage_rect_ = overlay_rects[i];
1390 1390
1391 OverlayCandidateList candidate_list; 1391 OverlayCandidateList candidate_list;
1392 base::flat_map<int, FilterOperations*> render_pass_filters; 1392 base::flat_map<int, FilterOperations*> render_pass_filters;
1393 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1393 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1394 overlay_processor_->ProcessForOverlays( 1394 overlay_processor_->ProcessForOverlays(
1395 resource_provider_.get(), pass.get(), render_pass_filters, 1395 resource_provider_.get(), pass.get(), false, render_pass_filters,
1396 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1396 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1397 &damage_rect_, &content_bounds_); 1397 &damage_rect_, &content_bounds_);
1398 1398
1399 EXPECT_EQ(overlay_rects[i], damage_rect_); 1399 EXPECT_EQ(overlay_rects[i], damage_rect_);
1400 } 1400 }
1401 } 1401 }
1402 1402
1403 // Underlay damage can only be subtracted if the previous frame's underlay 1403 // Underlay damage can only be subtracted if the previous frame's underlay
1404 // exists. 1404 // exists.
1405 TEST_F(UnderlayTest, DamageNotSubtractedForNonConsecutiveIdenticalUnderlays) { 1405 TEST_F(UnderlayTest, DamageNotSubtractedForNonConsecutiveIdenticalUnderlays) {
(...skipping 11 matching lines...) Expand all
1417 damage_rect_ = kOverlayRect; 1417 damage_rect_ = kOverlayRect;
1418 1418
1419 // Add something behind it. 1419 // Add something behind it.
1420 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1420 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1421 pass->shared_quad_state_list.back(), pass.get()); 1421 pass->shared_quad_state_list.back(), pass.get());
1422 1422
1423 OverlayCandidateList candidate_list; 1423 OverlayCandidateList candidate_list;
1424 base::flat_map<int, FilterOperations*> render_pass_filters; 1424 base::flat_map<int, FilterOperations*> render_pass_filters;
1425 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1425 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1426 overlay_processor_->ProcessForOverlays( 1426 overlay_processor_->ProcessForOverlays(
1427 resource_provider_.get(), pass.get(), render_pass_filters, 1427 resource_provider_.get(), pass.get(), false, render_pass_filters,
1428 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1428 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1429 &damage_rect_, &content_bounds_); 1429 &damage_rect_, &content_bounds_);
1430 } 1430 }
1431 1431
1432 EXPECT_EQ(kOverlayRect, damage_rect_); 1432 EXPECT_EQ(kOverlayRect, damage_rect_);
1433 } 1433 }
1434 1434
1435 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) { 1435 TEST_F(UnderlayTest, DamageNotSubtractedWhenQuadsAboveOverlap) {
1436 for (int i = 0; i < 2; ++i) { 1436 for (int i = 0; i < 2; ++i) {
1437 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1437 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1438 // Add an overlapping quad above the candidate. 1438 // Add an overlapping quad above the candidate.
1439 CreateFullscreenOpaqueQuad(resource_provider_.get(), 1439 CreateFullscreenOpaqueQuad(resource_provider_.get(),
1440 pass->shared_quad_state_list.back(), pass.get()); 1440 pass->shared_quad_state_list.back(), pass.get());
1441 CreateFullscreenCandidateQuad(resource_provider_.get(), 1441 CreateFullscreenCandidateQuad(resource_provider_.get(),
1442 pass->shared_quad_state_list.back(), 1442 pass->shared_quad_state_list.back(),
1443 pass.get()); 1443 pass.get());
1444 1444
1445 damage_rect_ = kOverlayRect; 1445 damage_rect_ = kOverlayRect;
1446 1446
1447 OverlayCandidateList candidate_list; 1447 OverlayCandidateList candidate_list;
1448 base::flat_map<int, FilterOperations*> render_pass_filters; 1448 base::flat_map<int, FilterOperations*> render_pass_filters;
1449 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1449 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1450 overlay_processor_->ProcessForOverlays( 1450 overlay_processor_->ProcessForOverlays(
1451 resource_provider_.get(), pass.get(), render_pass_filters, 1451 resource_provider_.get(), pass.get(), false, render_pass_filters,
1452 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1452 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1453 &damage_rect_, &content_bounds_); 1453 &damage_rect_, &content_bounds_);
1454 } 1454 }
1455 1455
1456 EXPECT_EQ(kOverlayRect, damage_rect_); 1456 EXPECT_EQ(kOverlayRect, damage_rect_);
1457 } 1457 }
1458 1458
1459 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) { 1459 TEST_F(UnderlayTest, DamageSubtractedWhenQuadsAboveDontOverlap) {
1460 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1460 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1461 gfx::RectF(kOverlayBottomRightRect)); 1461 gfx::RectF(kOverlayBottomRightRect));
1462 1462
1463 for (int i = 0; i < 2; ++i) { 1463 for (int i = 0; i < 2; ++i) {
1464 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1464 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1465 // Add a non-overlapping quad above the candidate. 1465 // Add a non-overlapping quad above the candidate.
1466 CreateOpaqueQuadAt(resource_provider_.get(), 1466 CreateOpaqueQuadAt(resource_provider_.get(),
1467 pass->shared_quad_state_list.back(), pass.get(), 1467 pass->shared_quad_state_list.back(), pass.get(),
1468 kOverlayTopLeftRect); 1468 kOverlayTopLeftRect);
1469 CreateCandidateQuadAt(resource_provider_.get(), 1469 CreateCandidateQuadAt(resource_provider_.get(),
1470 pass->shared_quad_state_list.back(), pass.get(), 1470 pass->shared_quad_state_list.back(), pass.get(),
1471 kOverlayBottomRightRect); 1471 kOverlayBottomRightRect);
1472 1472
1473 damage_rect_ = kOverlayBottomRightRect; 1473 damage_rect_ = kOverlayBottomRightRect;
1474 1474
1475 OverlayCandidateList candidate_list; 1475 OverlayCandidateList candidate_list;
1476 base::flat_map<int, FilterOperations*> render_pass_filters; 1476 base::flat_map<int, FilterOperations*> render_pass_filters;
1477 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1477 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1478 overlay_processor_->ProcessForOverlays( 1478 overlay_processor_->ProcessForOverlays(
1479 resource_provider_.get(), pass.get(), render_pass_filters, 1479 resource_provider_.get(), pass.get(), false, render_pass_filters,
1480 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1480 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1481 &damage_rect_, &content_bounds_); 1481 &damage_rect_, &content_bounds_);
1482 } 1482 }
1483 1483
1484 EXPECT_TRUE(damage_rect_.IsEmpty()); 1484 EXPECT_TRUE(damage_rect_.IsEmpty());
1485 } 1485 }
1486 1486
1487 TEST_F(UnderlayCastTest, NoOverlayContentBounds) { 1487 TEST_F(UnderlayCastTest, NoOverlayContentBounds) {
1488 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1488 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1489 1489
1490 CreateOpaqueQuadAt(resource_provider_.get(), 1490 CreateOpaqueQuadAt(resource_provider_.get(),
1491 pass->shared_quad_state_list.back(), pass.get(), 1491 pass->shared_quad_state_list.back(), pass.get(),
1492 kOverlayTopLeftRect); 1492 kOverlayTopLeftRect);
1493 1493
1494 OverlayCandidateList candidate_list; 1494 OverlayCandidateList candidate_list;
1495 base::flat_map<int, FilterOperations*> render_pass_filters; 1495 base::flat_map<int, FilterOperations*> render_pass_filters;
1496 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1496 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1497 overlay_processor_->ProcessForOverlays( 1497 overlay_processor_->ProcessForOverlays(
1498 resource_provider_.get(), pass.get(), render_pass_filters, 1498 resource_provider_.get(), pass.get(), false, render_pass_filters,
1499 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1499 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1500 &damage_rect_, &content_bounds_); 1500 &damage_rect_, &content_bounds_);
1501 EXPECT_EQ(0U, content_bounds_.size()); 1501 EXPECT_EQ(0U, content_bounds_.size());
1502 } 1502 }
1503 1503
1504 TEST_F(UnderlayCastTest, FullScreenOverlayContentBounds) { 1504 TEST_F(UnderlayCastTest, FullScreenOverlayContentBounds) {
1505 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1505 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1506 CreateCandidateQuadAt(resource_provider_.get(), 1506 CreateCandidateQuadAt(resource_provider_.get(),
1507 pass->shared_quad_state_list.back(), pass.get(), 1507 pass->shared_quad_state_list.back(), pass.get(),
1508 kOverlayRect); 1508 kOverlayRect);
1509 1509
1510 OverlayCandidateList candidate_list; 1510 OverlayCandidateList candidate_list;
1511 base::flat_map<int, FilterOperations*> render_pass_filters; 1511 base::flat_map<int, FilterOperations*> render_pass_filters;
1512 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1512 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1513 overlay_processor_->ProcessForOverlays( 1513 overlay_processor_->ProcessForOverlays(
1514 resource_provider_.get(), pass.get(), render_pass_filters, 1514 resource_provider_.get(), pass.get(), false, render_pass_filters,
1515 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1515 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1516 &damage_rect_, &content_bounds_); 1516 &damage_rect_, &content_bounds_);
1517 1517
1518 EXPECT_EQ(1U, content_bounds_.size()); 1518 EXPECT_EQ(1U, content_bounds_.size());
1519 EXPECT_TRUE(content_bounds_[0].IsEmpty()); 1519 EXPECT_TRUE(content_bounds_[0].IsEmpty());
1520 } 1520 }
1521 1521
1522 TEST_F(UnderlayCastTest, BlackOutsideOverlayContentBounds) { 1522 TEST_F(UnderlayCastTest, BlackOutsideOverlayContentBounds) {
1523 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1523 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1524 gfx::RectF(kOverlayBottomRightRect)); 1524 gfx::RectF(kOverlayBottomRightRect));
1525 1525
1526 const gfx::Rect kLeftSide(0, 0, 128, 256); 1526 const gfx::Rect kLeftSide(0, 0, 128, 256);
1527 const gfx::Rect kTopRight(128, 0, 128, 128); 1527 const gfx::Rect kTopRight(128, 0, 128, 128);
1528 1528
1529 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1529 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1530 CreateCandidateQuadAt(resource_provider_.get(), 1530 CreateCandidateQuadAt(resource_provider_.get(),
1531 pass->shared_quad_state_list.back(), pass.get(), 1531 pass->shared_quad_state_list.back(), pass.get(),
1532 kOverlayBottomRightRect); 1532 kOverlayBottomRightRect);
1533 CreateOpaqueQuadAt(resource_provider_.get(), 1533 CreateOpaqueQuadAt(resource_provider_.get(),
1534 pass->shared_quad_state_list.back(), pass.get(), kLeftSide, 1534 pass->shared_quad_state_list.back(), pass.get(), kLeftSide,
1535 SK_ColorBLACK); 1535 SK_ColorBLACK);
1536 CreateOpaqueQuadAt(resource_provider_.get(), 1536 CreateOpaqueQuadAt(resource_provider_.get(),
1537 pass->shared_quad_state_list.back(), pass.get(), kTopRight, 1537 pass->shared_quad_state_list.back(), pass.get(), kTopRight,
1538 SK_ColorBLACK); 1538 SK_ColorBLACK);
1539 1539
1540 OverlayCandidateList candidate_list; 1540 OverlayCandidateList candidate_list;
1541 base::flat_map<int, FilterOperations*> render_pass_filters; 1541 base::flat_map<int, FilterOperations*> render_pass_filters;
1542 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1542 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1543 overlay_processor_->ProcessForOverlays( 1543 overlay_processor_->ProcessForOverlays(
1544 resource_provider_.get(), pass.get(), render_pass_filters, 1544 resource_provider_.get(), pass.get(), false, render_pass_filters,
1545 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1545 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1546 &damage_rect_, &content_bounds_); 1546 &damage_rect_, &content_bounds_);
1547 1547
1548 EXPECT_EQ(1U, content_bounds_.size()); 1548 EXPECT_EQ(1U, content_bounds_.size());
1549 EXPECT_TRUE(content_bounds_[0].IsEmpty()); 1549 EXPECT_TRUE(content_bounds_[0].IsEmpty());
1550 } 1550 }
1551 1551
1552 TEST_F(UnderlayCastTest, OverlayOccludedContentBounds) { 1552 TEST_F(UnderlayCastTest, OverlayOccludedContentBounds) {
1553 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1553 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1554 CreateOpaqueQuadAt(resource_provider_.get(), 1554 CreateOpaqueQuadAt(resource_provider_.get(),
1555 pass->shared_quad_state_list.back(), pass.get(), 1555 pass->shared_quad_state_list.back(), pass.get(),
1556 kOverlayTopLeftRect); 1556 kOverlayTopLeftRect);
1557 CreateCandidateQuadAt(resource_provider_.get(), 1557 CreateCandidateQuadAt(resource_provider_.get(),
1558 pass->shared_quad_state_list.back(), pass.get(), 1558 pass->shared_quad_state_list.back(), pass.get(),
1559 kOverlayRect); 1559 kOverlayRect);
1560 1560
1561 OverlayCandidateList candidate_list; 1561 OverlayCandidateList candidate_list;
1562 base::flat_map<int, FilterOperations*> render_pass_filters; 1562 base::flat_map<int, FilterOperations*> render_pass_filters;
1563 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1563 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1564 overlay_processor_->ProcessForOverlays( 1564 overlay_processor_->ProcessForOverlays(
1565 resource_provider_.get(), pass.get(), render_pass_filters, 1565 resource_provider_.get(), pass.get(), false, render_pass_filters,
1566 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1566 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1567 &damage_rect_, &content_bounds_); 1567 &damage_rect_, &content_bounds_);
1568 1568
1569 EXPECT_EQ(1U, content_bounds_.size()); 1569 EXPECT_EQ(1U, content_bounds_.size());
1570 EXPECT_EQ(kOverlayTopLeftRect, content_bounds_[0]); 1570 EXPECT_EQ(kOverlayTopLeftRect, content_bounds_[0]);
1571 } 1571 }
1572 1572
1573 TEST_F(UnderlayCastTest, OverlayOccludedUnionContentBounds) { 1573 TEST_F(UnderlayCastTest, OverlayOccludedUnionContentBounds) {
1574 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1574 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1575 CreateOpaqueQuadAt(resource_provider_.get(), 1575 CreateOpaqueQuadAt(resource_provider_.get(),
1576 pass->shared_quad_state_list.back(), pass.get(), 1576 pass->shared_quad_state_list.back(), pass.get(),
1577 kOverlayTopLeftRect); 1577 kOverlayTopLeftRect);
1578 CreateOpaqueQuadAt(resource_provider_.get(), 1578 CreateOpaqueQuadAt(resource_provider_.get(),
1579 pass->shared_quad_state_list.back(), pass.get(), 1579 pass->shared_quad_state_list.back(), pass.get(),
1580 kOverlayBottomRightRect); 1580 kOverlayBottomRightRect);
1581 CreateCandidateQuadAt(resource_provider_.get(), 1581 CreateCandidateQuadAt(resource_provider_.get(),
1582 pass->shared_quad_state_list.back(), pass.get(), 1582 pass->shared_quad_state_list.back(), pass.get(),
1583 kOverlayRect); 1583 kOverlayRect);
1584 1584
1585 OverlayCandidateList candidate_list; 1585 OverlayCandidateList candidate_list;
1586 base::flat_map<int, FilterOperations*> render_pass_filters; 1586 base::flat_map<int, FilterOperations*> render_pass_filters;
1587 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1587 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1588 overlay_processor_->ProcessForOverlays( 1588 overlay_processor_->ProcessForOverlays(
1589 resource_provider_.get(), pass.get(), render_pass_filters, 1589 resource_provider_.get(), pass.get(), false, render_pass_filters,
1590 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1590 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1591 &damage_rect_, &content_bounds_); 1591 &damage_rect_, &content_bounds_);
1592 1592
1593 EXPECT_EQ(1U, content_bounds_.size()); 1593 EXPECT_EQ(1U, content_bounds_.size());
1594 EXPECT_EQ(kOverlayRect, content_bounds_[0]); 1594 EXPECT_EQ(kOverlayRect, content_bounds_[0]);
1595 } 1595 }
1596 1596
1597 TEST_F(UnderlayCastTest, RoundOverlayContentBounds) { 1597 TEST_F(UnderlayCastTest, RoundOverlayContentBounds) {
1598 // Check rounding behaviour on overlay quads. Be conservative (content 1598 // Check rounding behaviour on overlay quads. Be conservative (content
1599 // potentially visible on boundary). 1599 // potentially visible on boundary).
1600 const gfx::Rect overlay_rect(1, 1, 8, 8); 1600 const gfx::Rect overlay_rect(1, 1, 8, 8);
1601 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect( 1601 output_surface_->GetOverlayCandidateValidator()->AddExpectedRect(
1602 gfx::RectF(1.5f, 1.5f, 8, 8)); 1602 gfx::RectF(1.5f, 1.5f, 8, 8));
1603 1603
1604 gfx::Transform transform; 1604 gfx::Transform transform;
1605 transform.Translate(0.5f, 0.5f); 1605 transform.Translate(0.5f, 0.5f);
1606 1606
1607 std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform); 1607 std::unique_ptr<RenderPass> pass = CreateRenderPassWithTransform(transform);
1608 CreateCandidateQuadAt(resource_provider_.get(), 1608 CreateCandidateQuadAt(resource_provider_.get(),
1609 pass->shared_quad_state_list.back(), pass.get(), 1609 pass->shared_quad_state_list.back(), pass.get(),
1610 overlay_rect); 1610 overlay_rect);
1611 CreateOpaqueQuadAt(resource_provider_.get(), 1611 CreateOpaqueQuadAt(resource_provider_.get(),
1612 pass->shared_quad_state_list.back(), pass.get(), 1612 pass->shared_quad_state_list.back(), pass.get(),
1613 gfx::Rect(0, 0, 10, 10), SK_ColorWHITE); 1613 gfx::Rect(0, 0, 10, 10), SK_ColorWHITE);
1614 1614
1615 OverlayCandidateList candidate_list; 1615 OverlayCandidateList candidate_list;
1616 base::flat_map<int, FilterOperations*> render_pass_filters; 1616 base::flat_map<int, FilterOperations*> render_pass_filters;
1617 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1617 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1618 overlay_processor_->ProcessForOverlays( 1618 overlay_processor_->ProcessForOverlays(
1619 resource_provider_.get(), pass.get(), render_pass_filters, 1619 resource_provider_.get(), pass.get(), false, render_pass_filters,
1620 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1620 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1621 &damage_rect_, &content_bounds_); 1621 &damage_rect_, &content_bounds_);
1622 1622
1623 EXPECT_EQ(1U, content_bounds_.size()); 1623 EXPECT_EQ(1U, content_bounds_.size());
1624 EXPECT_EQ(gfx::Rect(0, 0, 11, 11), content_bounds_[0]); 1624 EXPECT_EQ(gfx::Rect(0, 0, 11, 11), content_bounds_[0]);
1625 } 1625 }
1626 1626
1627 TEST_F(UnderlayCastTest, RoundContentBounds) { 1627 TEST_F(UnderlayCastTest, RoundContentBounds) {
1628 // Check rounding behaviour on content quads (bounds should be enclosing 1628 // Check rounding behaviour on content quads (bounds should be enclosing
1629 // rect). 1629 // rect).
(...skipping 10 matching lines...) Expand all
1640 pass->shared_quad_state_list.back(), pass.get(), 1640 pass->shared_quad_state_list.back(), pass.get(),
1641 overlay_rect); 1641 overlay_rect);
1642 CreateOpaqueQuadAt(resource_provider_.get(), 1642 CreateOpaqueQuadAt(resource_provider_.get(),
1643 pass->shared_quad_state_list.back(), pass.get(), 1643 pass->shared_quad_state_list.back(), pass.get(),
1644 gfx::Rect(0, 0, 255, 255), SK_ColorWHITE); 1644 gfx::Rect(0, 0, 255, 255), SK_ColorWHITE);
1645 1645
1646 OverlayCandidateList candidate_list; 1646 OverlayCandidateList candidate_list;
1647 base::flat_map<int, FilterOperations*> render_pass_filters; 1647 base::flat_map<int, FilterOperations*> render_pass_filters;
1648 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1648 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1649 overlay_processor_->ProcessForOverlays( 1649 overlay_processor_->ProcessForOverlays(
1650 resource_provider_.get(), pass.get(), render_pass_filters, 1650 resource_provider_.get(), pass.get(), false, render_pass_filters,
1651 render_pass_background_filters, &candidate_list, nullptr, nullptr, 1651 render_pass_background_filters, &candidate_list, nullptr, nullptr,
1652 &damage_rect_, &content_bounds_); 1652 &damage_rect_, &content_bounds_);
1653 1653
1654 EXPECT_EQ(1U, content_bounds_.size()); 1654 EXPECT_EQ(1U, content_bounds_.size());
1655 EXPECT_EQ(kOverlayRect, content_bounds_[0]); 1655 EXPECT_EQ(kOverlayRect, content_bounds_[0]);
1656 } 1656 }
1657 1657
1658 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) { 1658 OverlayCandidateList BackbufferOverlayList(const RenderPass* root_render_pass) {
1659 OverlayCandidateList list; 1659 OverlayCandidateList list;
1660 OverlayCandidate output_surface_plane; 1660 OverlayCandidate output_surface_plane;
(...skipping 13 matching lines...) Expand all
1674 pass.get()); 1674 pass.get());
1675 pass->shared_quad_state_list.back() 1675 pass->shared_quad_state_list.back()
1676 ->quad_to_target_transform.RotateAboutZAxis(45.f); 1676 ->quad_to_target_transform.RotateAboutZAxis(45.f);
1677 1677
1678 gfx::Rect damage_rect; 1678 gfx::Rect damage_rect;
1679 CALayerOverlayList ca_layer_list; 1679 CALayerOverlayList ca_layer_list;
1680 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1680 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1681 base::flat_map<int, FilterOperations*> render_pass_filters; 1681 base::flat_map<int, FilterOperations*> render_pass_filters;
1682 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1682 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1683 overlay_processor_->ProcessForOverlays( 1683 overlay_processor_->ProcessForOverlays(
1684 resource_provider_.get(), pass.get(), render_pass_filters, 1684 resource_provider_.get(), pass.get(), false, render_pass_filters,
1685 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, 1685 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr,
1686 &damage_rect_, &content_bounds_); 1686 &damage_rect_, &content_bounds_);
1687 EXPECT_EQ(gfx::Rect(), damage_rect); 1687 EXPECT_EQ(gfx::Rect(), damage_rect);
1688 EXPECT_EQ(0U, overlay_list.size()); 1688 EXPECT_EQ(0U, overlay_list.size());
1689 EXPECT_EQ(1U, ca_layer_list.size()); 1689 EXPECT_EQ(1U, ca_layer_list.size());
1690 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1690 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1691 } 1691 }
1692 1692
1693 TEST_F(CALayerOverlayTest, ThreeDTransform) { 1693 TEST_F(CALayerOverlayTest, ThreeDTransform) {
1694 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1694 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1695 CreateFullscreenCandidateQuad(resource_provider_.get(), 1695 CreateFullscreenCandidateQuad(resource_provider_.get(),
1696 pass->shared_quad_state_list.back(), 1696 pass->shared_quad_state_list.back(),
1697 pass.get()); 1697 pass.get());
1698 pass->shared_quad_state_list.back() 1698 pass->shared_quad_state_list.back()
1699 ->quad_to_target_transform.RotateAboutXAxis(45.f); 1699 ->quad_to_target_transform.RotateAboutXAxis(45.f);
1700 1700
1701 gfx::Rect damage_rect; 1701 gfx::Rect damage_rect;
1702 CALayerOverlayList ca_layer_list; 1702 CALayerOverlayList ca_layer_list;
1703 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1703 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1704 base::flat_map<int, FilterOperations*> render_pass_filters; 1704 base::flat_map<int, FilterOperations*> render_pass_filters;
1705 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1705 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1706 overlay_processor_->ProcessForOverlays( 1706 overlay_processor_->ProcessForOverlays(
1707 resource_provider_.get(), pass.get(), render_pass_filters, 1707 resource_provider_.get(), pass.get(), false, render_pass_filters,
1708 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, 1708 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr,
1709 &damage_rect_, &content_bounds_); 1709 &damage_rect_, &content_bounds_);
1710 EXPECT_EQ(0U, overlay_list.size()); 1710 EXPECT_EQ(0U, overlay_list.size());
1711 EXPECT_EQ(1U, ca_layer_list.size()); 1711 EXPECT_EQ(1U, ca_layer_list.size());
1712 gfx::Transform expected_transform; 1712 gfx::Transform expected_transform;
1713 expected_transform.RotateAboutXAxis(45.f); 1713 expected_transform.RotateAboutXAxis(45.f);
1714 gfx::Transform actual_transform(ca_layer_list.back().shared_state->transform); 1714 gfx::Transform actual_transform(ca_layer_list.back().shared_state->transform);
1715 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString()); 1715 EXPECT_EQ(expected_transform.ToString(), actual_transform.ToString());
1716 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1716 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1717 } 1717 }
1718 1718
1719 TEST_F(CALayerOverlayTest, AllowContainingClip) { 1719 TEST_F(CALayerOverlayTest, AllowContainingClip) {
1720 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1720 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1721 CreateFullscreenCandidateQuad(resource_provider_.get(), 1721 CreateFullscreenCandidateQuad(resource_provider_.get(),
1722 pass->shared_quad_state_list.back(), 1722 pass->shared_quad_state_list.back(),
1723 pass.get()); 1723 pass.get());
1724 pass->shared_quad_state_list.back()->is_clipped = true; 1724 pass->shared_quad_state_list.back()->is_clipped = true;
1725 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect; 1725 pass->shared_quad_state_list.back()->clip_rect = kOverlayRect;
1726 1726
1727 gfx::Rect damage_rect; 1727 gfx::Rect damage_rect;
1728 CALayerOverlayList ca_layer_list; 1728 CALayerOverlayList ca_layer_list;
1729 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1729 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1730 base::flat_map<int, FilterOperations*> render_pass_filters; 1730 base::flat_map<int, FilterOperations*> render_pass_filters;
1731 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1731 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1732 overlay_processor_->ProcessForOverlays( 1732 overlay_processor_->ProcessForOverlays(
1733 resource_provider_.get(), pass.get(), render_pass_filters, 1733 resource_provider_.get(), pass.get(), false, render_pass_filters,
1734 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, 1734 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr,
1735 &damage_rect_, &content_bounds_); 1735 &damage_rect_, &content_bounds_);
1736 EXPECT_EQ(gfx::Rect(), damage_rect); 1736 EXPECT_EQ(gfx::Rect(), damage_rect);
1737 EXPECT_EQ(0U, overlay_list.size()); 1737 EXPECT_EQ(0U, overlay_list.size());
1738 EXPECT_EQ(1U, ca_layer_list.size()); 1738 EXPECT_EQ(1U, ca_layer_list.size());
1739 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1739 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1740 } 1740 }
1741 1741
1742 TEST_F(CALayerOverlayTest, NontrivialClip) { 1742 TEST_F(CALayerOverlayTest, NontrivialClip) {
1743 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1743 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1744 CreateFullscreenCandidateQuad(resource_provider_.get(), 1744 CreateFullscreenCandidateQuad(resource_provider_.get(),
1745 pass->shared_quad_state_list.back(), 1745 pass->shared_quad_state_list.back(),
1746 pass.get()); 1746 pass.get());
1747 pass->shared_quad_state_list.back()->is_clipped = true; 1747 pass->shared_quad_state_list.back()->is_clipped = true;
1748 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128); 1748 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(64, 64, 128, 128);
1749 1749
1750 gfx::Rect damage_rect; 1750 gfx::Rect damage_rect;
1751 CALayerOverlayList ca_layer_list; 1751 CALayerOverlayList ca_layer_list;
1752 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1752 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1753 base::flat_map<int, FilterOperations*> render_pass_filters; 1753 base::flat_map<int, FilterOperations*> render_pass_filters;
1754 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1754 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1755 overlay_processor_->ProcessForOverlays( 1755 overlay_processor_->ProcessForOverlays(
1756 resource_provider_.get(), pass.get(), render_pass_filters, 1756 resource_provider_.get(), pass.get(), false, render_pass_filters,
1757 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, 1757 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr,
1758 &damage_rect_, &content_bounds_); 1758 &damage_rect_, &content_bounds_);
1759 EXPECT_EQ(gfx::Rect(), damage_rect); 1759 EXPECT_EQ(gfx::Rect(), damage_rect);
1760 EXPECT_EQ(0U, overlay_list.size()); 1760 EXPECT_EQ(0U, overlay_list.size());
1761 EXPECT_EQ(1U, ca_layer_list.size()); 1761 EXPECT_EQ(1U, ca_layer_list.size());
1762 EXPECT_TRUE(ca_layer_list.back().shared_state->is_clipped); 1762 EXPECT_TRUE(ca_layer_list.back().shared_state->is_clipped);
1763 EXPECT_EQ(gfx::RectF(64, 64, 128, 128), 1763 EXPECT_EQ(gfx::RectF(64, 64, 128, 128),
1764 ca_layer_list.back().shared_state->clip_rect); 1764 ca_layer_list.back().shared_state->clip_rect);
1765 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1765 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1766 } 1766 }
1767 1767
1768 TEST_F(CALayerOverlayTest, SkipTransparent) { 1768 TEST_F(CALayerOverlayTest, SkipTransparent) {
1769 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1769 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1770 CreateFullscreenCandidateQuad(resource_provider_.get(), 1770 CreateFullscreenCandidateQuad(resource_provider_.get(),
1771 pass->shared_quad_state_list.back(), 1771 pass->shared_quad_state_list.back(),
1772 pass.get()); 1772 pass.get());
1773 pass->shared_quad_state_list.back()->opacity = 0; 1773 pass->shared_quad_state_list.back()->opacity = 0;
1774 1774
1775 gfx::Rect damage_rect; 1775 gfx::Rect damage_rect;
1776 CALayerOverlayList ca_layer_list; 1776 CALayerOverlayList ca_layer_list;
1777 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get())); 1777 OverlayCandidateList overlay_list(BackbufferOverlayList(pass.get()));
1778 base::flat_map<int, FilterOperations*> render_pass_filters; 1778 base::flat_map<int, FilterOperations*> render_pass_filters;
1779 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1779 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1780 overlay_processor_->ProcessForOverlays( 1780 overlay_processor_->ProcessForOverlays(
1781 resource_provider_.get(), pass.get(), render_pass_filters, 1781 resource_provider_.get(), pass.get(), false, render_pass_filters,
1782 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr, 1782 render_pass_background_filters, &overlay_list, &ca_layer_list, nullptr,
1783 &damage_rect_, &content_bounds_); 1783 &damage_rect_, &content_bounds_);
1784 EXPECT_EQ(gfx::Rect(), damage_rect); 1784 EXPECT_EQ(gfx::Rect(), damage_rect);
1785 EXPECT_EQ(0U, overlay_list.size()); 1785 EXPECT_EQ(0U, overlay_list.size());
1786 EXPECT_EQ(0U, ca_layer_list.size()); 1786 EXPECT_EQ(0U, ca_layer_list.size());
1787 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1787 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1788 } 1788 }
1789 1789
1790 TEST_F(DCLayerOverlayTest, AllowNonAxisAlignedTransform) { 1790 TEST_F(DCLayerOverlayTest, AllowNonAxisAlignedTransform) {
1791 base::test::ScopedFeatureList feature_list; 1791 base::test::ScopedFeatureList feature_list;
1792 feature_list.InitAndEnableFeature( 1792 feature_list.InitAndEnableFeature(
1793 features::kDirectCompositionComplexOverlays); 1793 features::kDirectCompositionComplexOverlays);
1794 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1794 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1795 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), 1795 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(),
1796 pass->shared_quad_state_list.back(), 1796 pass->shared_quad_state_list.back(),
1797 pass.get()); 1797 pass.get());
1798 pass->shared_quad_state_list.back() 1798 pass->shared_quad_state_list.back()
1799 ->quad_to_target_transform.RotateAboutZAxis(45.f); 1799 ->quad_to_target_transform.RotateAboutZAxis(45.f);
1800 1800
1801 gfx::Rect damage_rect; 1801 gfx::Rect damage_rect;
1802 DCLayerOverlayList dc_layer_list; 1802 DCLayerOverlayList dc_layer_list;
1803 OverlayCandidateList overlay_list; 1803 OverlayCandidateList overlay_list;
1804 base::flat_map<int, FilterOperations*> render_pass_filters; 1804 base::flat_map<int, FilterOperations*> render_pass_filters;
1805 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1805 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1806 damage_rect_ = gfx::Rect(1, 1, 10, 10); 1806 damage_rect_ = gfx::Rect(1, 1, 10, 10);
1807 overlay_processor_->ProcessForOverlays( 1807 overlay_processor_->ProcessForOverlays(
1808 resource_provider_.get(), pass.get(), render_pass_filters, 1808 resource_provider_.get(), pass.get(), false, render_pass_filters,
1809 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, 1809 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list,
1810 &damage_rect_, &content_bounds_); 1810 &damage_rect_, &content_bounds_);
1811 EXPECT_EQ(gfx::Rect(), damage_rect); 1811 EXPECT_EQ(gfx::Rect(), damage_rect);
1812 EXPECT_EQ(0U, overlay_list.size()); 1812 EXPECT_EQ(0U, overlay_list.size());
1813 EXPECT_EQ(1U, dc_layer_list.size()); 1813 EXPECT_EQ(1U, dc_layer_list.size());
1814 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); 1814 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order);
1815 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1815 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1816 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_); 1816 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_);
1817 } 1817 }
1818 1818
1819 TEST_F(DCLayerOverlayTest, Occluded) { 1819 TEST_F(DCLayerOverlayTest, Occluded) {
1820 base::test::ScopedFeatureList feature_list; 1820 base::test::ScopedFeatureList feature_list;
1821 feature_list.InitAndEnableFeature(features::kDirectCompositionUnderlays); 1821 feature_list.InitAndEnableFeature(features::kDirectCompositionUnderlays);
1822 { 1822 {
1823 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1823 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1824 CreateOpaqueQuadAt(resource_provider_.get(), 1824 CreateOpaqueQuadAt(resource_provider_.get(),
1825 pass->shared_quad_state_list.back(), pass.get(), 1825 pass->shared_quad_state_list.back(), pass.get(),
1826 gfx::Rect(0, 2, 100, 100), SK_ColorWHITE); 1826 gfx::Rect(0, 2, 100, 100), SK_ColorWHITE);
1827 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), 1827 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(),
1828 pass->shared_quad_state_list.back(), 1828 pass->shared_quad_state_list.back(),
1829 pass.get()); 1829 pass.get());
1830 1830
1831 gfx::Rect damage_rect; 1831 gfx::Rect damage_rect;
1832 DCLayerOverlayList dc_layer_list; 1832 DCLayerOverlayList dc_layer_list;
1833 OverlayCandidateList overlay_list; 1833 OverlayCandidateList overlay_list;
1834 base::flat_map<int, FilterOperations*> render_pass_filters; 1834 base::flat_map<int, FilterOperations*> render_pass_filters;
1835 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1835 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1836 damage_rect_ = gfx::Rect(1, 1, 10, 10); 1836 damage_rect_ = gfx::Rect(1, 1, 10, 10);
1837 overlay_processor_->ProcessForOverlays( 1837 overlay_processor_->ProcessForOverlays(
1838 resource_provider_.get(), pass.get(), render_pass_filters, 1838 resource_provider_.get(), pass.get(), false, render_pass_filters,
1839 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, 1839 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list,
1840 &damage_rect_, &content_bounds_); 1840 &damage_rect_, &content_bounds_);
1841 EXPECT_EQ(gfx::Rect(), damage_rect); 1841 EXPECT_EQ(gfx::Rect(), damage_rect);
1842 EXPECT_EQ(0U, overlay_list.size()); 1842 EXPECT_EQ(0U, overlay_list.size());
1843 EXPECT_EQ(1U, dc_layer_list.size()); 1843 EXPECT_EQ(1U, dc_layer_list.size());
1844 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1844 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1845 EXPECT_EQ(-1, dc_layer_list.back().shared_state->z_order); 1845 EXPECT_EQ(-1, dc_layer_list.back().shared_state->z_order);
1846 // Entire underlay rect must be redrawn. 1846 // Entire underlay rect must be redrawn.
1847 EXPECT_EQ(gfx::Rect(0, 0, 256, 256), damage_rect_); 1847 EXPECT_EQ(gfx::Rect(0, 0, 256, 256), damage_rect_);
1848 } 1848 }
1849 { 1849 {
1850 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1850 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1851 CreateOpaqueQuadAt(resource_provider_.get(), 1851 CreateOpaqueQuadAt(resource_provider_.get(),
1852 pass->shared_quad_state_list.back(), pass.get(), 1852 pass->shared_quad_state_list.back(), pass.get(),
1853 gfx::Rect(2, 2, 100, 100), SK_ColorWHITE); 1853 gfx::Rect(2, 2, 100, 100), SK_ColorWHITE);
1854 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), 1854 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(),
1855 pass->shared_quad_state_list.back(), 1855 pass->shared_quad_state_list.back(),
1856 pass.get()); 1856 pass.get());
1857 1857
1858 gfx::Rect damage_rect; 1858 gfx::Rect damage_rect;
1859 DCLayerOverlayList dc_layer_list; 1859 DCLayerOverlayList dc_layer_list;
1860 OverlayCandidateList overlay_list; 1860 OverlayCandidateList overlay_list;
1861 base::flat_map<int, FilterOperations*> render_pass_filters; 1861 base::flat_map<int, FilterOperations*> render_pass_filters;
1862 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1862 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1863 damage_rect_ = gfx::Rect(1, 1, 10, 10); 1863 damage_rect_ = gfx::Rect(1, 1, 10, 10);
1864 overlay_processor_->ProcessForOverlays( 1864 overlay_processor_->ProcessForOverlays(
1865 resource_provider_.get(), pass.get(), render_pass_filters, 1865 resource_provider_.get(), pass.get(), false, render_pass_filters,
1866 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, 1866 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list,
1867 &damage_rect_, &content_bounds_); 1867 &damage_rect_, &content_bounds_);
1868 EXPECT_EQ(gfx::Rect(), damage_rect); 1868 EXPECT_EQ(gfx::Rect(), damage_rect);
1869 EXPECT_EQ(0U, overlay_list.size()); 1869 EXPECT_EQ(0U, overlay_list.size());
1870 EXPECT_EQ(1U, dc_layer_list.size()); 1870 EXPECT_EQ(1U, dc_layer_list.size());
1871 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1871 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1872 EXPECT_EQ(-1, dc_layer_list.back().shared_state->z_order); 1872 EXPECT_EQ(-1, dc_layer_list.back().shared_state->z_order);
1873 // The underlay rectangle is the same, so the damage is contained within 1873 // The underlay rectangle is the same, so the damage is contained within
1874 // the combined occluding rects for this and the last frame. 1874 // the combined occluding rects for this and the last frame.
1875 EXPECT_EQ(gfx::Rect(1, 2, 10, 9), damage_rect_); 1875 EXPECT_EQ(gfx::Rect(1, 2, 10, 9), damage_rect_);
1876 } 1876 }
1877 } 1877 }
1878 1878
1879 TEST_F(DCLayerOverlayTest, DamageRect) { 1879 TEST_F(DCLayerOverlayTest, DamageRect) {
1880 for (int i = 0; i < 2; i++) { 1880 for (int i = 0; i < 2; i++) {
1881 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1881 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1882 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(), 1882 CreateFullscreenCandidateYUVVideoQuad(resource_provider_.get(),
1883 pass->shared_quad_state_list.back(), 1883 pass->shared_quad_state_list.back(),
1884 pass.get()); 1884 pass.get());
1885 1885
1886 gfx::Rect damage_rect; 1886 gfx::Rect damage_rect;
1887 DCLayerOverlayList dc_layer_list; 1887 DCLayerOverlayList dc_layer_list;
1888 OverlayCandidateList overlay_list; 1888 OverlayCandidateList overlay_list;
1889 base::flat_map<int, FilterOperations*> render_pass_filters; 1889 base::flat_map<int, FilterOperations*> render_pass_filters;
1890 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1890 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1891 damage_rect_ = gfx::Rect(1, 1, 10, 10); 1891 damage_rect_ = gfx::Rect(1, 1, 10, 10);
1892 overlay_processor_->ProcessForOverlays( 1892 overlay_processor_->ProcessForOverlays(
1893 resource_provider_.get(), pass.get(), render_pass_filters, 1893 resource_provider_.get(), pass.get(), (i == 0), render_pass_filters,
1894 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, 1894 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list,
1895 &damage_rect_, &content_bounds_); 1895 &damage_rect_, &content_bounds_);
1896 EXPECT_EQ(gfx::Rect(), damage_rect); 1896 EXPECT_EQ(gfx::Rect(), damage_rect);
1897 EXPECT_EQ(0U, overlay_list.size()); 1897 EXPECT_EQ(0U, overlay_list.size());
1898 EXPECT_EQ(1U, dc_layer_list.size()); 1898 EXPECT_EQ(1U, dc_layer_list.size());
1899 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count()); 1899 EXPECT_EQ(0U, output_surface_->bind_framebuffer_count());
1900 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); 1900 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order);
1901 // Damage rect should be unchanged on initial frame because of resize, but 1901 // Damage rect should be unchanged on initial frame because of resize, but
1902 // should be empty on the second frame because everything was put in a 1902 // should be empty on the second frame because everything was put in a
1903 // layer. 1903 // layer.
(...skipping 25 matching lines...) Expand all
1929 shared_state->is_clipped = true; 1929 shared_state->is_clipped = true;
1930 // Clipped rect shouldn't be overlapped by clipped opaque quad rect. 1930 // Clipped rect shouldn't be overlapped by clipped opaque quad rect.
1931 shared_state->clip_rect = gfx::Rect(0, 0, 100, 3); 1931 shared_state->clip_rect = gfx::Rect(0, 0, 100, 3);
1932 1932
1933 DCLayerOverlayList dc_layer_list; 1933 DCLayerOverlayList dc_layer_list;
1934 OverlayCandidateList overlay_list; 1934 OverlayCandidateList overlay_list;
1935 base::flat_map<int, FilterOperations*> render_pass_filters; 1935 base::flat_map<int, FilterOperations*> render_pass_filters;
1936 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1936 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1937 damage_rect_ = gfx::Rect(1, 1, 10, 10); 1937 damage_rect_ = gfx::Rect(1, 1, 10, 10);
1938 overlay_processor_->ProcessForOverlays( 1938 overlay_processor_->ProcessForOverlays(
1939 resource_provider_.get(), pass.get(), render_pass_filters, 1939 resource_provider_.get(), pass.get(), false, render_pass_filters,
1940 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, 1940 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list,
1941 &damage_rect_, &content_bounds_); 1941 &damage_rect_, &content_bounds_);
1942 EXPECT_EQ(0U, overlay_list.size()); 1942 EXPECT_EQ(0U, overlay_list.size());
1943 EXPECT_EQ(1U, dc_layer_list.size()); 1943 EXPECT_EQ(1U, dc_layer_list.size());
1944 // Because of clip rects the overlay isn't occluded and shouldn't be an 1944 // Because of clip rects the overlay isn't occluded and shouldn't be an
1945 // underlay. 1945 // underlay.
1946 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); 1946 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order);
1947 if (i == 1) { 1947 if (i == 1) {
1948 // The damage rect should only contain contents that aren't in the 1948 // The damage rect should only contain contents that aren't in the
1949 // clipped overlay rect. 1949 // clipped overlay rect.
(...skipping 14 matching lines...) Expand all
1964 pass->shared_quad_state_list.back(), 1964 pass->shared_quad_state_list.back(),
1965 pass.get()); 1965 pass.get());
1966 pass->shared_quad_state_list.back()->opacity = 0.5f; 1966 pass->shared_quad_state_list.back()->opacity = 0.5f;
1967 1967
1968 DCLayerOverlayList dc_layer_list; 1968 DCLayerOverlayList dc_layer_list;
1969 OverlayCandidateList overlay_list; 1969 OverlayCandidateList overlay_list;
1970 base::flat_map<int, FilterOperations*> render_pass_filters; 1970 base::flat_map<int, FilterOperations*> render_pass_filters;
1971 base::flat_map<int, FilterOperations*> render_pass_background_filters; 1971 base::flat_map<int, FilterOperations*> render_pass_background_filters;
1972 damage_rect_ = gfx::Rect(1, 1, 10, 10); 1972 damage_rect_ = gfx::Rect(1, 1, 10, 10);
1973 overlay_processor_->ProcessForOverlays( 1973 overlay_processor_->ProcessForOverlays(
1974 resource_provider_.get(), pass.get(), render_pass_filters, 1974 resource_provider_.get(), pass.get(), false, render_pass_filters,
1975 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list, 1975 render_pass_background_filters, &overlay_list, nullptr, &dc_layer_list,
1976 &damage_rect_, &content_bounds_); 1976 &damage_rect_, &content_bounds_);
1977 EXPECT_EQ(0U, overlay_list.size()); 1977 EXPECT_EQ(0U, overlay_list.size());
1978 EXPECT_EQ(1U, dc_layer_list.size()); 1978 EXPECT_EQ(1U, dc_layer_list.size());
1979 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order); 1979 EXPECT_EQ(1, dc_layer_list.back().shared_state->z_order);
1980 // Quad isn't opaque, so underlying damage must remain the same. 1980 // Quad isn't opaque, so underlying damage must remain the same.
1981 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_); 1981 EXPECT_EQ(gfx::Rect(1, 1, 10, 10), damage_rect_);
1982 } 1982 }
1983 } 1983 }
1984 1984
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
2511 CALayerOverlayTest::SetUp(); 2511 CALayerOverlayTest::SetUp();
2512 pass_ = CreateRenderPass(); 2512 pass_ = CreateRenderPass();
2513 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 2513 quad_ = pass_->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
2514 render_pass_id_ = 3; 2514 render_pass_id_ = 3;
2515 } 2515 }
2516 2516
2517 void ProcessForOverlays() { 2517 void ProcessForOverlays() {
2518 gfx::Rect damage_rect; 2518 gfx::Rect damage_rect;
2519 overlay_list_ = BackbufferOverlayList(pass_.get()); 2519 overlay_list_ = BackbufferOverlayList(pass_.get());
2520 overlay_processor_->ProcessForOverlays( 2520 overlay_processor_->ProcessForOverlays(
2521 resource_provider_.get(), pass_.get(), render_pass_filters_, 2521 resource_provider_.get(), pass_.get(), false, render_pass_filters_,
2522 render_pass_background_filters_, &overlay_list_, &ca_layer_list_, 2522 render_pass_background_filters_, &overlay_list_, &ca_layer_list_,
2523 nullptr, &damage_rect_, &content_bounds_); 2523 nullptr, &damage_rect_, &content_bounds_);
2524 } 2524 }
2525 std::unique_ptr<RenderPass> pass_; 2525 std::unique_ptr<RenderPass> pass_;
2526 RenderPassDrawQuad* quad_; 2526 RenderPassDrawQuad* quad_;
2527 int render_pass_id_; 2527 int render_pass_id_;
2528 FilterOperations filters_; 2528 FilterOperations filters_;
2529 FilterOperations background_filters_; 2529 FilterOperations background_filters_;
2530 base::flat_map<int, FilterOperations*> render_pass_filters_; 2530 base::flat_map<int, FilterOperations*> render_pass_filters_;
2531 base::flat_map<int, FilterOperations*> render_pass_background_filters_; 2531 base::flat_map<int, FilterOperations*> render_pass_background_filters_;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2633 kOverlayRect, render_pass_id_, 2, gfx::RectF(), gfx::Size(), 2633 kOverlayRect, render_pass_id_, 2, gfx::RectF(), gfx::Size(),
2634 gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF()); 2634 gfx::Vector2dF(1, 1), gfx::PointF(), gfx::RectF());
2635 } 2635 }
2636 2636
2637 ProcessForOverlays(); 2637 ProcessForOverlays();
2638 EXPECT_EQ(0U, ca_layer_list_.size()); 2638 EXPECT_EQ(0U, ca_layer_list_.size());
2639 } 2639 }
2640 2640
2641 } // namespace 2641 } // namespace
2642 } // namespace cc 2642 } // namespace cc
OLDNEW
« cc/output/direct_renderer.cc ('K') | « cc/output/overlay_processor.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698