1f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 2f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu// Use of this source code is governed by a BSD-style license that can be 3f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu// found in the LICENSE file. 4f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 5f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "config.h" 6f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/inspector/InspectorTraceEvents.h" 7f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptCallStackFactory.h" 9197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptGCEvent.h" 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptSourceCode.h" 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/events/Event.h" 12f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/frame/FrameView.h" 13f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/frame/LocalFrame.h" 14f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/inspector/IdentifiersFactory.h" 15f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/inspector/InspectorNodeIds.h" 16323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "core/inspector/ScriptCallStack.h" 17f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/page/Page.h" 18f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)#include "core/rendering/RenderImage.h" 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/rendering/RenderLayer.h" 20f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/rendering/RenderObject.h" 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "core/workers/WorkerThread.h" 22f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "core/xml/XMLHttpRequest.h" 23f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/JSONValues.h" 24f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/TracedValue.h" 25f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/graphics/GraphicsLayer.h" 26f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/network/ResourceRequest.h" 27f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/network/ResourceResponse.h" 28f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "platform/weborigin/KURL.h" 29f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include "wtf/Vector.h" 30f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu#include <inttypes.h> 31f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 33f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccistatic const unsigned maxInvalidationTrackingCallstackSize = 5; 357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 36323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)namespace { 37323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 38323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)class JSCallStack : public TraceEvent::ConvertableToTraceFormat { 39323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)public: 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch explicit JSCallStack(PassRefPtrWillBeRawPtr<ScriptCallStack> callstack) 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 429e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) m_serialized = callstack ? callstack->buildInspectorArray()->toJSONString() : "[]"; 43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch ASSERT(m_serialized.isSafeToSendToAnotherThread()); 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch } 45323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) virtual String asTraceFormat() const 46323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) { 47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return m_serialized; 48323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } 49323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 50323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)private: 51197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch String m_serialized; 52323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}; 53323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciString toHexString(const void* p) 55f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 56f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return String::format("0x%" PRIx64, static_cast<uint64>(reinterpret_cast<intptr_t>(p))); 57f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 58f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 60323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 61f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::beginData(FrameView* frameView) 62f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 63f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu bool isPartial; 64f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu unsigned needsLayoutObjects; 65f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu unsigned totalObjects; 66f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu LocalFrame& frame = frameView->frame(); 67f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu frame.countObjectsNeedingLayout(needsLayoutObjects, totalObjects, isPartial); 68f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 69c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 70c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("dirtyObjects", needsLayoutObjects); 71c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("totalObjects", totalObjects); 72c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setBoolean("partialLayout", isPartial); 73c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(&frame)); 74c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 75f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 76f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 77c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)static void createQuad(TracedValue* value, const char* name, const FloatQuad& quad) 78f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 79c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->beginArray(name); 80c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p1().x()); 81c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p1().y()); 82c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p2().x()); 83c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p2().y()); 84c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p3().x()); 85c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p3().y()); 86c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p4().x()); 87c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->pushDouble(quad.p4().y()); 88c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->endArray(); 89197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccistatic void setGeneratingNodeInfo(TracedValue* value, const RenderObject* renderer, const char* idFieldName, const char* nameFieldName = 0) 92197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 93197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Node* node = 0; 94197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch for (; renderer && !node; renderer = renderer->parent()) 95197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch node = renderer->generatingNode(); 96197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (!node) 97197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return; 987242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setInteger(idFieldName, InspectorNodeIds::idForNode(node)); 997242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (nameFieldName) 1007242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString(nameFieldName, node->debugName()); 101f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 102f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 103f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutEvent::endData(RenderObject* rootForThisLayout) 104f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 105f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu Vector<FloatQuad> quads; 106f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu rootForThisLayout->absoluteQuads(quads); 107f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 108c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 109f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (quads.size() >= 1) { 110c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) createQuad(value.get(), "root", quads[0]); 1117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), rootForThisLayout, "rootNode"); 112f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu } else { 113f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu ASSERT_NOT_REACHED(); 114f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu } 115c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 116f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 117f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 1187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayoutInvalidationTrackingEvent::data(const RenderObject* renderer) 1197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 1207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ASSERT(renderer); 1217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtr<TracedValue> value = TracedValue::create(); 1227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString("frame", toHexString(renderer->frame())); 1237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), renderer, "nodeId", "nodeName"); 1247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtrWillBeRawPtr<ScriptCallStack> callstack = createScriptCallStack(maxInvalidationTrackingCallstackSize, true); 1257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString("callstack", callstack ? callstack->buildInspectorArray()->toJSONString() : "[]"); 1267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return value; 1277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 1287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 1297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintInvalidationTrackingEvent::data(const RenderObject* renderer, const RenderObject* paintContainer) 1307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 1317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ASSERT(renderer); 1327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtr<TracedValue> value = TracedValue::create(); 1337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString("frame", toHexString(renderer->frame())); 1347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), paintContainer, "paintId"); 1357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), renderer, "nodeId", "nodeName"); 1367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return value; 1377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 1387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 139f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorSendRequestEvent::data(unsigned long identifier, LocalFrame* frame, const ResourceRequest& request) 140f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 141f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu String requestId = IdentifiersFactory::requestId(identifier); 142f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 143c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 144c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("requestId", requestId); 145c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 146c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("url", request.url().string()); 147c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("requestMethod", request.httpMethod()); 148c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 149f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 150f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 151f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorReceiveResponseEvent::data(unsigned long identifier, LocalFrame* frame, const ResourceResponse& response) 152f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 153f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu String requestId = IdentifiersFactory::requestId(identifier); 154f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 155c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 156c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("requestId", requestId); 157c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 158c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("statusCode", response.httpStatusCode()); 159c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("mimeType", response.mimeType().string().isolatedCopy()); 160c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 161f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 162f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 163f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorReceiveDataEvent::data(unsigned long identifier, LocalFrame* frame, int encodedDataLength) 164f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 165f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu String requestId = IdentifiersFactory::requestId(identifier); 166f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 167c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 168c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("requestId", requestId); 169c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 170c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("encodedDataLength", encodedDataLength); 171c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 172f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 173f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 174f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorResourceFinishEvent::data(unsigned long identifier, double finishTime, bool didFail) 175f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 176f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu String requestId = IdentifiersFactory::requestId(identifier); 177f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 178c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 179c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("requestId", requestId); 180c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setBoolean("didFail", didFail); 181f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (finishTime) 182c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setDouble("networkTime", finishTime); 183c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 184f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 185f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 186f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liustatic LocalFrame* frameForExecutionContext(ExecutionContext* context) 187f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 188f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu LocalFrame* frame = 0; 189f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (context->isDocument()) 190f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu frame = toDocument(context)->frame(); 191f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return frame; 192f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 193f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 194c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)static PassRefPtr<TracedValue> genericTimerData(ExecutionContext* context, int timerId) 195f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 196c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 197197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch value->setInteger("timerId", timerId); 198f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (LocalFrame* frame = frameForExecutionContext(context)) 199197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch value->setString("frame", toHexString(frame)); 200197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return value.release(); 201f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 202f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 203f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerInstallEvent::data(ExecutionContext* context, int timerId, int timeout, bool singleShot) 204f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 205c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = genericTimerData(context, timerId); 206197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch value->setInteger("timeout", timeout); 207197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch value->setBoolean("singleShot", singleShot); 208c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 209f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 210f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 211f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerRemoveEvent::data(ExecutionContext* context, int timerId) 212f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 213c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return genericTimerData(context, timerId); 214f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 215f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 216f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimerFireEvent::data(ExecutionContext* context, int timerId) 217f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 218c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return genericTimerData(context, timerId); 219f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 220f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 221f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorAnimationFrameEvent::data(Document* document, int callbackId) 222f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 223c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 224c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("id", callbackId); 225c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(document->frame())); 226c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 227f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 228f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 229f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorWebSocketCreateEvent::data(Document* document, unsigned long identifier, const KURL& url, const String& protocol) 230f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 231c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 232c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("identifier", identifier); 233c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("url", url.string()); 234c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(document->frame())); 235f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (!protocol.isNull()) 236c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("webSocketProtocol", protocol); 237c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 238f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 239f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 240f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorWebSocketEvent::data(Document* document, unsigned long identifier) 241f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 242c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 243c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("identifier", identifier); 244c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(document->frame())); 245c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 246f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 247f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 248f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorParseHtmlEvent::beginData(Document* document, unsigned startLine) 249f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 250c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 251c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("startLine", startLine); 252c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(document->frame())); 253c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 254f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 255f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 256f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrReadyStateChangeEvent::data(ExecutionContext* context, XMLHttpRequest* request) 257f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 258c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 259c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("url", request->url().string()); 260c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("readyState", request->readyState()); 261f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (LocalFrame* frame = frameForExecutionContext(context)) 262c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 263c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 264f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 265f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 266f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorXhrLoadEvent::data(ExecutionContext* context, XMLHttpRequest* request) 267f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 268c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 269c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("url", request->url().string()); 270f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (LocalFrame* frame = frameForExecutionContext(context)) 271c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 272c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 273f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 274f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 275f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liustatic void localToPageQuad(const RenderObject& renderer, const LayoutRect& rect, FloatQuad* quad) 276f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 277f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu LocalFrame* frame = renderer.frame(); 278f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu FrameView* view = frame->view(); 279f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu FloatQuad absolute = renderer.localToAbsoluteQuad(FloatQuad(rect)); 280f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu quad->setP1(view->contentsToRootView(roundedIntPoint(absolute.p1()))); 281f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu quad->setP2(view->contentsToRootView(roundedIntPoint(absolute.p2()))); 282f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu quad->setP3(view->contentsToRootView(roundedIntPoint(absolute.p3()))); 283f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu quad->setP4(view->contentsToRootView(roundedIntPoint(absolute.p4()))); 284f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 285f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 2867242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciconst char InspectorLayerInvalidationTrackingEvent::SquashingLayerGeometryWasUpdated[] = "Squashing layer geometry was updated."; 2877242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciconst char InspectorLayerInvalidationTrackingEvent::AddedToSquashingLayer[] = "The layer may have been added to an already-existing squashing layer."; 2887242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciconst char InspectorLayerInvalidationTrackingEvent::RemovedFromSquashingLayer[] = "Removed the layer from a squashing layer."; 2897242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciconst char InspectorLayerInvalidationTrackingEvent::ReflectionLayerChanged[] = "Reflection layer change."; 2907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciconst char InspectorLayerInvalidationTrackingEvent::NewCompositedLayer[] = "Assigned a new composited layer."; 2917242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciconst char InspectorLayerInvalidationTrackingEvent::AncestorRequiresNewLayer[] = "A new composited layer is needed based on the RenderLayer's compositing ancestor's properties."; 2927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2937242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorLayerInvalidationTrackingEvent::data(const RenderLayer* layer, const char* reason) 2947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 2957242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci const RenderObject* paintInvalidationContainer = layer->renderer()->containerForPaintInvalidation(); 2967242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2977242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtr<TracedValue> value = TracedValue::create(); 2987242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString("frame", toHexString(paintInvalidationContainer->frame())); 2997242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), paintInvalidationContainer, "paintId"); 3007242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString("reason", reason); 3017242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return value; 3027242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 3037242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 304f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintEvent::data(RenderObject* renderer, const LayoutRect& clipRect, const GraphicsLayer* graphicsLayer) 305f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 306c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 307c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(renderer->frame())); 308f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu FloatQuad quad; 309f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu localToPageQuad(*renderer, clipRect, &quad); 310c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) createQuad(value.get(), "clip", quad); 3117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), renderer, "nodeId"); 312f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu int graphicsLayerId = graphicsLayer ? graphicsLayer->platformLayer()->id() : 0; 313c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("layerId", graphicsLayerId); 314c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 315f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 316f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 317f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorMarkLoadEvent::data(LocalFrame* frame) 318f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 319c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 320c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 321e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) bool isMainFrame = frame && frame->isMainFrame(); 322c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setBoolean("isMainFrame", isMainFrame); 323c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 324f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 325f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 326f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorScrollLayerEvent::data(RenderObject* renderer) 327f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 328c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 329c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(renderer->frame())); 3307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), renderer, "nodeId"); 331c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 332f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 333f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 334f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEvaluateScriptEvent::data(LocalFrame* frame, const String& url, int lineNumber) 335f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 336c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 337c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 338c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("url", url); 339c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("lineNumber", lineNumber); 340c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 341f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 342f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 343f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo LiuPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorFunctionCallEvent::data(ExecutionContext* context, int scriptId, const String& scriptName, int scriptLine) 344f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu{ 345c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 346c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("scriptId", String::number(scriptId)); 347c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("scriptName", scriptName); 348c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("scriptLine", scriptLine); 349f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (LocalFrame* frame = frameForExecutionContext(context)) 350c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 351c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 352f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 353f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 354f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorPaintImageEvent::data(const RenderImage& renderImage) 355f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles){ 356c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 3577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci setGeneratingNodeInfo(value.get(), &renderImage, "nodeId"); 358f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) if (const ImageResource* resource = renderImage.cachedImage()) 359c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("url", resource->url().string()); 360c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 361f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)} 362f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 363323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)static size_t usedHeapSize() 364323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 365323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) HeapInfo info; 366323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) ScriptGCEvent::getHeapSize(info); 367323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) return info.usedJSHeapSize; 368323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 369323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 370323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorUpdateCountersEvent::data() 371323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 372c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 373323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) if (isMainThread()) { 374c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("documents", InspectorCounters::counterValue(InspectorCounters::DocumentCounter)); 375c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("nodes", InspectorCounters::counterValue(InspectorCounters::NodeCounter)); 376c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setInteger("jsEventListeners", InspectorCounters::counterValue(InspectorCounters::JSEventListenerCounter)); 377323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } 378c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setDouble("jsHeapSizeUsed", static_cast<double>(usedHeapSize())); 379c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 380323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 381323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 382323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)PassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorCallStackEvent::currentCallStack() 383323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 384323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) return adoptRef(new JSCallStack(createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture, true))); 385323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 386323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 387197021e6b966cfb06891637935ef33fff06433d1Ben MurdochPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorEventDispatchEvent::data(const Event& event) 388197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 389c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 390c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("type", event.type()); 391c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 392197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 393197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 394197021e6b966cfb06891637935ef33fff06433d1Ben MurdochPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTimeStampEvent::data(ExecutionContext* context, const String& message) 395197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 396c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtr<TracedValue> value = TracedValue::create(); 397c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("message", message); 398197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (LocalFrame* frame = frameForExecutionContext(context)) 399c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) value->setString("frame", toHexString(frame)); 400c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) return value; 401197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 402197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 4037242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtr<TraceEvent::ConvertableToTraceFormat> InspectorTracingSessionIdForWorkerEvent::data(const String& sessionId, WorkerThread* workerThread) 4047242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{ 4057242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RefPtr<TracedValue> value = TracedValue::create(); 4067242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setString("sessionId", sessionId); 4077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci value->setDouble("workerThreadId", workerThread->platformThreadId()); 4087242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return value; 4097242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} 4107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 411f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu} 412