OLD | NEW |
| (Empty) |
1 // Copyright 2016 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 #ifndef UI_EVENTS_MOJO_LATENCY_INFO_STRUCT_TRAITS_H_ | |
6 #define UI_EVENTS_MOJO_LATENCY_INFO_STRUCT_TRAITS_H_ | |
7 | |
8 #include "ui/events/latency_info.h" | |
9 #include "ui/events/mojo/latency_info.mojom-shared.h" | |
10 #include "ui/gfx/geometry/mojo/geometry_struct_traits.h" | |
11 | |
12 namespace mojo { | |
13 | |
14 using InputCoordinateArray = CArray<gfx::PointF>; | |
15 | |
16 template <> | |
17 struct ArrayTraits<ui::LatencyInfo::LatencyMap> { | |
18 using Element = ui::LatencyInfo::LatencyMap::value_type; | |
19 using Iterator = ui::LatencyInfo::LatencyMap::iterator; | |
20 using ConstIterator = ui::LatencyInfo::LatencyMap::const_iterator; | |
21 | |
22 static ConstIterator GetBegin(const ui::LatencyInfo::LatencyMap& input) { | |
23 return input.begin(); | |
24 } | |
25 static Iterator GetBegin(ui::LatencyInfo::LatencyMap& input) { | |
26 return input.begin(); | |
27 } | |
28 | |
29 static void AdvanceIterator(ConstIterator& iterator) { iterator++; } | |
30 static void AdvanceIterator(Iterator& iterator) { iterator++; } | |
31 | |
32 static const Element& GetValue(ConstIterator& iterator) { return *iterator; } | |
33 static Element& GetValue(Iterator& iterator) { return *iterator; } | |
34 | |
35 static size_t GetSize(const ui::LatencyInfo::LatencyMap& input) { | |
36 return input.size(); | |
37 } | |
38 }; | |
39 | |
40 template <> | |
41 struct StructTraits<ui::mojom::LatencyComponentDataView, | |
42 ui::LatencyInfo::LatencyComponent> { | |
43 static int64_t sequence_number( | |
44 const ui::LatencyInfo::LatencyComponent& component); | |
45 static base::TimeTicks event_time( | |
46 const ui::LatencyInfo::LatencyComponent& component); | |
47 static uint32_t event_count( | |
48 const ui::LatencyInfo::LatencyComponent& component); | |
49 static base::TimeTicks first_event_time( | |
50 const ui::LatencyInfo::LatencyComponent& component); | |
51 static base::TimeTicks last_event_time( | |
52 const ui::LatencyInfo::LatencyComponent& component); | |
53 static bool Read(ui::mojom::LatencyComponentDataView data, | |
54 ui::LatencyInfo::LatencyComponent* out); | |
55 }; | |
56 | |
57 template <> | |
58 struct StructTraits<ui::mojom::LatencyComponentPairDataView, | |
59 ui::LatencyInfo::LatencyMap::value_type> { | |
60 static const std::pair<ui::LatencyComponentType, int64_t>& key( | |
61 const ui::LatencyInfo::LatencyMap::value_type& input) { | |
62 return input.first; | |
63 } | |
64 | |
65 static const ui::LatencyInfo::LatencyComponent& value( | |
66 const ui::LatencyInfo::LatencyMap::value_type& input) { | |
67 return input.second; | |
68 } | |
69 | |
70 // TODO(fsamuel): Figure out how to optimize deserialization. | |
71 }; | |
72 | |
73 template <> | |
74 struct StructTraits<ui::mojom::LatencyComponentIdDataView, | |
75 std::pair<ui::LatencyComponentType, int64_t>> { | |
76 static ui::mojom::LatencyComponentType type( | |
77 const std::pair<ui::LatencyComponentType, int64_t>& id); | |
78 static int64_t id(const std::pair<ui::LatencyComponentType, int64_t>& id); | |
79 static bool Read(ui::mojom::LatencyComponentIdDataView data, | |
80 std::pair<ui::LatencyComponentType, int64_t>* out); | |
81 }; | |
82 | |
83 template <> | |
84 struct StructTraits<ui::mojom::LatencyInfoDataView, ui::LatencyInfo> { | |
85 static const std::string& trace_name(const ui::LatencyInfo& info); | |
86 static const ui::LatencyInfo::LatencyMap& latency_components( | |
87 const ui::LatencyInfo& info); | |
88 static uint32_t input_coordinates_size(const ui::LatencyInfo& info); | |
89 static InputCoordinateArray input_coordinates(const ui::LatencyInfo& info); | |
90 static int64_t trace_id(const ui::LatencyInfo& info); | |
91 static bool coalesced(const ui::LatencyInfo& info); | |
92 static bool terminated(const ui::LatencyInfo& info); | |
93 static bool Read(ui::mojom::LatencyInfoDataView data, ui::LatencyInfo* out); | |
94 }; | |
95 | |
96 } // namespace mojo | |
97 | |
98 #endif // UI_EVENTS_MOJO_LATENCY_INFO_STRUCT_TRAITS_H_ | |
OLD | NEW |