| 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 |