Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: ui/events/mojo/latency_info_struct_traits.h

Issue 2058633002: mojo::ArrayTraits: Add Support for Iterators (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698