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