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

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

Issue 2698843005: cc: Make SingleOnTop strategy reject transformed overlays. (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « cc/output/overlay_strategy_single_on_top.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/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 765
766 OverlayCandidateList candidate_list; 766 OverlayCandidateList candidate_list;
767 RenderPassFilterList render_pass_filters; 767 RenderPassFilterList render_pass_filters;
768 RenderPassFilterList render_pass_background_filters; 768 RenderPassFilterList render_pass_background_filters;
769 overlay_processor_->ProcessForOverlays( 769 overlay_processor_->ProcessForOverlays(
770 resource_provider_.get(), pass.get(), render_pass_filters, 770 resource_provider_.get(), pass.get(), render_pass_filters,
771 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 771 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
772 EXPECT_EQ(1U, candidate_list.size()); 772 EXPECT_EQ(1U, candidate_list.size());
773 } 773 }
774 774
775 TEST_F(SingleOverlayOnTopTest, AllowVerticalFlip) { 775 TEST_F(UnderlayTest, AllowVerticalFlip) {
776 gfx::Rect rect = kOverlayRect; 776 gfx::Rect rect = kOverlayRect;
777 rect.set_width(rect.width() / 2); 777 rect.set_width(rect.width() / 2);
778 rect.Offset(0, -rect.height()); 778 rect.Offset(0, -rect.height());
779 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 779 std::unique_ptr<RenderPass> pass = CreateRenderPass();
780 CreateCandidateQuadAt(resource_provider_.get(), 780 CreateCandidateQuadAt(resource_provider_.get(),
781 pass->shared_quad_state_list.back(), pass.get(), rect); 781 pass->shared_quad_state_list.back(), pass.get(), rect);
782 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f, 782 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(2.0f,
783 -1.0f); 783 -1.0f);
784 OverlayCandidateList candidate_list; 784 OverlayCandidateList candidate_list;
785 RenderPassFilterList render_pass_filters; 785 RenderPassFilterList render_pass_filters;
786 RenderPassFilterList render_pass_background_filters; 786 RenderPassFilterList render_pass_background_filters;
787 overlay_processor_->ProcessForOverlays( 787 overlay_processor_->ProcessForOverlays(
788 resource_provider_.get(), pass.get(), render_pass_filters, 788 resource_provider_.get(), pass.get(), render_pass_filters,
789 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 789 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
790 ASSERT_EQ(1U, candidate_list.size()); 790 ASSERT_EQ(1U, candidate_list.size());
791 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL, 791 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL,
792 candidate_list.back().transform); 792 candidate_list.back().transform);
793 } 793 }
794 794
795 TEST_F(SingleOverlayOnTopTest, AllowHorizontalFlip) { 795 TEST_F(UnderlayTest, AllowHorizontalFlip) {
796 gfx::Rect rect = kOverlayRect; 796 gfx::Rect rect = kOverlayRect;
797 rect.set_height(rect.height() / 2); 797 rect.set_height(rect.height() / 2);
798 rect.Offset(-rect.width(), 0); 798 rect.Offset(-rect.width(), 0);
799 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 799 std::unique_ptr<RenderPass> pass = CreateRenderPass();
800 CreateCandidateQuadAt(resource_provider_.get(), 800 CreateCandidateQuadAt(resource_provider_.get(),
801 pass->shared_quad_state_list.back(), pass.get(), rect); 801 pass->shared_quad_state_list.back(), pass.get(), rect);
802 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f, 802 pass->shared_quad_state_list.back()->quad_to_target_transform.Scale(-1.0f,
803 2.0f); 803 2.0f);
804 804
805 OverlayCandidateList candidate_list; 805 OverlayCandidateList candidate_list;
(...skipping 17 matching lines...) Expand all
823 1.0f); 823 1.0f);
824 OverlayCandidateList candidate_list; 824 OverlayCandidateList candidate_list;
825 RenderPassFilterList render_pass_filters; 825 RenderPassFilterList render_pass_filters;
826 RenderPassFilterList render_pass_background_filters; 826 RenderPassFilterList render_pass_background_filters;
827 overlay_processor_->ProcessForOverlays( 827 overlay_processor_->ProcessForOverlays(
828 resource_provider_.get(), pass.get(), render_pass_filters, 828 resource_provider_.get(), pass.get(), render_pass_filters,
829 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 829 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
830 EXPECT_EQ(1U, candidate_list.size()); 830 EXPECT_EQ(1U, candidate_list.size());
831 } 831 }
832 832
833 TEST_F(SingleOverlayOnTopTest, Allow90DegreeRotation) { 833 TEST_F(SingleOverlayOnTopTest, RejectTransform) {
834 gfx::Rect rect = kOverlayRect; 834 gfx::Rect rect = kOverlayRect;
835 rect.Offset(0, -rect.height()); 835 rect.Offset(0, -rect.height());
836 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 836 std::unique_ptr<RenderPass> pass = CreateRenderPass();
837 CreateCandidateQuadAt(resource_provider_.get(),
838 pass->shared_quad_state_list.back(), pass.get(), rect);
839 pass->shared_quad_state_list.back()
840 ->quad_to_target_transform.RotateAboutZAxis(90.f);
841
842 OverlayCandidateList candidate_list;
843 RenderPassFilterList render_pass_filters;
844 RenderPassFilterList render_pass_background_filters;
845 overlay_processor_->ProcessForOverlays(
846 resource_provider_.get(), pass.get(), render_pass_filters,
847 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
848 ASSERT_EQ(0U, candidate_list.size());
849 }
850
851 TEST_F(UnderlayTest, Allow90DegreeRotation) {
852 gfx::Rect rect = kOverlayRect;
853 rect.Offset(0, -rect.height());
854 std::unique_ptr<RenderPass> pass = CreateRenderPass();
837 CreateCandidateQuadAt(resource_provider_.get(), 855 CreateCandidateQuadAt(resource_provider_.get(),
838 pass->shared_quad_state_list.back(), pass.get(), rect); 856 pass->shared_quad_state_list.back(), pass.get(), rect);
839 pass->shared_quad_state_list.back() 857 pass->shared_quad_state_list.back()
840 ->quad_to_target_transform.RotateAboutZAxis(90.f); 858 ->quad_to_target_transform.RotateAboutZAxis(90.f);
841 859
842 OverlayCandidateList candidate_list; 860 OverlayCandidateList candidate_list;
843 RenderPassFilterList render_pass_filters; 861 RenderPassFilterList render_pass_filters;
844 RenderPassFilterList render_pass_background_filters; 862 RenderPassFilterList render_pass_background_filters;
845 overlay_processor_->ProcessForOverlays( 863 overlay_processor_->ProcessForOverlays(
846 resource_provider_.get(), pass.get(), render_pass_filters, 864 resource_provider_.get(), pass.get(), render_pass_filters,
847 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 865 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
848 ASSERT_EQ(1U, candidate_list.size()); 866 ASSERT_EQ(1U, candidate_list.size());
849 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform); 867 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_90, candidate_list.back().transform);
850 } 868 }
851 869
852 TEST_F(SingleOverlayOnTopTest, Allow180DegreeRotation) { 870 TEST_F(UnderlayTest, Allow180DegreeRotation) {
853 gfx::Rect rect = kOverlayRect; 871 gfx::Rect rect = kOverlayRect;
854 rect.Offset(-rect.width(), -rect.height()); 872 rect.Offset(-rect.width(), -rect.height());
855 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 873 std::unique_ptr<RenderPass> pass = CreateRenderPass();
856 CreateCandidateQuadAt(resource_provider_.get(), 874 CreateCandidateQuadAt(resource_provider_.get(),
857 pass->shared_quad_state_list.back(), pass.get(), rect); 875 pass->shared_quad_state_list.back(), pass.get(), rect);
858 pass->shared_quad_state_list.back() 876 pass->shared_quad_state_list.back()
859 ->quad_to_target_transform.RotateAboutZAxis(180.f); 877 ->quad_to_target_transform.RotateAboutZAxis(180.f);
860 878
861 OverlayCandidateList candidate_list; 879 OverlayCandidateList candidate_list;
862 RenderPassFilterList render_pass_filters; 880 RenderPassFilterList render_pass_filters;
863 RenderPassFilterList render_pass_background_filters; 881 RenderPassFilterList render_pass_background_filters;
864 overlay_processor_->ProcessForOverlays( 882 overlay_processor_->ProcessForOverlays(
865 resource_provider_.get(), pass.get(), render_pass_filters, 883 resource_provider_.get(), pass.get(), render_pass_filters,
866 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 884 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
867 ASSERT_EQ(1U, candidate_list.size()); 885 ASSERT_EQ(1U, candidate_list.size());
868 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform); 886 EXPECT_EQ(gfx::OVERLAY_TRANSFORM_ROTATE_180, candidate_list.back().transform);
869 } 887 }
870 888
871 TEST_F(SingleOverlayOnTopTest, Allow270DegreeRotation) { 889 TEST_F(UnderlayTest, Allow270DegreeRotation) {
872 gfx::Rect rect = kOverlayRect; 890 gfx::Rect rect = kOverlayRect;
873 rect.Offset(-rect.width(), 0); 891 rect.Offset(-rect.width(), 0);
874 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 892 std::unique_ptr<RenderPass> pass = CreateRenderPass();
875 CreateCandidateQuadAt(resource_provider_.get(), 893 CreateCandidateQuadAt(resource_provider_.get(),
876 pass->shared_quad_state_list.back(), pass.get(), rect); 894 pass->shared_quad_state_list.back(), pass.get(), rect);
877 pass->shared_quad_state_list.back() 895 pass->shared_quad_state_list.back()
878 ->quad_to_target_transform.RotateAboutZAxis(270.f); 896 ->quad_to_target_transform.RotateAboutZAxis(270.f);
879 897
880 OverlayCandidateList candidate_list; 898 OverlayCandidateList candidate_list;
881 RenderPassFilterList render_pass_filters; 899 RenderPassFilterList render_pass_filters;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 1008
991 OverlayCandidateList candidate_list; 1009 OverlayCandidateList candidate_list;
992 RenderPassFilterList render_pass_filters; 1010 RenderPassFilterList render_pass_filters;
993 RenderPassFilterList render_pass_background_filters; 1011 RenderPassFilterList render_pass_background_filters;
994 overlay_processor_->ProcessForOverlays( 1012 overlay_processor_->ProcessForOverlays(
995 resource_provider_.get(), pass.get(), render_pass_filters, 1013 resource_provider_.get(), pass.get(), render_pass_filters,
996 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 1014 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
997 EXPECT_EQ(0U, candidate_list.size()); 1015 EXPECT_EQ(0U, candidate_list.size());
998 } 1016 }
999 1017
1000 TEST_F(SingleOverlayOnTopTest, AllowVideoXMirrorTransform) { 1018 TEST_F(UnderlayTest, AllowVideoXMirrorTransform) {
1001 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1019 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1002 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1020 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1003 pass->shared_quad_state_list.back(), 1021 pass->shared_quad_state_list.back(),
1004 pass.get(), kXMirrorTransform); 1022 pass.get(), kXMirrorTransform);
1005 1023
1006 OverlayCandidateList candidate_list; 1024 OverlayCandidateList candidate_list;
1007 RenderPassFilterList render_pass_filters; 1025 RenderPassFilterList render_pass_filters;
1008 RenderPassFilterList render_pass_background_filters; 1026 RenderPassFilterList render_pass_background_filters;
1009 overlay_processor_->ProcessForOverlays( 1027 overlay_processor_->ProcessForOverlays(
1010 resource_provider_.get(), pass.get(), render_pass_filters, 1028 resource_provider_.get(), pass.get(), render_pass_filters,
1011 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 1029 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
1012 EXPECT_EQ(1U, candidate_list.size()); 1030 EXPECT_EQ(1U, candidate_list.size());
1013 } 1031 }
1014 1032
1015 TEST_F(SingleOverlayOnTopTest, AllowVideoBothMirrorTransform) { 1033 TEST_F(UnderlayTest, AllowVideoBothMirrorTransform) {
1016 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1034 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1017 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1035 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1018 pass->shared_quad_state_list.back(), 1036 pass->shared_quad_state_list.back(),
1019 pass.get(), kBothMirrorTransform); 1037 pass.get(), kBothMirrorTransform);
1020 1038
1021 OverlayCandidateList candidate_list; 1039 OverlayCandidateList candidate_list;
1022 RenderPassFilterList render_pass_filters; 1040 RenderPassFilterList render_pass_filters;
1023 RenderPassFilterList render_pass_background_filters; 1041 RenderPassFilterList render_pass_background_filters;
1024 overlay_processor_->ProcessForOverlays( 1042 overlay_processor_->ProcessForOverlays(
1025 resource_provider_.get(), pass.get(), render_pass_filters, 1043 resource_provider_.get(), pass.get(), render_pass_filters,
1026 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_); 1044 render_pass_background_filters, &candidate_list, nullptr, &damage_rect_);
1027 EXPECT_EQ(1U, candidate_list.size()); 1045 EXPECT_EQ(1U, candidate_list.size());
1028 } 1046 }
1029 1047
1030 TEST_F(SingleOverlayOnTopTest, AllowVideoNormalTransform) { 1048 TEST_F(UnderlayTest, AllowVideoNormalTransform) {
1031 std::unique_ptr<RenderPass> pass = CreateRenderPass(); 1049 std::unique_ptr<RenderPass> pass = CreateRenderPass();
1032 CreateFullscreenCandidateVideoQuad(resource_provider_.get(), 1050 CreateFullscreenCandidateVideoQuad(resource_provider_.get(),
1033 pass->shared_quad_state_list.back(), 1051 pass->shared_quad_state_list.back(),
1034 pass.get(), kNormalTransform); 1052 pass.get(), kNormalTransform);
1035 1053
1036 OverlayCandidateList candidate_list; 1054 OverlayCandidateList candidate_list;
1037 RenderPassFilterList render_pass_filters; 1055 RenderPassFilterList render_pass_filters;
1038 RenderPassFilterList render_pass_background_filters; 1056 RenderPassFilterList render_pass_background_filters;
1039 overlay_processor_->ProcessForOverlays( 1057 overlay_processor_->ProcessForOverlays(
1040 resource_provider_.get(), pass.get(), render_pass_filters, 1058 resource_provider_.get(), pass.get(), render_pass_filters,
(...skipping 959 matching lines...) Expand 10 before | Expand all | Expand 10 after
2000 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(), 2018 kOverlayRect, render_pass_id_, 2, gfx::Vector2dF(),
2001 gfx::Size(), gfx::Vector2dF(1, 1), gfx::PointF()); 2019 gfx::Size(), gfx::Vector2dF(1, 1), gfx::PointF());
2002 } 2020 }
2003 2021
2004 ProcessForOverlays(); 2022 ProcessForOverlays();
2005 EXPECT_EQ(0U, ca_layer_list_.size()); 2023 EXPECT_EQ(0U, ca_layer_list_.size());
2006 } 2024 }
2007 2025
2008 } // namespace 2026 } // namespace
2009 } // namespace cc 2027 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_strategy_single_on_top.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698