OLD | NEW |
| (Empty) |
1 // Copyright 2013 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 CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_ | |
6 #define CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_ | |
7 | |
8 #include "base/trace_event/trace_event.h" | |
9 #include "base/trace_event/trace_event_argument.h" | |
10 | |
11 namespace cc { | |
12 namespace devtools_instrumentation { | |
13 | |
14 namespace internal { | |
15 const char kCategory[] = TRACE_DISABLED_BY_DEFAULT("devtools.timeline"); | |
16 const char kCategoryFrame[] = | |
17 TRACE_DISABLED_BY_DEFAULT("devtools.timeline.frame"); | |
18 const char kData[] = "data"; | |
19 const char kFrameId[] = "frameId"; | |
20 const char kLayerId[] = "layerId"; | |
21 const char kLayerTreeId[] = "layerTreeId"; | |
22 const char kPixelRefId[] = "pixelRefId"; | |
23 | |
24 const char kImageDecodeTask[] = "ImageDecodeTask"; | |
25 const char kBeginFrame[] = "BeginFrame"; | |
26 const char kActivateLayerTree[] = "ActivateLayerTree"; | |
27 const char kRequestMainThreadFrame[] = "RequestMainThreadFrame"; | |
28 const char kBeginMainThreadFrame[] = "BeginMainThreadFrame"; | |
29 const char kDrawFrame[] = "DrawFrame"; | |
30 const char kCompositeLayers[] = "CompositeLayers"; | |
31 } // namespace internal | |
32 | |
33 const char kPaintSetup[] = "PaintSetup"; | |
34 const char kUpdateLayer[] = "UpdateLayer"; | |
35 | |
36 class ScopedLayerTask { | |
37 public: | |
38 ScopedLayerTask(const char* event_name, int layer_id) | |
39 : event_name_(event_name) { | |
40 TRACE_EVENT_BEGIN1(internal::kCategory, event_name_, | |
41 internal::kLayerId, layer_id); | |
42 } | |
43 ~ScopedLayerTask() { | |
44 TRACE_EVENT_END0(internal::kCategory, event_name_); | |
45 } | |
46 private: | |
47 const char* event_name_; | |
48 | |
49 DISALLOW_COPY_AND_ASSIGN(ScopedLayerTask); | |
50 }; | |
51 | |
52 class ScopedImageDecodeTask { | |
53 public: | |
54 explicit ScopedImageDecodeTask(void* pixelRef) { | |
55 TRACE_EVENT_BEGIN1(internal::kCategory, internal::kImageDecodeTask, | |
56 internal::kPixelRefId, reinterpret_cast<uint64>(pixelRef)); | |
57 } | |
58 ~ScopedImageDecodeTask() { | |
59 TRACE_EVENT_END0(internal::kCategory, internal::kImageDecodeTask); | |
60 } | |
61 private: | |
62 DISALLOW_COPY_AND_ASSIGN(ScopedImageDecodeTask); | |
63 }; | |
64 | |
65 class ScopedLayerTreeTask { | |
66 public: | |
67 ScopedLayerTreeTask(const char* event_name, | |
68 int layer_id, | |
69 int layer_tree_host_id) | |
70 : event_name_(event_name) { | |
71 TRACE_EVENT_BEGIN2(internal::kCategory, event_name_, | |
72 internal::kLayerId, layer_id, | |
73 internal::kLayerTreeId, layer_tree_host_id); | |
74 } | |
75 ~ScopedLayerTreeTask() { | |
76 TRACE_EVENT_END0(internal::kCategory, event_name_); | |
77 } | |
78 private: | |
79 const char* event_name_; | |
80 | |
81 DISALLOW_COPY_AND_ASSIGN(ScopedLayerTreeTask); | |
82 }; | |
83 | |
84 struct ScopedCommitTrace { | |
85 public: | |
86 explicit ScopedCommitTrace(int layer_tree_host_id) { | |
87 TRACE_EVENT_BEGIN1(internal::kCategory, internal::kCompositeLayers, | |
88 internal::kLayerTreeId, layer_tree_host_id); | |
89 } | |
90 ~ScopedCommitTrace() { | |
91 TRACE_EVENT_END0(internal::kCategory, internal::kCompositeLayers); | |
92 } | |
93 | |
94 private: | |
95 DISALLOW_COPY_AND_ASSIGN(ScopedCommitTrace); | |
96 }; | |
97 | |
98 struct ScopedLayerObjectTracker | |
99 : public base::trace_event::TraceScopedTrackableObject<int> { | |
100 explicit ScopedLayerObjectTracker(int layer_id) | |
101 : base::trace_event::TraceScopedTrackableObject<int>( | |
102 internal::kCategory, | |
103 internal::kLayerId, | |
104 layer_id) { | |
105 } | |
106 | |
107 private: | |
108 DISALLOW_COPY_AND_ASSIGN(ScopedLayerObjectTracker); | |
109 }; | |
110 | |
111 inline void DidActivateLayerTree(int layer_tree_host_id, int frame_id) { | |
112 TRACE_EVENT_INSTANT2(internal::kCategoryFrame, | |
113 internal::kActivateLayerTree, | |
114 TRACE_EVENT_SCOPE_THREAD, | |
115 internal::kLayerTreeId, | |
116 layer_tree_host_id, | |
117 internal::kFrameId, | |
118 frame_id); | |
119 } | |
120 | |
121 inline void DidBeginFrame(int layer_tree_host_id) { | |
122 TRACE_EVENT_INSTANT1(internal::kCategoryFrame, | |
123 internal::kBeginFrame, | |
124 TRACE_EVENT_SCOPE_THREAD, | |
125 internal::kLayerTreeId, | |
126 layer_tree_host_id); | |
127 } | |
128 | |
129 inline void DidDrawFrame(int layer_tree_host_id) { | |
130 TRACE_EVENT_INSTANT1(internal::kCategoryFrame, | |
131 internal::kDrawFrame, | |
132 TRACE_EVENT_SCOPE_THREAD, | |
133 internal::kLayerTreeId, | |
134 layer_tree_host_id); | |
135 } | |
136 | |
137 inline void DidRequestMainThreadFrame(int layer_tree_host_id) { | |
138 TRACE_EVENT_INSTANT1(internal::kCategoryFrame, | |
139 internal::kRequestMainThreadFrame, | |
140 TRACE_EVENT_SCOPE_THREAD, | |
141 internal::kLayerTreeId, | |
142 layer_tree_host_id); | |
143 } | |
144 | |
145 inline scoped_refptr<base::trace_event::ConvertableToTraceFormat> | |
146 BeginMainThreadFrameData(int frame_id) { | |
147 scoped_refptr<base::trace_event::TracedValue> value = | |
148 new base::trace_event::TracedValue(); | |
149 value->SetInteger("frameId", frame_id); | |
150 return value; | |
151 } | |
152 | |
153 inline void WillBeginMainThreadFrame(int layer_tree_host_id, int frame_id) { | |
154 TRACE_EVENT_INSTANT2( | |
155 internal::kCategoryFrame, internal::kBeginMainThreadFrame, | |
156 TRACE_EVENT_SCOPE_THREAD, internal::kLayerTreeId, layer_tree_host_id, | |
157 internal::kData, BeginMainThreadFrameData(frame_id)); | |
158 } | |
159 | |
160 } // namespace devtools_instrumentation | |
161 } // namespace cc | |
162 | |
163 #endif // CC_DEBUG_DEVTOOLS_INSTRUMENTATION_H_ | |
OLD | NEW |