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

Side by Side Diff: sky/engine/core/inspector/InspectorTraceEvents.cpp

Issue 889823002: Remove TRACE_EVENT indirection through blink::Platform (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
(Empty)
1 // Copyright 2014 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 #include "sky/engine/config.h"
6 #include "sky/engine/core/inspector/InspectorTraceEvents.h"
7
8 #include "sky/engine/bindings/core/v8/ScriptCallStackFactory.h"
9 #include "sky/engine/bindings/core/v8/ScriptGCEvent.h"
10 #include "sky/engine/bindings/core/v8/ScriptSourceCode.h"
11 #include "sky/engine/core/events/Event.h"
12 #include "sky/engine/core/frame/FrameView.h"
13 #include "sky/engine/core/frame/LocalDOMWindow.h"
14 #include "sky/engine/core/inspector/IdentifiersFactory.h"
15 #include "sky/engine/core/inspector/InspectorNodeIds.h"
16 #include "sky/engine/core/inspector/ScriptCallStack.h"
17 #include "sky/engine/core/page/Page.h"
18 #include "sky/engine/core/rendering/RenderImage.h"
19 #include "sky/engine/core/rendering/RenderObject.h"
20 #include "sky/engine/platform/JSONValues.h"
21 #include "sky/engine/platform/network/ResourceRequest.h"
22 #include "sky/engine/platform/network/ResourceResponse.h"
23 #include "sky/engine/platform/TracedValue.h"
24 #include "sky/engine/platform/weborigin/KURL.h"
25 #include "sky/engine/wtf/Vector.h"
26
27 namespace blink {
28
29 namespace {
30
31 class JSCallStack : public TraceEvent::ConvertableToTraceFormat {
32 public:
33 explicit JSCallStack(PassRefPtr<ScriptCallStack> callstack)
34 {
35 ASSERT(m_serialized.isSafeToSendToAnotherThread());
36 }
37 virtual String asTraceFormat() const
38 {
39 return m_serialized;
40 }
41
42 private:
43 String m_serialized;
44 };
45
46 }
47
48 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::beginData (FrameView* frameView)
49 {
50 bool isPartial;
51 unsigned needsLayoutObjects;
52 unsigned totalObjects;
53 frameView->countObjectsNeedingLayout(needsLayoutObjects, totalObjects, isPar tial);
54
55 RefPtr<TracedValue> value = TracedValue::create();
56 value->setInteger("dirtyObjects", needsLayoutObjects);
57 value->setInteger("totalObjects", totalObjects);
58 value->setBoolean("partialLayout", isPartial);
59 return value;
60 }
61
62 static void createQuad(TracedValue* value, const char* name, const FloatQuad& qu ad)
63 {
64 value->beginArray(name);
65 value->pushDouble(quad.p1().x());
66 value->pushDouble(quad.p1().y());
67 value->pushDouble(quad.p2().x());
68 value->pushDouble(quad.p2().y());
69 value->pushDouble(quad.p3().x());
70 value->pushDouble(quad.p3().y());
71 value->pushDouble(quad.p4().x());
72 value->pushDouble(quad.p4().y());
73 value->endArray();
74 }
75
76 static void setGeneratingNodeId(TracedValue* value, const char* fieldName, const RenderObject* renderer)
77 {
78 Node* node = 0;
79 for (; renderer && !node; renderer = renderer->parent())
80 node = renderer->node();
81 if (!node)
82 return;
83 value->setInteger(fieldName, InspectorNodeIds::idForNode(node));
84 }
85
86 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::endData(R enderObject* rootForThisLayout)
87 {
88 Vector<FloatQuad> quads;
89 rootForThisLayout->absoluteQuads(quads);
90
91 RefPtr<TracedValue> value = TracedValue::create();
92 if (quads.size() >= 1) {
93 createQuad(value.get(), "root", quads[0]);
94 setGeneratingNodeId(value.get(), "rootNode", rootForThisLayout);
95 } else {
96 ASSERT_NOT_REACHED();
97 }
98 return value;
99 }
100
101 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data (unsigned long identifier, const ResourceRequest& request)
102 {
103 String requestId = IdentifiersFactory::requestId(identifier);
104
105 RefPtr<TracedValue> value = TracedValue::create();
106 value->setString("requestId", requestId);
107 value->setString("url", request.url().string());
108 value->setString("requestMethod", request.httpMethod());
109 return value;
110 }
111
112 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorReceiveResponseEvent:: data(unsigned long identifier, const ResourceResponse& response)
113 {
114 String requestId = IdentifiersFactory::requestId(identifier);
115
116 RefPtr<TracedValue> value = TracedValue::create();
117 value->setString("requestId", requestId);
118 value->setInteger("statusCode", response.httpStatusCode());
119 value->setString("mimeType", response.mimeType().string().isolatedCopy());
120 return value;
121 }
122
123 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorReceiveDataEvent::data (unsigned long identifier, int encodedDataLength)
124 {
125 String requestId = IdentifiersFactory::requestId(identifier);
126
127 RefPtr<TracedValue> value = TracedValue::create();
128 value->setString("requestId", requestId);
129 value->setInteger("encodedDataLength", encodedDataLength);
130 return value;
131 }
132
133 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorResourceFinishEvent::d ata(unsigned long identifier, double finishTime, bool didFail)
134 {
135 String requestId = IdentifiersFactory::requestId(identifier);
136
137 RefPtr<TracedValue> value = TracedValue::create();
138 value->setString("requestId", requestId);
139 value->setBoolean("didFail", didFail);
140 if (finishTime)
141 value->setDouble("networkTime", finishTime);
142 return value;
143 }
144
145 static PassRefPtr<TracedValue> genericTimerData(ExecutionContext* context, int t imerId)
146 {
147 RefPtr<TracedValue> value = TracedValue::create();
148 value->setInteger("timerId", timerId);
149 return value.release();
150 }
151
152 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerInstallEvent::dat a(ExecutionContext* context, int timerId, int timeout, bool singleShot)
153 {
154 RefPtr<TracedValue> value = genericTimerData(context, timerId);
155 value->setInteger("timeout", timeout);
156 value->setBoolean("singleShot", singleShot);
157 return value;
158 }
159
160 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerRemoveEvent::data (ExecutionContext* context, int timerId)
161 {
162 return genericTimerData(context, timerId);
163 }
164
165 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerFireEvent::data(E xecutionContext* context, int timerId)
166 {
167 return genericTimerData(context, timerId);
168 }
169
170 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationFrameEvent::d ata(Document* document, int callbackId)
171 {
172 RefPtr<TracedValue> value = TracedValue::create();
173 value->setInteger("id", callbackId);
174 return value;
175 }
176
177 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorParseHtmlEvent::beginD ata(Document* document, unsigned startLine)
178 {
179 RefPtr<TracedValue> value = TracedValue::create();
180 value->setInteger("startLine", startLine);
181 return value;
182 }
183
184 static void localToPageQuad(const RenderObject& renderer, const LayoutRect& rect , FloatQuad* quad)
185 {
186 FloatQuad absolute = renderer.localToAbsoluteQuad(FloatQuad(rect));
187 quad->setP1(roundedIntPoint(absolute.p1()));
188 quad->setP2(roundedIntPoint(absolute.p2()));
189 quad->setP3(roundedIntPoint(absolute.p3()));
190 quad->setP4(roundedIntPoint(absolute.p4()));
191 }
192
193 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(Rende rObject* renderer, const LayoutRect& clipRect)
194 {
195 RefPtr<TracedValue> value = TracedValue::create();
196 FloatQuad quad;
197 localToPageQuad(*renderer, clipRect, &quad);
198 createQuad(value.get(), "clip", quad);
199 setGeneratingNodeId(value.get(), "nodeId", renderer);
200 value->setInteger("layerId", 0);
201 return value;
202 }
203
204 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorMarkLoadEvent::data()
205 {
206 return TracedValue::create();
207 }
208
209 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEvaluateScriptEvent::d ata(const String& url, int lineNumber)
210 {
211 RefPtr<TracedValue> value = TracedValue::create();
212 value->setString("url", url);
213 value->setInteger("lineNumber", lineNumber);
214 return value;
215 }
216
217 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorFunctionCallEvent::dat a(ExecutionContext* context, int scriptId, const String& scriptName, int scriptL ine)
218 {
219 RefPtr<TracedValue> value = TracedValue::create();
220 value->setString("scriptId", String::number(scriptId));
221 value->setString("scriptName", scriptName);
222 value->setInteger("scriptLine", scriptLine);
223 return value;
224 }
225
226 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data( const RenderImage& renderImage)
227 {
228 RefPtr<TracedValue> value = TracedValue::create();
229 setGeneratingNodeId(value.get(), "nodeId", &renderImage);
230 if (const ImageResource* resource = renderImage.cachedImage())
231 value->setString("url", resource->url().string());
232 return value;
233 }
234
235 static size_t usedHeapSize()
236 {
237 HeapInfo info;
238 ScriptGCEvent::getHeapSize(info);
239 return info.usedJSHeapSize;
240 }
241
242 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorUpdateCountersEvent::d ata()
243 {
244 RefPtr<TracedValue> value = TracedValue::create();
245 if (isMainThread()) {
246 value->setInteger("documents", InspectorCounters::counterValue(Inspector Counters::DocumentCounter));
247 value->setInteger("nodes", InspectorCounters::counterValue(InspectorCoun ters::NodeCounter));
248 value->setInteger("jsEventListeners", InspectorCounters::counterValue(In spectorCounters::JSEventListenerCounter));
249 }
250 value->setDouble("jsHeapSizeUsed", static_cast<double>(usedHeapSize()));
251 return value;
252 }
253
254 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorCallStackEvent::curren tCallStack()
255 {
256 return adoptRef(new JSCallStack(createScriptCallStack(ScriptCallStack::maxCa llStackSizeToCapture, true)));
257 }
258
259 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEventDispatchEvent::da ta(const Event& event)
260 {
261 RefPtr<TracedValue> value = TracedValue::create();
262 value->setString("type", event.type());
263 return value;
264 }
265
266 PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimeStampEvent::data(E xecutionContext* context, const String& message)
267 {
268 RefPtr<TracedValue> value = TracedValue::create();
269 value->setString("message", message);
270 return value;
271 }
272
273 }
OLDNEW
« no previous file with comments | « sky/engine/core/inspector/InspectorTraceEvents.h ('k') | sky/engine/core/loader/FrameFetchContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698