OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 #ifndef UI_LATENCY_LATENCY_INFO_H_ | 5 #ifndef UI_LATENCY_LATENCY_INFO_H_ |
6 #define UI_LATENCY_LATENCY_INFO_H_ | 6 #define UI_LATENCY_LATENCY_INFO_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 #include <string> | 11 #include <string> |
12 #include <utility> | 12 #include <utility> |
13 #include <vector> | 13 #include <vector> |
14 | 14 |
15 #include "base/containers/small_map.h" | 15 #include "base/containers/flat_map.h" |
16 #include "base/time/time.h" | 16 #include "base/time/time.h" |
17 #include "ui/gfx/geometry/point_f.h" | 17 #include "ui/gfx/geometry/point_f.h" |
18 | 18 |
19 #if !defined(OS_IOS) | 19 #if !defined(OS_IOS) |
20 #include "ipc/ipc_param_traits.h" // nogncheck | 20 #include "ipc/ipc_param_traits.h" // nogncheck |
21 #include "mojo/public/cpp/bindings/struct_traits.h" // nogncheck | 21 #include "mojo/public/cpp/bindings/struct_traits.h" // nogncheck |
22 #endif | 22 #endif |
23 | 23 |
24 namespace base { | 24 namespace base { |
25 namespace trace_event { | 25 namespace trace_event { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 // Average time of events that happened in this component. | 123 // Average time of events that happened in this component. |
124 base::TimeTicks event_time; | 124 base::TimeTicks event_time; |
125 // Count of events that happened in this component | 125 // Count of events that happened in this component |
126 uint32_t event_count; | 126 uint32_t event_count; |
127 // Time of the oldest event that happened in this component. | 127 // Time of the oldest event that happened in this component. |
128 base::TimeTicks first_event_time; | 128 base::TimeTicks first_event_time; |
129 // Time of the most recent event that happened in this component. | 129 // Time of the most recent event that happened in this component. |
130 base::TimeTicks last_event_time; | 130 base::TimeTicks last_event_time; |
131 }; | 131 }; |
132 | 132 |
133 // Empirically determined constant based on a typical scroll sequence. | |
134 enum { kTypicalMaxComponentsPerLatencyInfo = 10 }; | |
135 | |
136 enum : size_t { kMaxInputCoordinates = 2 }; | 133 enum : size_t { kMaxInputCoordinates = 2 }; |
137 | 134 |
138 // Map a Latency Component (with a component-specific int64_t id) to a | 135 // Map a Latency Component (with a component-specific int64_t id) to a |
139 // component info. | 136 // component info. |
140 typedef base::SmallMap< | 137 using LatencyMap = base::flat_map<std::pair<LatencyComponentType, int64_t>, |
141 std::map<std::pair<LatencyComponentType, int64_t>, LatencyComponent>, | 138 LatencyComponent>; |
142 kTypicalMaxComponentsPerLatencyInfo> LatencyMap; | |
143 | 139 |
144 LatencyInfo(); | 140 LatencyInfo(); |
145 LatencyInfo(const LatencyInfo& other); | 141 LatencyInfo(const LatencyInfo& other); |
146 LatencyInfo(SourceEventType type); | 142 LatencyInfo(SourceEventType type); |
147 ~LatencyInfo(); | 143 ~LatencyInfo(); |
148 | 144 |
149 // For test only. | 145 // For test only. |
150 LatencyInfo(int64_t trace_id, bool terminated); | 146 LatencyInfo(int64_t trace_id, bool terminated); |
151 | 147 |
152 // Returns true if the vector |latency_info| is valid. Returns false | 148 // Returns true if the vector |latency_info| is valid. Returns false |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
265 | 261 |
266 // This is declared here for use in gtest-based unit tests, but is defined in | 262 // This is declared here for use in gtest-based unit tests, but is defined in |
267 // //ui/latency:test_support target. | 263 // //ui/latency:test_support target. |
268 // Without this the default PrintTo template in gtest tries to pass LatencyInfo | 264 // Without this the default PrintTo template in gtest tries to pass LatencyInfo |
269 // by value, which leads to an alignment compile error on Windows. | 265 // by value, which leads to an alignment compile error on Windows. |
270 void PrintTo(const LatencyInfo& latency, ::std::ostream* os); | 266 void PrintTo(const LatencyInfo& latency, ::std::ostream* os); |
271 | 267 |
272 } // namespace ui | 268 } // namespace ui |
273 | 269 |
274 #endif // UI_LATENCY_LATENCY_INFO_H_ | 270 #endif // UI_LATENCY_LATENCY_INFO_H_ |
OLD | NEW |