• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ui/events/latency_info.h"
6 
7 #include "testing/gtest/include/gtest/gtest.h"
8 
9 namespace ui {
10 
TEST(LatencyInfoTest,AddTwoSeparateEvent)11 TEST(LatencyInfoTest, AddTwoSeparateEvent) {
12   LatencyInfo info;
13   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
14                                      0,
15                                      1,
16                                      base::TimeTicks::FromInternalValue(100),
17                                      1,
18                                      true);
19   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
20                                      1,
21                                      5,
22                                      base::TimeTicks::FromInternalValue(1000),
23                                      2,
24                                      true);
25 
26   EXPECT_EQ(info.latency_components.size(), 2u);
27   LatencyInfo::LatencyComponent component;
28   EXPECT_FALSE(
29       info.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component));
30   EXPECT_FALSE(
31       info.FindLatency(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 1, &component));
32   EXPECT_TRUE(
33       info.FindLatency(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, &component));
34   EXPECT_EQ(component.sequence_number, 1);
35   EXPECT_EQ(component.event_count, 1u);
36   EXPECT_EQ(component.event_time.ToInternalValue(), 100);
37   EXPECT_TRUE(
38       info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component));
39   EXPECT_EQ(component.sequence_number, 5);
40   EXPECT_EQ(component.event_count, 2u);
41   EXPECT_EQ(component.event_time.ToInternalValue(), 1000);
42 }
43 
TEST(LatencyInfoTest,AddTwoSameEvent)44 TEST(LatencyInfoTest, AddTwoSameEvent) {
45   LatencyInfo info;
46   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
47                                      0,
48                                      30,
49                                      base::TimeTicks::FromInternalValue(100),
50                                      2,
51                                      true);
52   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
53                                      0,
54                                      13,
55                                      base::TimeTicks::FromInternalValue(200),
56                                      3,
57                                      true);
58 
59   EXPECT_EQ(info.latency_components.size(), 1u);
60   LatencyInfo::LatencyComponent component;
61   EXPECT_FALSE(
62       info.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component));
63   EXPECT_FALSE(
64       info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component));
65   EXPECT_TRUE(
66       info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, &component));
67   EXPECT_EQ(component.sequence_number, 30);
68   EXPECT_EQ(component.event_count, 5u);
69   EXPECT_EQ(component.event_time.ToInternalValue(), (100 * 2 + 200 * 3) / 5);
70 }
71 
TEST(LatencyInfoTest,MergeTwoSeparateEvent)72 TEST(LatencyInfoTest, MergeTwoSeparateEvent) {
73   LatencyInfo info1;
74   LatencyInfo info2;
75   info1.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
76                                       0,
77                                       1,
78                                       base::TimeTicks::FromInternalValue(100),
79                                       1,
80                                       true);
81   info2.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
82                                       1,
83                                       5,
84                                       base::TimeTicks::FromInternalValue(1000),
85                                       2,
86                                       true);
87   info1.MergeWith(info2);
88 
89   EXPECT_EQ(info1.latency_components.size(), 2u);
90   LatencyInfo::LatencyComponent component;
91   EXPECT_FALSE(
92       info1.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component));
93   EXPECT_FALSE(info1.FindLatency(
94       INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 1, &component));
95   EXPECT_TRUE(info1.FindLatency(
96       INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, &component));
97   EXPECT_EQ(component.sequence_number, 1);
98   EXPECT_EQ(component.event_count, 1u);
99   EXPECT_EQ(component.event_time.ToInternalValue(), 100);
100   EXPECT_TRUE(
101       info1.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component));
102   EXPECT_EQ(component.sequence_number, 5);
103   EXPECT_EQ(component.event_count, 2u);
104   EXPECT_EQ(component.event_time.ToInternalValue(), 1000);
105 }
106 
TEST(LatencyInfoTest,MergeTwoSameEvent)107 TEST(LatencyInfoTest, MergeTwoSameEvent) {
108   LatencyInfo info1;
109   LatencyInfo info2;
110   info1.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
111                                       0,
112                                       30,
113                                       base::TimeTicks::FromInternalValue(100),
114                                       2,
115                                       true);
116   info2.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
117                                       0,
118                                       13,
119                                       base::TimeTicks::FromInternalValue(200),
120                                       3,
121                                       true);
122   info1.MergeWith(info2);
123 
124   EXPECT_EQ(info1.latency_components.size(), 1u);
125   LatencyInfo::LatencyComponent component;
126   EXPECT_FALSE(
127       info1.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component));
128   EXPECT_FALSE(
129       info1.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component));
130   EXPECT_TRUE(
131       info1.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, &component));
132   EXPECT_EQ(component.sequence_number, 30);
133   EXPECT_EQ(component.event_count, 5u);
134   EXPECT_EQ(component.event_time.ToInternalValue(), (100 * 2 + 200 * 3) / 5);
135 }
136 
TEST(LatencyInfoTest,ClearEvents)137 TEST(LatencyInfoTest, ClearEvents) {
138   LatencyInfo info;
139   info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
140                                      0,
141                                      30,
142                                      base::TimeTicks::FromInternalValue(100),
143                                      2,
144                                      true);
145 
146   EXPECT_EQ(info.latency_components.size(), 1u);
147   info.Clear();
148   EXPECT_EQ(info.latency_components.size(), 0u);
149 }
150 
151 }  // namespace ui
152