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

Side by Side Diff: cc/surfaces/compositor_frame_sink_support_unittest.cc

Issue 2755463002: [cc] Fix CompositorFrameSinkSupport BeginFrameAck interface. (Closed)
Patch Set: pass on acks to MojoCFSs in clients. Created 3 years, 9 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/surfaces/compositor_frame_sink_support.h" 5 #include "cc/surfaces/compositor_frame_sink_support.h"
6 6
7 #include "base/debug/stack_trace.h" 7 #include "base/debug/stack_trace.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "cc/output/compositor_frame.h" 9 #include "cc/output/compositor_frame.h"
10 #include "cc/surfaces/compositor_frame_sink_support_client.h" 10 #include "cc/surfaces/compositor_frame_sink_support_client.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 std::vector<SurfaceId> empty_surface_ids() { 64 std::vector<SurfaceId> empty_surface_ids() {
65 return std::vector<SurfaceId>(); 65 return std::vector<SurfaceId>();
66 } 66 }
67 67
68 SurfaceId MakeSurfaceId(const FrameSinkId& frame_sink_id, uint32_t local_id) { 68 SurfaceId MakeSurfaceId(const FrameSinkId& frame_sink_id, uint32_t local_id) {
69 return SurfaceId( 69 return SurfaceId(
70 frame_sink_id, 70 frame_sink_id,
71 LocalSurfaceId(local_id, base::UnguessableToken::Deserialize(0, 1u))); 71 LocalSurfaceId(local_id, base::UnguessableToken::Deserialize(0, 1u)));
72 } 72 }
73 73
74 CompositorFrame MakeCompositorFrame() {
75 CompositorFrame compositor_frame;
76 compositor_frame.metadata.begin_frame_ack = BeginFrameAck(0, 1, 1, 0, true);
77 return compositor_frame;
78 }
79
74 CompositorFrame MakeCompositorFrame( 80 CompositorFrame MakeCompositorFrame(
75 std::vector<SurfaceId> referenced_surfaces) { 81 std::vector<SurfaceId> referenced_surfaces) {
76 CompositorFrame compositor_frame; 82 CompositorFrame compositor_frame;
83 compositor_frame.metadata.begin_frame_ack = BeginFrameAck(0, 1, 1, 0, true);
77 compositor_frame.metadata.referenced_surfaces = 84 compositor_frame.metadata.referenced_surfaces =
78 std::move(referenced_surfaces); 85 std::move(referenced_surfaces);
79 return compositor_frame; 86 return compositor_frame;
80 } 87 }
81 88
82 CompositorFrame MakeCompositorFrameWithResources( 89 CompositorFrame MakeCompositorFrameWithResources(
83 std::vector<SurfaceId> referenced_surfaces, 90 std::vector<SurfaceId> referenced_surfaces,
84 TransferableResourceArray resource_list) { 91 TransferableResourceArray resource_list) {
85 CompositorFrame compositor_frame; 92 CompositorFrame compositor_frame;
93 compositor_frame.metadata.begin_frame_ack = BeginFrameAck(0, 1, 1, 0, true);
86 compositor_frame.metadata.referenced_surfaces = 94 compositor_frame.metadata.referenced_surfaces =
87 std::move(referenced_surfaces); 95 std::move(referenced_surfaces);
88 compositor_frame.resource_list = std::move(resource_list); 96 compositor_frame.resource_list = std::move(resource_list);
89 return compositor_frame; 97 return compositor_frame;
90 } 98 }
91 99
92 TransferableResource MakeResource(ResourceId id, 100 TransferableResource MakeResource(ResourceId id,
93 ResourceFormat format, 101 ResourceFormat format,
94 uint32_t filter, 102 uint32_t filter,
95 const gfx::Size& size) { 103 const gfx::Size& size) {
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 const int64_t latency_id1 = 234; 770 const int64_t latency_id1 = 234;
763 const int64_t latency_sequence_number1 = 5645432; 771 const int64_t latency_sequence_number1 = 5645432;
764 const ui::LatencyComponentType latency_type2 = ui::TAB_SHOW_COMPONENT; 772 const ui::LatencyComponentType latency_type2 = ui::TAB_SHOW_COMPONENT;
765 const int64_t latency_id2 = 31434351; 773 const int64_t latency_id2 = 31434351;
766 const int64_t latency_sequence_number2 = 663788; 774 const int64_t latency_sequence_number2 = 663788;
767 775
768 // Submit a frame with latency info 776 // Submit a frame with latency info
769 ui::LatencyInfo info; 777 ui::LatencyInfo info;
770 info.AddLatencyNumber(latency_type1, latency_id1, latency_sequence_number1); 778 info.AddLatencyNumber(latency_type1, latency_id1, latency_sequence_number1);
771 779
772 CompositorFrame frame; 780 CompositorFrame frame = MakeCompositorFrame();
773 frame.metadata.latency_info.push_back(info); 781 frame.metadata.latency_info.push_back(info);
774 782
775 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(), 783 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(),
776 std::move(frame)); 784 std::move(frame));
777 785
778 // Verify that the old surface has an active frame and no pending frame. 786 // Verify that the old surface has an active frame and no pending frame.
779 Surface* old_surface = surface_manager().GetSurfaceForId(parent_id1); 787 Surface* old_surface = surface_manager().GetSurfaceForId(parent_id1);
780 ASSERT_NE(nullptr, old_surface); 788 ASSERT_NE(nullptr, old_surface);
781 EXPECT_TRUE(old_surface->HasActiveFrame()); 789 EXPECT_TRUE(old_surface->HasActiveFrame());
782 EXPECT_FALSE(old_surface->HasPendingFrame()); 790 EXPECT_FALSE(old_surface->HasPendingFrame());
783 791
784 // Submit another frame with some other latency info and a different 792 // Submit another frame with some other latency info and a different
785 // LocalSurfaceId. 793 // LocalSurfaceId.
786 ui::LatencyInfo info2; 794 ui::LatencyInfo info2;
787 info2.AddLatencyNumber(latency_type2, latency_id2, latency_sequence_number2); 795 info2.AddLatencyNumber(latency_type2, latency_id2, latency_sequence_number2);
788 796
789 CompositorFrame frame2; 797 CompositorFrame frame2 = MakeCompositorFrame();
790 frame2.metadata.latency_info.push_back(info2); 798 frame2.metadata.latency_info.push_back(info2);
791 799
792 parent_support().SubmitCompositorFrame(parent_id2.local_surface_id(), 800 parent_support().SubmitCompositorFrame(parent_id2.local_surface_id(),
793 std::move(frame2)); 801 std::move(frame2));
794 802
795 // Verify that the new surface has an active frame and no pending frames. 803 // Verify that the new surface has an active frame and no pending frames.
796 Surface* surface = surface_manager().GetSurfaceForId(parent_id2); 804 Surface* surface = surface_manager().GetSurfaceForId(parent_id2);
797 ASSERT_NE(nullptr, surface); 805 ASSERT_NE(nullptr, surface);
798 EXPECT_TRUE(surface->HasActiveFrame()); 806 EXPECT_TRUE(surface->HasActiveFrame());
799 EXPECT_FALSE(surface->HasPendingFrame()); 807 EXPECT_FALSE(surface->HasPendingFrame());
(...skipping 26 matching lines...) Expand all
826 const int64_t latency_id1 = 234; 834 const int64_t latency_id1 = 234;
827 const int64_t latency_sequence_number1 = 5645432; 835 const int64_t latency_sequence_number1 = 5645432;
828 const ui::LatencyComponentType latency_type2 = ui::TAB_SHOW_COMPONENT; 836 const ui::LatencyComponentType latency_type2 = ui::TAB_SHOW_COMPONENT;
829 const int64_t latency_id2 = 31434351; 837 const int64_t latency_id2 = 31434351;
830 const int64_t latency_sequence_number2 = 663788; 838 const int64_t latency_sequence_number2 = 663788;
831 839
832 // Submit a frame with no unresolved dependecy. 840 // Submit a frame with no unresolved dependecy.
833 ui::LatencyInfo info; 841 ui::LatencyInfo info;
834 info.AddLatencyNumber(latency_type1, latency_id1, latency_sequence_number1); 842 info.AddLatencyNumber(latency_type1, latency_id1, latency_sequence_number1);
835 843
836 CompositorFrame frame; 844 CompositorFrame frame = MakeCompositorFrame();
837 frame.metadata.latency_info.push_back(info); 845 frame.metadata.latency_info.push_back(info);
838 846
839 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(), 847 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(),
840 std::move(frame)); 848 std::move(frame));
841 849
842 // Submit a frame with unresolved dependencies. 850 // Submit a frame with unresolved dependencies.
843 ui::LatencyInfo info2; 851 ui::LatencyInfo info2;
844 info2.AddLatencyNumber(latency_type2, latency_id2, latency_sequence_number2); 852 info2.AddLatencyNumber(latency_type2, latency_id2, latency_sequence_number2);
845 853
846 CompositorFrame frame2 = MakeCompositorFrame({child_id}); 854 CompositorFrame frame2 = MakeCompositorFrame({child_id});
847 frame2.metadata.latency_info.push_back(info2); 855 frame2.metadata.latency_info.push_back(info2);
848 856
849 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(), 857 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(),
850 std::move(frame2)); 858 std::move(frame2));
851 859
852 // Verify that the old surface has both an active and a pending frame. 860 // Verify that the old surface has both an active and a pending frame.
853 Surface* old_surface = surface_manager().GetSurfaceForId(parent_id1); 861 Surface* old_surface = surface_manager().GetSurfaceForId(parent_id1);
854 ASSERT_NE(nullptr, old_surface); 862 ASSERT_NE(nullptr, old_surface);
855 EXPECT_TRUE(old_surface->HasActiveFrame()); 863 EXPECT_TRUE(old_surface->HasActiveFrame());
856 EXPECT_TRUE(old_surface->HasPendingFrame()); 864 EXPECT_TRUE(old_surface->HasPendingFrame());
857 865
858 // Submit a frame with a new local surface id. 866 // Submit a frame with a new local surface id.
859 parent_support().SubmitCompositorFrame(parent_id2.local_surface_id(), 867 parent_support().SubmitCompositorFrame(parent_id2.local_surface_id(),
860 CompositorFrame()); 868 MakeCompositorFrame());
861 869
862 // Verify that the new surface has an active frame only. 870 // Verify that the new surface has an active frame only.
863 Surface* surface = surface_manager().GetSurfaceForId(parent_id2); 871 Surface* surface = surface_manager().GetSurfaceForId(parent_id2);
864 ASSERT_NE(nullptr, surface); 872 ASSERT_NE(nullptr, surface);
865 EXPECT_TRUE(surface->HasActiveFrame()); 873 EXPECT_TRUE(surface->HasActiveFrame());
866 EXPECT_FALSE(surface->HasPendingFrame()); 874 EXPECT_FALSE(surface->HasPendingFrame());
867 875
868 // Verify that the new surface has latency info from both active and pending 876 // Verify that the new surface has latency info from both active and pending
869 // frame of the old surface. 877 // frame of the old surface.
870 std::vector<ui::LatencyInfo> info_list; 878 std::vector<ui::LatencyInfo> info_list;
(...skipping 23 matching lines...) Expand all
894 const int64_t latency_id1 = 234; 902 const int64_t latency_id1 = 234;
895 const int64_t latency_sequence_number1 = 5645432; 903 const int64_t latency_sequence_number1 = 5645432;
896 const ui::LatencyComponentType latency_type2 = ui::TAB_SHOW_COMPONENT; 904 const ui::LatencyComponentType latency_type2 = ui::TAB_SHOW_COMPONENT;
897 const int64_t latency_id2 = 31434351; 905 const int64_t latency_id2 = 31434351;
898 const int64_t latency_sequence_number2 = 663788; 906 const int64_t latency_sequence_number2 = 663788;
899 907
900 // Submit a frame with no unresolved dependencies. 908 // Submit a frame with no unresolved dependencies.
901 ui::LatencyInfo info; 909 ui::LatencyInfo info;
902 info.AddLatencyNumber(latency_type1, latency_id1, latency_sequence_number1); 910 info.AddLatencyNumber(latency_type1, latency_id1, latency_sequence_number1);
903 911
904 CompositorFrame frame; 912 CompositorFrame frame = MakeCompositorFrame();
905 frame.metadata.latency_info.push_back(info); 913 frame.metadata.latency_info.push_back(info);
906 914
907 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(), 915 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(),
908 std::move(frame)); 916 std::move(frame));
909 917
910 // Verify that the old surface has an active frame only. 918 // Verify that the old surface has an active frame only.
911 Surface* old_surface = surface_manager().GetSurfaceForId(parent_id1); 919 Surface* old_surface = surface_manager().GetSurfaceForId(parent_id1);
912 ASSERT_NE(nullptr, old_surface); 920 ASSERT_NE(nullptr, old_surface);
913 EXPECT_TRUE(old_surface->HasActiveFrame()); 921 EXPECT_TRUE(old_surface->HasActiveFrame());
914 EXPECT_FALSE(old_surface->HasPendingFrame()); 922 EXPECT_FALSE(old_surface->HasPendingFrame());
(...skipping 10 matching lines...) Expand all
925 std::move(frame2)); 933 std::move(frame2));
926 934
927 // Verify that the new surface has a pending frame and no active frame. 935 // Verify that the new surface has a pending frame and no active frame.
928 Surface* surface = surface_manager().GetSurfaceForId(parent_id2); 936 Surface* surface = surface_manager().GetSurfaceForId(parent_id2);
929 ASSERT_NE(nullptr, surface); 937 ASSERT_NE(nullptr, surface);
930 EXPECT_TRUE(surface->HasPendingFrame()); 938 EXPECT_TRUE(surface->HasPendingFrame());
931 EXPECT_FALSE(surface->HasActiveFrame()); 939 EXPECT_FALSE(surface->HasActiveFrame());
932 940
933 // Resolve the dependencies. The frame in parent's surface must become active. 941 // Resolve the dependencies. The frame in parent's surface must become active.
934 child_support1().SubmitCompositorFrame(child_id.local_surface_id(), 942 child_support1().SubmitCompositorFrame(child_id.local_surface_id(),
935 CompositorFrame()); 943 MakeCompositorFrame());
936 EXPECT_FALSE(surface->HasPendingFrame()); 944 EXPECT_FALSE(surface->HasPendingFrame());
937 EXPECT_TRUE(surface->HasActiveFrame()); 945 EXPECT_TRUE(surface->HasActiveFrame());
938 946
939 // Both latency info elements must exist in the now-activated frame of the 947 // Both latency info elements must exist in the now-activated frame of the
940 // new surface. 948 // new surface.
941 std::vector<ui::LatencyInfo> info_list; 949 std::vector<ui::LatencyInfo> info_list;
942 surface->TakeLatencyInfo(&info_list); 950 surface->TakeLatencyInfo(&info_list);
943 EXPECT_EQ(2u, info_list.size()); 951 EXPECT_EQ(2u, info_list.size());
944 952
945 ui::LatencyInfo aggregated_latency_info = info_list[0]; 953 ui::LatencyInfo aggregated_latency_info = info_list[0];
946 aggregated_latency_info.AddNewLatencyFrom(info_list[1]); 954 aggregated_latency_info.AddNewLatencyFrom(info_list[1]);
947 EXPECT_EQ(2u, aggregated_latency_info.latency_components().size()); 955 EXPECT_EQ(2u, aggregated_latency_info.latency_components().size());
948 956
949 ui::LatencyInfo::LatencyComponent comp1; 957 ui::LatencyInfo::LatencyComponent comp1;
950 EXPECT_TRUE( 958 EXPECT_TRUE(
951 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1)); 959 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1));
952 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number); 960 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number);
953 } 961 }
954 962
955 TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) { 963 TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) {
956 // Request BeginFrames. 964 // Request BeginFrames.
957 display_support().SetNeedsBeginFrame(true); 965 display_support().SetNeedsBeginFrame(true);
958 966
959 // Issue a BeginFrame. 967 // Issue a BeginFrame.
960 BeginFrameArgs args = 968 BeginFrameArgs args =
961 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1); 969 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1);
962 begin_frame_source()->TestOnBeginFrame(args); 970 begin_frame_source()->TestOnBeginFrame(args);
963 971
964 // Check that the support forwards our ack to the BeginFrameSource. 972 // Check that the support forwards a BeginFrameDidNotSwap ack to the
973 // BeginFrameSource.
965 BeginFrameAck ack(0, 1, 1, 0, false); 974 BeginFrameAck ack(0, 1, 1, 0, false);
966 display_support().DidFinishFrame(ack); 975 display_support().BeginFrameDidNotSwap(ack);
967 EXPECT_EQ(ack, begin_frame_source()->LastAckForObserver(&display_support())); 976 EXPECT_EQ(ack, begin_frame_source()->LastAckForObserver(&display_support()));
977
978 // TODO(eseckler): Check that the support forwards the BeginFrameAck attached
979 // to a CompositorFrame to the BeginFrameSource.
968 } 980 }
969 981
970 // Checks whether the resources are returned before we send an ack. 982 // Checks whether the resources are returned before we send an ack.
971 TEST_F(CompositorFrameSinkSupportTest, ReturnResourcesBeforeAck) { 983 TEST_F(CompositorFrameSinkSupportTest, ReturnResourcesBeforeAck) {
972 const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1); 984 const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
973 TransferableResource resource; 985 TransferableResource resource;
974 resource.id = 1234; 986 resource.id = 1234;
975 parent_support().SubmitCompositorFrame( 987 parent_support().SubmitCompositorFrame(
976 parent_id.local_surface_id(), 988 parent_id.local_surface_id(),
977 MakeCompositorFrameWithResources(empty_surface_ids(), {resource})); 989 MakeCompositorFrameWithResources(empty_surface_ids(), {resource}));
978 { 990 {
979 InSequence x; 991 InSequence x;
980 EXPECT_CALL(support_client_, ReclaimResources(_)); 992 EXPECT_CALL(support_client_, ReclaimResources(_));
981 EXPECT_CALL(support_client_, DidReceiveCompositorFrameAck()); 993 EXPECT_CALL(support_client_, DidReceiveCompositorFrameAck());
982 } 994 }
983 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(), 995 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
984 CompositorFrame()); 996 MakeCompositorFrame());
985 } 997 }
986 998
987 // Verifies that if a surface is marked destroyed and a new frame arrives for 999 // Verifies that if a surface is marked destroyed and a new frame arrives for
988 // it, it will be recovered. 1000 // it, it will be recovered.
989 TEST_F(CompositorFrameSinkSupportTest, SurfaceResurrection) { 1001 TEST_F(CompositorFrameSinkSupportTest, SurfaceResurrection) {
990 const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1); 1002 const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
991 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 3); 1003 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 3);
992 1004
993 // Add a reference from the parent to the child. 1005 // Add a reference from the parent to the child.
994 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(), 1006 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
995 MakeCompositorFrame({child_id})); 1007 MakeCompositorFrame({child_id}));
996 1008
997 // Create the child surface by submitting a frame to it. 1009 // Create the child surface by submitting a frame to it.
998 EXPECT_EQ(nullptr, surface_manager().GetSurfaceForId(child_id)); 1010 EXPECT_EQ(nullptr, surface_manager().GetSurfaceForId(child_id));
999 child_support1().SubmitCompositorFrame(child_id.local_surface_id(), 1011 child_support1().SubmitCompositorFrame(child_id.local_surface_id(),
1000 CompositorFrame()); 1012 MakeCompositorFrame());
1001 1013
1002 // Verify that the child surface is created. 1014 // Verify that the child surface is created.
1003 Surface* surface = surface_manager().GetSurfaceForId(child_id); 1015 Surface* surface = surface_manager().GetSurfaceForId(child_id);
1004 EXPECT_NE(nullptr, surface); 1016 EXPECT_NE(nullptr, surface);
1005 1017
1006 // Attempt to destroy the child surface. The surface must still exist since 1018 // Attempt to destroy the child surface. The surface must still exist since
1007 // the parent needs it but it will be marked as destroyed. 1019 // the parent needs it but it will be marked as destroyed.
1008 child_support1().EvictFrame(); 1020 child_support1().EvictFrame();
1009 surface = surface_manager().GetSurfaceForId(child_id); 1021 surface = surface_manager().GetSurfaceForId(child_id);
1010 EXPECT_NE(nullptr, surface); 1022 EXPECT_NE(nullptr, surface);
1011 EXPECT_TRUE(surface->destroyed()); 1023 EXPECT_TRUE(surface->destroyed());
1012 1024
1013 // Child submits another frame to the same local surface id that is marked 1025 // Child submits another frame to the same local surface id that is marked
1014 // destroyed. 1026 // destroyed.
1015 child_support1().SubmitCompositorFrame(child_id.local_surface_id(), 1027 child_support1().SubmitCompositorFrame(child_id.local_surface_id(),
1016 CompositorFrame()); 1028 MakeCompositorFrame());
1017 1029
1018 // Verify that the surface that was marked destroyed is recovered and is being 1030 // Verify that the surface that was marked destroyed is recovered and is being
1019 // used again. 1031 // used again.
1020 Surface* surface2 = surface_manager().GetSurfaceForId(child_id); 1032 Surface* surface2 = surface_manager().GetSurfaceForId(child_id);
1021 EXPECT_EQ(surface, surface2); 1033 EXPECT_EQ(surface, surface2);
1022 EXPECT_FALSE(surface2->destroyed()); 1034 EXPECT_FALSE(surface2->destroyed());
1023 } 1035 }
1024 1036
1025 // Verifies that if a LocalSurfaceId belonged to a surface that doesn't exist 1037 // Verifies that if a LocalSurfaceId belonged to a surface that doesn't exist
1026 // anymore, it can still be reused for new surfaces. 1038 // anymore, it can still be reused for new surfaces.
1027 TEST_F(CompositorFrameSinkSupportTest, LocalSurfaceIdIsReusable) { 1039 TEST_F(CompositorFrameSinkSupportTest, LocalSurfaceIdIsReusable) {
1028 const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1); 1040 const SurfaceId parent_id = MakeSurfaceId(kParentFrameSink, 1);
1029 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 3); 1041 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 3);
1030 1042
1031 // Add a reference from parent. 1043 // Add a reference from parent.
1032 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(), 1044 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
1033 MakeCompositorFrame({child_id})); 1045 MakeCompositorFrame({child_id}));
1034 1046
1035 // Submit the first frame. Creates the surface. 1047 // Submit the first frame. Creates the surface.
1036 child_support1().SubmitCompositorFrame(child_id.local_surface_id(), 1048 child_support1().SubmitCompositorFrame(child_id.local_surface_id(),
1037 CompositorFrame()); 1049 MakeCompositorFrame());
1038 EXPECT_NE(nullptr, surface_manager().GetSurfaceForId(child_id)); 1050 EXPECT_NE(nullptr, surface_manager().GetSurfaceForId(child_id));
1039 1051
1040 // Remove the reference from parant. This allows us to destroy the surface. 1052 // Remove the reference from parant. This allows us to destroy the surface.
1041 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(), 1053 parent_support().SubmitCompositorFrame(parent_id.local_surface_id(),
1042 CompositorFrame()); 1054 MakeCompositorFrame());
1043 1055
1044 // Destroy the surface. 1056 // Destroy the surface.
1045 child_support1().EvictFrame(); 1057 child_support1().EvictFrame();
1046 EXPECT_EQ(nullptr, surface_manager().GetSurfaceForId(child_id)); 1058 EXPECT_EQ(nullptr, surface_manager().GetSurfaceForId(child_id));
1047 1059
1048 // Submit another frame with the same local surface id. This should work fine 1060 // Submit another frame with the same local surface id. This should work fine
1049 // and a new surface must be created. 1061 // and a new surface must be created.
1050 child_support1().SubmitCompositorFrame(child_id.local_surface_id(), 1062 child_support1().SubmitCompositorFrame(child_id.local_surface_id(),
1051 CompositorFrame()); 1063 MakeCompositorFrame());
1052 EXPECT_NE(nullptr, surface_manager().GetSurfaceForId(child_id)); 1064 EXPECT_NE(nullptr, surface_manager().GetSurfaceForId(child_id));
1053 } 1065 }
1054 1066
1055 } // namespace test 1067 } // namespace test
1056 } // namespace cc 1068 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698