2 * Copyright (C) 2009 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above
11 * copyright notice, this list of conditions and the following disclaimer
12 * in the documentation and/or other materials provided with the
14 * * Neither the name of Google Inc. nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #include "TimelineRecordFactory.h"
37 #include "InspectorValues.h"
39 #include "ResourceRequest.h"
40 #include "ResourceResponse.h"
41 #include "ScriptCallStack.h"
42 #include "ScriptCallStackFactory.h"
46 PassRefPtr<InspectorObject> TimelineRecordFactory::createGenericRecord(double startTime, int maxCallStackDepth)
48 RefPtr<InspectorObject> record = InspectorObject::create();
49 record->setNumber("startTime", startTime);
51 RefPtr<ScriptCallStack> stackTrace = createScriptCallStack(maxCallStackDepth, true);
52 if (stackTrace && stackTrace->size())
53 record->setArray("stackTrace", stackTrace->buildInspectorArray());
54 return record.release();
57 PassRefPtr<InspectorObject> TimelineRecordFactory::createGCEventData(const size_t usedHeapSizeDelta)
59 RefPtr<InspectorObject> data = InspectorObject::create();
60 data->setNumber("usedHeapSizeDelta", usedHeapSizeDelta);
61 return data.release();
64 PassRefPtr<InspectorObject> TimelineRecordFactory::createFunctionCallData(const String& scriptName, int scriptLine)
66 RefPtr<InspectorObject> data = InspectorObject::create();
67 data->setString("scriptName", scriptName);
68 data->setNumber("scriptLine", scriptLine);
69 return data.release();
72 PassRefPtr<InspectorObject> TimelineRecordFactory::createEventDispatchData(const Event& event)
74 RefPtr<InspectorObject> data = InspectorObject::create();
75 data->setString("type", event.type().string());
76 return data.release();
79 PassRefPtr<InspectorObject> TimelineRecordFactory::createGenericTimerData(int timerId)
81 RefPtr<InspectorObject> data = InspectorObject::create();
82 data->setNumber("timerId", timerId);
83 return data.release();
86 PassRefPtr<InspectorObject> TimelineRecordFactory::createTimerInstallData(int timerId, int timeout, bool singleShot)
88 RefPtr<InspectorObject> data = InspectorObject::create();
89 data->setNumber("timerId", timerId);
90 data->setNumber("timeout", timeout);
91 data->setBoolean("singleShot", singleShot);
92 return data.release();
95 PassRefPtr<InspectorObject> TimelineRecordFactory::createXHRReadyStateChangeData(const String& url, int readyState)
97 RefPtr<InspectorObject> data = InspectorObject::create();
98 data->setString("url", url);
99 data->setNumber("readyState", readyState);
100 return data.release();
103 PassRefPtr<InspectorObject> TimelineRecordFactory::createXHRLoadData(const String& url)
105 RefPtr<InspectorObject> data = InspectorObject::create();
106 data->setString("url", url);
107 return data.release();
110 PassRefPtr<InspectorObject> TimelineRecordFactory::createEvaluateScriptData(const String& url, double lineNumber)
112 RefPtr<InspectorObject> data = InspectorObject::create();
113 data->setString("url", url);
114 data->setNumber("lineNumber", lineNumber);
115 return data.release();
118 PassRefPtr<InspectorObject> TimelineRecordFactory::createTimeStampData(const String& message)
120 RefPtr<InspectorObject> data = InspectorObject::create();
121 data->setString("message", message);
122 return data.release();
125 PassRefPtr<InspectorObject> TimelineRecordFactory::createScheduleResourceRequestData(const String& url)
127 RefPtr<InspectorObject> data = InspectorObject::create();
128 data->setString("url", url);
129 return data.release();
132 PassRefPtr<InspectorObject> TimelineRecordFactory::createResourceSendRequestData(const String& requestId, const ResourceRequest& request)
134 RefPtr<InspectorObject> data = InspectorObject::create();
135 data->setString("requestId", requestId);
136 data->setString("url", request.url().string());
137 data->setString("requestMethod", request.httpMethod());
138 return data.release();
141 PassRefPtr<InspectorObject> TimelineRecordFactory::createResourceReceiveResponseData(const String& requestId, const ResourceResponse& response)
143 RefPtr<InspectorObject> data = InspectorObject::create();
144 data->setString("requestId", requestId);
145 data->setNumber("statusCode", response.httpStatusCode());
146 data->setString("mimeType", response.mimeType());
147 return data.release();
150 PassRefPtr<InspectorObject> TimelineRecordFactory::createResourceFinishData(const String& requestId, bool didFail, double finishTime)
152 RefPtr<InspectorObject> data = InspectorObject::create();
153 data->setString("requestId", requestId);
154 data->setBoolean("didFail", didFail);
156 data->setNumber("networkTime", finishTime);
157 return data.release();
160 PassRefPtr<InspectorObject> TimelineRecordFactory::createReceiveResourceData(const String& requestId)
162 RefPtr<InspectorObject> data = InspectorObject::create();
163 data->setString("requestId", requestId);
164 return data.release();
167 PassRefPtr<InspectorObject> TimelineRecordFactory::createPaintData(const LayoutRect& rect)
169 RefPtr<InspectorObject> data = InspectorObject::create();
170 data->setNumber("x", rect.x());
171 data->setNumber("y", rect.y());
172 data->setNumber("width", rect.width());
173 data->setNumber("height", rect.height());
174 return data.release();
177 PassRefPtr<InspectorObject> TimelineRecordFactory::createParseHTMLData(unsigned int length, unsigned int startLine)
179 RefPtr<InspectorObject> data = InspectorObject::create();
180 data->setNumber("length", length);
181 data->setNumber("startLine", startLine);
182 return data.release();
185 PassRefPtr<InspectorObject> TimelineRecordFactory::createAnimationFrameCallbackData(int callbackId)
187 RefPtr<InspectorObject> data = InspectorObject::create();
188 data->setNumber("id", callbackId);
189 return data.release();
192 } // namespace WebCore
194 #endif // ENABLE(INSPECTOR)