Chromium Code Reviews| 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..e093466f033e3188a22f01ca2791fdc6036385c4 100644 |
| --- a/ui/events/mojo/latency_info_struct_traits.h |
| +++ b/ui/events/mojo/latency_info_struct_traits.h |
| @@ -14,6 +14,33 @@ 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 Element& GetValue(Iterator& iterator) { return *iterator; } |
| + static const Element& GetValue(ConstIterator& iterator) { return *iterator; } |
| + |
| + static size_t GetSize(const ui::LatencyInfo::LatencyMap& input) { |
| + return input.size(); |
| + } |
| + static bool Resize(ui::LatencyInfo::LatencyMap& input, size_t size) { |
| + return true; |
|
yzshen1
2016/06/10 16:21:32
Why this can be true without any action?
Fady Samuel
2016/06/10 19:05:33
LatencyMap doesn't have a fixed size that has to b
|
| + } |
| +}; |
| + |
| +template <> |
| struct StructTraits<ui::mojom::LatencyComponent, |
| ui::LatencyInfo::LatencyComponent> { |
| static int64_t sequence_number( |
| @@ -27,6 +54,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 +81,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); |