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

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

Issue 2806163004: Plumbing input event latency reporting through Mus GPU. (Closed)
Patch Set: Inline LatencyTracker in DIsplayOutputService. Created 3 years, 8 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 | « no previous file | cc/surfaces/surface_factory.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 780 matching lines...) Expand 10 before | Expand all | Expand 10 after
791 EXPECT_TRUE(surface->HasActiveFrame()); 791 EXPECT_TRUE(surface->HasActiveFrame());
792 EXPECT_FALSE(surface->HasPendingFrame()); 792 EXPECT_FALSE(surface->HasPendingFrame());
793 793
794 // Verify that the new surface has both latency info elements. 794 // Verify that the new surface has both latency info elements.
795 std::vector<ui::LatencyInfo> info_list; 795 std::vector<ui::LatencyInfo> info_list;
796 surface->TakeLatencyInfo(&info_list); 796 surface->TakeLatencyInfo(&info_list);
797 EXPECT_EQ(2u, info_list.size()); 797 EXPECT_EQ(2u, info_list.size());
798 798
799 ui::LatencyInfo aggregated_latency_info = info_list[0]; 799 ui::LatencyInfo aggregated_latency_info = info_list[0];
800 aggregated_latency_info.AddNewLatencyFrom(info_list[1]); 800 aggregated_latency_info.AddNewLatencyFrom(info_list[1]);
801 EXPECT_EQ(2u, aggregated_latency_info.latency_components().size()); 801
802 // Two components are the original ones, and the third one is
803 // DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, logged on compositor frame
804 // submit.
805 EXPECT_EQ(3u, aggregated_latency_info.latency_components().size());
802 806
803 ui::LatencyInfo::LatencyComponent comp1; 807 ui::LatencyInfo::LatencyComponent comp1;
804 EXPECT_TRUE( 808 EXPECT_TRUE(
805 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1)); 809 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1));
806 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number); 810 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number);
811 EXPECT_TRUE(
812 aggregated_latency_info.FindLatency(latency_type2, latency_id2, nullptr));
813 EXPECT_TRUE(aggregated_latency_info.FindLatency(
814 ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, nullptr));
807 } 815 }
808 816
809 // Checks whether the latency info are moved to the new surface from the old 817 // Checks whether the latency info are moved to the new surface from the old
810 // one when LocalSurfaceId changes. Old surface has unresolved dependencies. 818 // one when LocalSurfaceId changes. Old surface has unresolved dependencies.
811 TEST_F(CompositorFrameSinkSupportTest, 819 TEST_F(CompositorFrameSinkSupportTest,
812 LatencyInfoCarriedOverOnResize_OldSurfaceHasPendingAndActiveFrame) { 820 LatencyInfoCarriedOverOnResize_OldSurfaceHasPendingAndActiveFrame) {
813 const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1); 821 const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
814 const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2); 822 const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
815 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 1); 823 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 1);
816 824
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 EXPECT_FALSE(surface->HasPendingFrame()); 867 EXPECT_FALSE(surface->HasPendingFrame());
860 868
861 // Verify that the new surface has latency info from both active and pending 869 // Verify that the new surface has latency info from both active and pending
862 // frame of the old surface. 870 // frame of the old surface.
863 std::vector<ui::LatencyInfo> info_list; 871 std::vector<ui::LatencyInfo> info_list;
864 surface->TakeLatencyInfo(&info_list); 872 surface->TakeLatencyInfo(&info_list);
865 EXPECT_EQ(2u, info_list.size()); 873 EXPECT_EQ(2u, info_list.size());
866 874
867 ui::LatencyInfo aggregated_latency_info = info_list[0]; 875 ui::LatencyInfo aggregated_latency_info = info_list[0];
868 aggregated_latency_info.AddNewLatencyFrom(info_list[1]); 876 aggregated_latency_info.AddNewLatencyFrom(info_list[1]);
869 EXPECT_EQ(2u, aggregated_latency_info.latency_components().size()); 877
878 // Two components are the original ones, and the third one is
879 // DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, logged on compositor frame
880 // submit.
881 EXPECT_EQ(3u, aggregated_latency_info.latency_components().size());
870 882
871 ui::LatencyInfo::LatencyComponent comp1; 883 ui::LatencyInfo::LatencyComponent comp1;
872 EXPECT_TRUE( 884 EXPECT_TRUE(
873 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1)); 885 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1));
874 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number); 886 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number);
887 EXPECT_TRUE(
888 aggregated_latency_info.FindLatency(latency_type2, latency_id2, nullptr));
889 EXPECT_TRUE(aggregated_latency_info.FindLatency(
890 ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, nullptr));
875 } 891 }
876 892
877 // Checks whether the latency info are moved to the new surface from the old 893 // Checks whether the latency info are moved to the new surface from the old
878 // one when LocalSurfaceId changes. The new surface has unresolved dependencies. 894 // one when LocalSurfaceId changes. The new surface has unresolved dependencies.
879 TEST_F(CompositorFrameSinkSupportTest, 895 TEST_F(CompositorFrameSinkSupportTest,
880 LatencyInfoCarriedOverOnResize_NewSurfaceHasPendingFrame) { 896 LatencyInfoCarriedOverOnResize_NewSurfaceHasPendingFrame) {
881 const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1); 897 const SurfaceId parent_id1 = MakeSurfaceId(kParentFrameSink, 1);
882 const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2); 898 const SurfaceId parent_id2 = MakeSurfaceId(kParentFrameSink, 2);
883 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 1); 899 const SurfaceId child_id = MakeSurfaceId(kChildFrameSink1, 1);
884 900
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 EXPECT_TRUE(surface->HasActiveFrame()); 946 EXPECT_TRUE(surface->HasActiveFrame());
931 947
932 // Both latency info elements must exist in the now-activated frame of the 948 // Both latency info elements must exist in the now-activated frame of the
933 // new surface. 949 // new surface.
934 std::vector<ui::LatencyInfo> info_list; 950 std::vector<ui::LatencyInfo> info_list;
935 surface->TakeLatencyInfo(&info_list); 951 surface->TakeLatencyInfo(&info_list);
936 EXPECT_EQ(2u, info_list.size()); 952 EXPECT_EQ(2u, info_list.size());
937 953
938 ui::LatencyInfo aggregated_latency_info = info_list[0]; 954 ui::LatencyInfo aggregated_latency_info = info_list[0];
939 aggregated_latency_info.AddNewLatencyFrom(info_list[1]); 955 aggregated_latency_info.AddNewLatencyFrom(info_list[1]);
940 EXPECT_EQ(2u, aggregated_latency_info.latency_components().size()); 956
957 // Two components are the original ones, and the third one is
958 // DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, logged on compositor frame
959 // submit.
960 EXPECT_EQ(3u, aggregated_latency_info.latency_components().size());
941 961
942 ui::LatencyInfo::LatencyComponent comp1; 962 ui::LatencyInfo::LatencyComponent comp1;
943 EXPECT_TRUE( 963 EXPECT_TRUE(
944 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1)); 964 aggregated_latency_info.FindLatency(latency_type1, latency_id1, &comp1));
945 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number); 965 EXPECT_EQ(latency_sequence_number1, comp1.sequence_number);
966 EXPECT_TRUE(
967 aggregated_latency_info.FindLatency(latency_type2, latency_id2, nullptr));
968 EXPECT_TRUE(aggregated_latency_info.FindLatency(
969 ui::DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT, nullptr));
946 } 970 }
947 971
948 TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) { 972 TEST_F(CompositorFrameSinkSupportTest, PassesOnBeginFrameAcks) {
949 const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1); 973 const SurfaceId display_id = MakeSurfaceId(kDisplayFrameSink, 1);
950 974
951 // Request BeginFrames. 975 // Request BeginFrames.
952 display_support().SetNeedsBeginFrame(true); 976 display_support().SetNeedsBeginFrame(true);
953 977
954 // Issue a BeginFrame. 978 // Issue a BeginFrame.
955 BeginFrameArgs args = 979 BeginFrameArgs args =
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 // scheduling a deadline and without waiting for dependencies to resolve. 1270 // scheduling a deadline and without waiting for dependencies to resolve.
1247 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(), 1271 parent_support().SubmitCompositorFrame(parent_id1.local_surface_id(),
1248 MakeCompositorFrame({child_id1})); 1272 MakeCompositorFrame({child_id1}));
1249 EXPECT_FALSE(dependency_tracker().has_deadline()); 1273 EXPECT_FALSE(dependency_tracker().has_deadline());
1250 EXPECT_FALSE(parent_surface()->HasPendingFrame()); 1274 EXPECT_FALSE(parent_surface()->HasPendingFrame());
1251 EXPECT_TRUE(parent_surface()->HasActiveFrame()); 1275 EXPECT_TRUE(parent_surface()->HasActiveFrame());
1252 } 1276 }
1253 1277
1254 } // namespace test 1278 } // namespace test
1255 } // namespace cc 1279 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/surfaces/surface_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698