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

Unified Diff: Source/core/inspector/InspectorTraceEvents.cpp

Issue 357703002: Introduce builders for tracing event arguments (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Removed PLATFORM_EXPORT from template classes Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/dom/Node.cpp ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/InspectorTraceEvents.cpp
diff --git a/Source/core/inspector/InspectorTraceEvents.cpp b/Source/core/inspector/InspectorTraceEvents.cpp
index bd80f7ff573f3245698654a15975048ce0e91761..473f727a349f9e38c80fb7ec7b060c9d1441d555 100644
--- a/Source/core/inspector/InspectorTraceEvents.cpp
+++ b/Source/core/inspector/InspectorTraceEvents.cpp
@@ -32,16 +32,18 @@ namespace {
class JSCallStack : public TraceEvent::ConvertableToTraceFormat {
public:
- explicit JSCallStack(PassRefPtrWillBeRawPtr<ScriptCallStack> callstack) : m_callstack(callstack) { }
+ explicit JSCallStack(PassRefPtrWillBeRawPtr<ScriptCallStack> callstack)
+ {
+ m_serialized = callstack ? callstack->buildInspectorArray()->toJSONString() : "null";
+ ASSERT(m_serialized.isSafeToSendToAnotherThread());
+ }
virtual String asTraceFormat() const
{
- if (!m_callstack)
- return "null";
- return m_callstack->buildInspectorArray()->toJSONString();
+ return m_serialized;
}
private:
- RefPtrWillBePersistent<ScriptCallStack> m_callstack;
+ String m_serialized;
};
String toHexString(void* p)
@@ -59,26 +61,26 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::beginData
LocalFrame& frame = frameView->frame();
frame.countObjectsNeedingLayout(needsLayoutObjects, totalObjects, isPartial);
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("dirtyObjects", needsLayoutObjects);
- data->setNumber("totalObjects", totalObjects);
- data->setBoolean("partialLayout", isPartial);
- data->setString("frame", toHexString(&frame));
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ return value.setInteger("dirtyObjects", needsLayoutObjects)
+ .setInteger("totalObjects", totalObjects)
+ .setBoolean("partialLayout", isPartial)
+ .setString("frame", toHexString(&frame))
+ .finish();
}
-static PassRefPtr<JSONArray> createQuad(const FloatQuad& quad)
+static void createQuad(TracedValue& value, const char* name, const FloatQuad& quad)
{
- RefPtr<JSONArray> array = JSONArray::create();
- array->pushNumber(quad.p1().x());
- array->pushNumber(quad.p1().y());
- array->pushNumber(quad.p2().x());
- array->pushNumber(quad.p2().y());
- array->pushNumber(quad.p3().x());
- array->pushNumber(quad.p3().y());
- array->pushNumber(quad.p4().x());
- array->pushNumber(quad.p4().y());
- return array.release();
+ value.beginArray(name)
+ .pushDouble(quad.p1().x())
+ .pushDouble(quad.p1().y())
+ .pushDouble(quad.p2().x())
+ .pushDouble(quad.p2().y())
+ .pushDouble(quad.p3().x())
+ .pushDouble(quad.p3().y())
+ .pushDouble(quad.p4().x())
+ .pushDouble(quad.p4().y())
+ .endArray();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::endData(RenderObject* rootForThisLayout)
@@ -86,62 +88,62 @@ PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::endData(R
Vector<FloatQuad> quads;
rootForThisLayout->absoluteQuads(quads);
- RefPtr<JSONObject> data = JSONObject::create();
+ TracedValue value;
if (quads.size() >= 1) {
- data->setArray("root", createQuad(quads[0]));
+ createQuad(value, "root", quads[0]);
int rootNodeId = InspectorNodeIds::idForNode(rootForThisLayout->generatingNode());
- data->setNumber("rootNode", rootNodeId);
+ value.setInteger("rootNode", rootNodeId);
} else {
ASSERT_NOT_REACHED();
}
- return TracedValue::fromJSONValue(data);
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data(unsigned long identifier, LocalFrame* frame, const ResourceRequest& request)
{
String requestId = IdentifiersFactory::requestId(identifier);
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("requestId", requestId);
- data->setString("frame", toHexString(frame));
- data->setString("url", request.url().string());
- data->setString("requestMethod", request.httpMethod());
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ return value.setString("requestId", requestId)
+ .setString("frame", toHexString(frame))
+ .setString("url", request.url().string())
+ .setString("requestMethod", request.httpMethod())
+ .finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorReceiveResponseEvent::data(unsigned long identifier, LocalFrame* frame, const ResourceResponse& response)
{
String requestId = IdentifiersFactory::requestId(identifier);
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("requestId", requestId);
- data->setString("frame", toHexString(frame));
- data->setNumber("statusCode", response.httpStatusCode());
- data->setString("mimeType", response.mimeType().string().isolatedCopy());
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ return value.setString("requestId", requestId)
+ .setString("frame", toHexString(frame))
+ .setInteger("statusCode", response.httpStatusCode())
+ .setString("mimeType", response.mimeType().string().isolatedCopy())
+ .finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorReceiveDataEvent::data(unsigned long identifier, LocalFrame* frame, int encodedDataLength)
{
String requestId = IdentifiersFactory::requestId(identifier);
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("requestId", requestId);
- data->setString("frame", toHexString(frame));
- data->setNumber("encodedDataLength", encodedDataLength);
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ return value.setString("requestId", requestId)
+ .setString("frame", toHexString(frame))
+ .setInteger("encodedDataLength", encodedDataLength)
+ .finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorResourceFinishEvent::data(unsigned long identifier, double finishTime, bool didFail)
{
String requestId = IdentifiersFactory::requestId(identifier);
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("requestId", requestId);
- data->setBoolean("didFail", didFail);
+ TracedValue value;
+ value.setString("requestId", requestId);
+ value.setBoolean("didFail", didFail);
if (finishTime)
- data->setNumber("networkTime", finishTime);
- return TracedValue::fromJSONValue(data);
+ value.setDouble("networkTime", finishTime);
+ return value.finish();
}
static LocalFrame* frameForExecutionContext(ExecutionContext* context)
@@ -152,85 +154,85 @@ static LocalFrame* frameForExecutionContext(ExecutionContext* context)
return frame;
}
-static PassRefPtr<JSONObject> genericTimerData(ExecutionContext* context, int timerId)
+static PassOwnPtr<TracedValue> genericTimerData(ExecutionContext* context, int timerId)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("timerId", timerId);
+ OwnPtr<TracedValue> value = adoptPtr(new TracedValue());
+ value->setInteger("timerId", timerId);
if (LocalFrame* frame = frameForExecutionContext(context))
- data->setString("frame", toHexString(frame));
- return data.release();
+ value->setString("frame", toHexString(frame));
+ return value.release();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerInstallEvent::data(ExecutionContext* context, int timerId, int timeout, bool singleShot)
{
- RefPtr<JSONObject> data = genericTimerData(context, timerId);
- data->setNumber("timeout", timeout);
- data->setBoolean("singleShot", singleShot);
- return TracedValue::fromJSONValue(data);
+ OwnPtr<TracedValue> value = genericTimerData(context, timerId);
+ value->setInteger("timeout", timeout);
+ value->setBoolean("singleShot", singleShot);
+ return value->finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerRemoveEvent::data(ExecutionContext* context, int timerId)
{
- return TracedValue::fromJSONValue(genericTimerData(context, timerId));
+ return genericTimerData(context, timerId)->finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerFireEvent::data(ExecutionContext* context, int timerId)
{
- return TracedValue::fromJSONValue(genericTimerData(context, timerId));
+ return genericTimerData(context, timerId)->finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationFrameEvent::data(Document* document, int callbackId)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("id", callbackId);
- data->setString("frame", toHexString(document->frame()));
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ return value.setInteger("id", callbackId)
+ .setString("frame", toHexString(document->frame()))
+ .finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorWebSocketCreateEvent::data(Document* document, unsigned long identifier, const KURL& url, const String& protocol)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("identifier", identifier);
- data->setString("url", url.string());
- data->setString("frame", toHexString(document->frame()));
+ TracedValue value;
+ value.setInteger("identifier", identifier);
+ value.setString("url", url.string());
+ value.setString("frame", toHexString(document->frame()));
if (!protocol.isNull())
- data->setString("webSocketProtocol", protocol);
- return TracedValue::fromJSONValue(data);
+ value.setString("webSocketProtocol", protocol);
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorWebSocketEvent::data(Document* document, unsigned long identifier)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("identifier", identifier);
- data->setString("frame", toHexString(document->frame()));
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ value.setInteger("identifier", identifier);
+ value.setString("frame", toHexString(document->frame()));
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorParseHtmlEvent::beginData(Document* document, unsigned startLine)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("startLine", startLine);
- data->setString("frame", toHexString(document->frame()));
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ value.setInteger("startLine", startLine);
+ value.setString("frame", toHexString(document->frame()));
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrReadyStateChangeEvent::data(ExecutionContext* context, XMLHttpRequest* request)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("url", request->url().string());
- data->setNumber("readyState", request->readyState());
+ TracedValue value;
+ value.setString("url", request->url().string());
+ value.setInteger("readyState", request->readyState());
if (LocalFrame* frame = frameForExecutionContext(context))
- data->setString("frame", toHexString(frame));
- return TracedValue::fromJSONValue(data);
+ value.setString("frame", toHexString(frame));
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrLoadEvent::data(ExecutionContext* context, XMLHttpRequest* request)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("url", request->url().string());
+ TracedValue value;
+ value.setString("url", request->url().string());
if (LocalFrame* frame = frameForExecutionContext(context))
- data->setString("frame", toHexString(frame));
- return TracedValue::fromJSONValue(data);
+ value.setString("frame", toHexString(frame));
+ return value.finish();
}
static void localToPageQuad(const RenderObject& renderer, const LayoutRect& rect, FloatQuad* quad)
@@ -246,65 +248,63 @@ static void localToPageQuad(const RenderObject& renderer, const LayoutRect& rect
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(RenderObject* renderer, const LayoutRect& clipRect, const GraphicsLayer* graphicsLayer)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("frame", toHexString(renderer->frame()));
+ TracedValue value;
+ value.setString("frame", toHexString(renderer->frame()));
FloatQuad quad;
localToPageQuad(*renderer, clipRect, &quad);
- data->setArray("clip", createQuad(quad));
+ createQuad(value, "clip", quad);
int nodeId = InspectorNodeIds::idForNode(renderer->generatingNode());
- data->setNumber("nodeId", nodeId);
+ value.setInteger("nodeId", nodeId);
int graphicsLayerId = graphicsLayer ? graphicsLayer->platformLayer()->id() : 0;
- data->setNumber("layerId", graphicsLayerId);
- return TracedValue::fromJSONValue(data);
+ value.setInteger("layerId", graphicsLayerId);
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorMarkLoadEvent::data(LocalFrame* frame)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("frame", toHexString(frame));
+ TracedValue value;
+ value.setString("frame", toHexString(frame));
bool isMainFrame = frame && frame->page()->mainFrame() == frame;
- data->setBoolean("isMainFrame", isMainFrame);
- return TracedValue::fromJSONValue(data);
+ value.setBoolean("isMainFrame", isMainFrame);
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorScrollLayerEvent::data(RenderObject* renderer)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("frame", toHexString(renderer->frame()));
+ TracedValue value;
+ value.setString("frame", toHexString(renderer->frame()));
int nodeId = InspectorNodeIds::idForNode(renderer->generatingNode());
- data->setNumber("nodeId", nodeId);
- return TracedValue::fromJSONValue(data);
+ value.setInteger("nodeId", nodeId);
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEvaluateScriptEvent::data(LocalFrame* frame, const String& url, int lineNumber)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("frame", toHexString(frame));
- data->setString("url", url);
- data->setNumber("lineNumber", lineNumber);
- return TracedValue::fromJSONValue(data);
+ TracedValue value;
+ value.setString("frame", toHexString(frame));
+ value.setString("url", url);
+ value.setInteger("lineNumber", lineNumber);
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorFunctionCallEvent::data(ExecutionContext* context, int scriptId, const String& scriptName, int scriptLine)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setString("scriptId", String::number(scriptId));
- data->setString("scriptName", scriptName);
- data->setNumber("scriptLine", scriptLine);
+ TracedValue value;
+ value.setString("scriptId", String::number(scriptId));
+ value.setString("scriptName", scriptName);
+ value.setInteger("scriptLine", scriptLine);
if (LocalFrame* frame = frameForExecutionContext(context))
- data->setString("frame", toHexString(frame));
- return TracedValue::fromJSONValue(data);
+ value.setString("frame", toHexString(frame));
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(const RenderImage& renderImage)
{
- RefPtr<JSONObject> data = JSONObject::create();
- data->setNumber("nodeId", InspectorNodeIds::idForNode(renderImage.generatingNode()));
-
+ TracedValue value;
+ value.setInteger("nodeId", InspectorNodeIds::idForNode(renderImage.generatingNode()));
if (const ImageResource* resource = renderImage.cachedImage())
- data->setString("url", resource->url().string());
-
- return TracedValue::fromJSONValue(data);
+ value.setString("url", resource->url().string());
+ return value.finish();
}
static size_t usedHeapSize()
@@ -316,14 +316,14 @@ static size_t usedHeapSize()
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorUpdateCountersEvent::data()
{
- RefPtr<JSONObject> data = JSONObject::create();
+ TracedValue value;
if (isMainThread()) {
- data->setNumber("documents", InspectorCounters::counterValue(InspectorCounters::DocumentCounter));
- data->setNumber("nodes", InspectorCounters::counterValue(InspectorCounters::NodeCounter));
- data->setNumber("jsEventListeners", InspectorCounters::counterValue(InspectorCounters::JSEventListenerCounter));
+ value.setInteger("documents", InspectorCounters::counterValue(InspectorCounters::DocumentCounter));
+ value.setInteger("nodes", InspectorCounters::counterValue(InspectorCounters::NodeCounter));
+ value.setInteger("jsEventListeners", InspectorCounters::counterValue(InspectorCounters::JSEventListenerCounter));
}
- data->setNumber("jsHeapSizeUsed", static_cast<double>(usedHeapSize()));
- return TracedValue::fromJSONValue(data);
+ value.setDouble("jsHeapSizeUsed", static_cast<double>(usedHeapSize()));
+ return value.finish();
}
PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorCallStackEvent::currentCallStack()
« no previous file with comments | « Source/core/dom/Node.cpp ('k') | Source/core/rendering/RenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698