/* * Copyright (C) 2009 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" #include "TimelineRecordFactory.h" #if ENABLE(INSPECTOR) #include "Event.h" #include "InspectorValues.h" #include "IntRect.h" #include "ResourceRequest.h" #include "ResourceResponse.h" #include "ScriptCallStack.h" #include "ScriptCallStackFactory.h" namespace WebCore { PassRefPtr TimelineRecordFactory::createGenericRecord(double startTime) { RefPtr record = InspectorObject::create(); record->setNumber("startTime", startTime); RefPtr stackTrace = createScriptCallStack(5, true); if (stackTrace && stackTrace->size()) record->setArray("stackTrace", stackTrace->buildInspectorArray()); return record.release(); } PassRefPtr TimelineRecordFactory::createGCEventData(const size_t usedHeapSizeDelta) { RefPtr data = InspectorObject::create(); data->setNumber("usedHeapSizeDelta", usedHeapSizeDelta); return data.release(); } PassRefPtr TimelineRecordFactory::createFunctionCallData(const String& scriptName, int scriptLine) { RefPtr data = InspectorObject::create(); data->setString("scriptName", scriptName); data->setNumber("scriptLine", scriptLine); return data.release(); } PassRefPtr TimelineRecordFactory::createEventDispatchData(const Event& event) { RefPtr data = InspectorObject::create(); data->setString("type", event.type().string()); return data.release(); } PassRefPtr TimelineRecordFactory::createGenericTimerData(int timerId) { RefPtr data = InspectorObject::create(); data->setNumber("timerId", timerId); return data.release(); } PassRefPtr TimelineRecordFactory::createTimerInstallData(int timerId, int timeout, bool singleShot) { RefPtr data = InspectorObject::create(); data->setNumber("timerId", timerId); data->setNumber("timeout", timeout); data->setBoolean("singleShot", singleShot); return data.release(); } PassRefPtr TimelineRecordFactory::createXHRReadyStateChangeData(const String& url, int readyState) { RefPtr data = InspectorObject::create(); data->setString("url", url); data->setNumber("readyState", readyState); return data.release(); } PassRefPtr TimelineRecordFactory::createXHRLoadData(const String& url) { RefPtr data = InspectorObject::create(); data->setString("url", url); return data.release(); } PassRefPtr TimelineRecordFactory::createEvaluateScriptData(const String& url, double lineNumber) { RefPtr data = InspectorObject::create(); data->setString("url", url); data->setNumber("lineNumber", lineNumber); return data.release(); } PassRefPtr TimelineRecordFactory::createMarkTimelineData(const String& message) { RefPtr data = InspectorObject::create(); data->setString("message", message); return data.release(); } PassRefPtr TimelineRecordFactory::createScheduleResourceRequestData(const String& url) { RefPtr data = InspectorObject::create(); data->setString("url", url); return data.release(); } PassRefPtr TimelineRecordFactory::createResourceSendRequestData(unsigned long identifier, const ResourceRequest& request) { RefPtr data = InspectorObject::create(); data->setNumber("identifier", identifier); data->setString("url", request.url().string()); data->setString("requestMethod", request.httpMethod()); return data.release(); } PassRefPtr TimelineRecordFactory::createResourceReceiveResponseData(unsigned long identifier, const ResourceResponse& response) { RefPtr data = InspectorObject::create(); data->setNumber("identifier", identifier); data->setNumber("statusCode", response.httpStatusCode()); data->setString("mimeType", response.mimeType()); return data.release(); } PassRefPtr TimelineRecordFactory::createResourceFinishData(unsigned long identifier, bool didFail, double finishTime) { RefPtr data = InspectorObject::create(); data->setNumber("identifier", identifier); data->setBoolean("didFail", didFail); if (finishTime) data->setNumber("networkTime", finishTime); return data.release(); } PassRefPtr TimelineRecordFactory::createReceiveResourceData(unsigned long identifier) { RefPtr data = InspectorObject::create(); data->setNumber("identifier", identifier); return data.release(); } PassRefPtr TimelineRecordFactory::createPaintData(const IntRect& rect) { RefPtr data = InspectorObject::create(); data->setNumber("x", rect.x()); data->setNumber("y", rect.y()); data->setNumber("width", rect.width()); data->setNumber("height", rect.height()); return data.release(); } PassRefPtr TimelineRecordFactory::createParseHTMLData(unsigned int length, unsigned int startLine) { RefPtr data = InspectorObject::create(); data->setNumber("length", length); data->setNumber("startLine", startLine); return data.release(); } } // namespace WebCore #endif // ENABLE(INSPECTOR)