Index: ui/events/mojo/latency_info_struct_traits.h |
diff --git a/ui/events/mojo/latency_info_struct_traits.h b/ui/events/mojo/latency_info_struct_traits.h |
index 6d9d990c6f2c8f5f2a49bd37197aaf204dfb4563..3573cf8fd9b09d29bfaed8861f145a6c71ee062e 100644 |
--- a/ui/events/mojo/latency_info_struct_traits.h |
+++ b/ui/events/mojo/latency_info_struct_traits.h |
@@ -14,6 +14,30 @@ namespace mojo { |
using InputCoordinateArray = CArray<gfx::PointF>; |
template <> |
+struct ArrayTraits<ui::LatencyInfo::LatencyMap> { |
+ using Element = ui::LatencyInfo::LatencyMap::value_type; |
+ using Iterator = ui::LatencyInfo::LatencyMap::iterator; |
+ using ConstIterator = ui::LatencyInfo::LatencyMap::const_iterator; |
+ |
+ static ConstIterator GetBegin(const ui::LatencyInfo::LatencyMap& input) { |
+ return input.begin(); |
+ } |
+ static Iterator GetBegin(ui::LatencyInfo::LatencyMap& input) { |
+ return input.begin(); |
+ } |
+ |
+ static void AdvanceIterator(ConstIterator& iterator) { iterator++; } |
+ static void AdvanceIterator(Iterator& iterator) { iterator++; } |
+ |
+ static const Element& GetValue(ConstIterator& iterator) { return *iterator; } |
+ static Element& GetValue(Iterator& iterator) { return *iterator; } |
+ |
+ static size_t GetSize(const ui::LatencyInfo::LatencyMap& input) { |
+ return input.size(); |
+ } |
+}; |
+ |
+template <> |
struct StructTraits<ui::mojom::LatencyComponent, |
ui::LatencyInfo::LatencyComponent> { |
static int64_t sequence_number( |
@@ -27,6 +51,22 @@ struct StructTraits<ui::mojom::LatencyComponent, |
}; |
template <> |
+struct StructTraits<ui::mojom::LatencyComponentPair, |
+ ui::LatencyInfo::LatencyMap::value_type> { |
+ static const std::pair<ui::LatencyComponentType, int64_t>& key( |
+ const ui::LatencyInfo::LatencyMap::value_type& input) { |
+ return input.first; |
+ } |
+ |
+ static const ui::LatencyInfo::LatencyComponent& value( |
+ const ui::LatencyInfo::LatencyMap::value_type& input) { |
+ return input.second; |
+ } |
+ |
+ // TODO(fsamuel): Figure out how to optimize deserialization. |
+}; |
+ |
+template <> |
struct StructTraits<ui::mojom::LatencyComponentId, |
std::pair<ui::LatencyComponentType, int64_t>> { |
static ui::mojom::LatencyComponentType type( |
@@ -38,12 +78,9 @@ struct StructTraits<ui::mojom::LatencyComponentId, |
template <> |
struct StructTraits<ui::mojom::LatencyInfo, ui::LatencyInfo> { |
- static void* SetUpContext(const ui::LatencyInfo& info); |
- static void TearDownContext(const ui::LatencyInfo& info, void* context); |
static const std::string& trace_name(const ui::LatencyInfo& info); |
- static mojo::Array<ui::mojom::LatencyComponentPairPtr>& latency_components( |
- const ui::LatencyInfo& info, |
- void* context); |
+ static const ui::LatencyInfo::LatencyMap& latency_components( |
+ const ui::LatencyInfo& info); |
static uint32_t input_coordinates_size(const ui::LatencyInfo& info); |
static InputCoordinateArray input_coordinates(const ui::LatencyInfo& info); |
static int64_t trace_id(const ui::LatencyInfo& info); |