static PassRefPtr<InspectorObject> buildObjectForResourceResponse(const ResourceResponse& response) { RefPtr<InspectorObject> responseObject = InspectorObject::create(); if (response.isNull()) { responseObject->setBoolean("isNull", true); return responseObject; } responseObject->setString("url", response.url().string()); responseObject->setString("mimeType", response.mimeType()); responseObject->setNumber("expectedContentLength", response.expectedContentLength()); responseObject->setString("textEncodingName", response.textEncodingName()); responseObject->setString("suggestedFilename", response.suggestedFilename()); responseObject->setNumber("httpStatusCode", response.httpStatusCode()); responseObject->setString("httpStatusText", response.httpStatusText()); responseObject->setObject("httpHeaderFields", buildObjectForHeaders(response.httpHeaderFields())); responseObject->setBoolean("connectionReused", response.connectionReused()); responseObject->setNumber("connectionID", response.connectionID()); responseObject->setBoolean("wasCached", response.wasCached()); if (response.resourceLoadTiming()) responseObject->setObject("timing", buildObjectForTiming(*response.resourceLoadTiming())); if (response.resourceLoadInfo()) { RefPtr<InspectorObject> loadInfoObject = InspectorObject::create(); loadInfoObject->setNumber("httpStatusCode", response.resourceLoadInfo()->httpStatusCode); loadInfoObject->setString("httpStatusText", response.resourceLoadInfo()->httpStatusText); loadInfoObject->setObject("requestHeaders", buildObjectForHeaders(response.resourceLoadInfo()->requestHeaders)); loadInfoObject->setObject("responseHeaders", buildObjectForHeaders(response.resourceLoadInfo()->responseHeaders)); responseObject->setObject("loadInfo", loadInfoObject); } return responseObject; }
void InspectorResource::updateResponse(const ResourceResponse& response) { m_expectedContentLength = response.expectedContentLength(); m_mimeType = response.mimeType(); if (m_mimeType.isEmpty() && response.httpStatusCode() == 304) { CachedResource* cachedResource = cache()->resourceForURL(response.url().string()); if (cachedResource) m_mimeType = cachedResource->response().mimeType(); } m_responseHeaderFields = response.httpHeaderFields(); m_responseStatusCode = response.httpStatusCode(); m_responseStatusText = response.httpStatusText(); m_suggestedFilename = response.suggestedFilename(); m_connectionID = response.connectionID(); m_connectionReused = response.connectionReused(); m_loadTiming = response.resourceLoadTiming(); m_cached = response.wasCached(); if (!m_cached && m_loadTiming && m_loadTiming->requestTime) m_responseReceivedTime = m_loadTiming->requestTime + m_loadTiming->receiveHeadersEnd / 1000.0; else m_responseReceivedTime = currentTime(); m_changes.set(TimingChange); m_changes.set(ResponseChange); m_changes.set(TypeChange); }
static PassRefPtr<InspectorObject> buildObjectForResourceResponse(const ResourceResponse& response, DocumentLoader* loader) { if (response.isNull()) return 0; RefPtr<InspectorObject> responseObject = InspectorObject::create(); responseObject->setString("url", response.url().string()); if (response.resourceLoadInfo() && response.resourceLoadInfo()->httpStatusCode) { responseObject->setNumber("status", response.resourceLoadInfo()->httpStatusCode); responseObject->setString("statusText", response.resourceLoadInfo()->httpStatusText); } else { responseObject->setNumber("status", response.httpStatusCode()); responseObject->setString("statusText", response.httpStatusText()); } responseObject->setString("mimeType", response.mimeType()); responseObject->setBoolean("connectionReused", response.connectionReused()); responseObject->setNumber("connectionId", response.connectionID()); responseObject->setBoolean("fromDiskCache", response.wasCached()); if (response.resourceLoadTiming()) responseObject->setObject("timing", buildObjectForTiming(*response.resourceLoadTiming(), loader)); if (response.resourceLoadInfo()) { responseObject->setObject("headers", buildObjectForHeaders(response.resourceLoadInfo()->responseHeaders)); if (!response.resourceLoadInfo()->responseHeadersText.isEmpty()) responseObject->setString("headersText", response.resourceLoadInfo()->responseHeadersText); responseObject->setObject("requestHeaders", buildObjectForHeaders(response.resourceLoadInfo()->requestHeaders)); if (!response.resourceLoadInfo()->requestHeadersText.isEmpty()) responseObject->setString("requestHeadersText", response.resourceLoadInfo()->requestHeadersText); } else responseObject->setObject("headers", buildObjectForHeaders(response.httpHeaderFields())); return responseObject; }
PerformanceResourceTiming::PerformanceResourceTiming(const AtomicString& initiatorType, const ResourceRequest& request, const ResourceResponse& response, double initiationTime, double finishTime, Document* requestingDocument) : PerformanceEntry(request.url().string(), "resource", monotonicTimeToDocumentMilliseconds(requestingDocument, initiationTime), monotonicTimeToDocumentMilliseconds(requestingDocument, finishTime)) , m_initiatorType(initiatorType) , m_timing(response.resourceLoadTiming()) , m_finishTime(finishTime) , m_didReuseConnection(response.connectionReused()) , m_shouldReportDetails(passesTimingAllowCheck(response, requestingDocument)) , m_requestingDocument(requestingDocument) { }
static PassRefPtr<TypeBuilder::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, DocumentLoader* loader) { if (response.isNull()) return 0; double status; String statusText; if (response.resourceLoadInfo() && response.resourceLoadInfo()->httpStatusCode) { status = response.resourceLoadInfo()->httpStatusCode; statusText = response.resourceLoadInfo()->httpStatusText; } else { status = response.httpStatusCode(); statusText = response.httpStatusText(); } RefPtr<InspectorObject> headers; if (response.resourceLoadInfo()) headers = buildObjectForHeaders(response.resourceLoadInfo()->responseHeaders); else headers = buildObjectForHeaders(response.httpHeaderFields()); RefPtr<TypeBuilder::Network::Response> responseObject = TypeBuilder::Network::Response::create() .setUrl(response.url().string()) .setStatus(status) .setStatusText(statusText) .setHeaders(headers) .setMimeType(response.mimeType()) .setConnectionReused(response.connectionReused()) .setConnectionId(response.connectionID()); responseObject->setFromDiskCache(response.wasCached()); if (response.resourceLoadTiming()) responseObject->setTiming(buildObjectForTiming(*response.resourceLoadTiming(), loader)); if (response.resourceLoadInfo()) { if (!response.resourceLoadInfo()->responseHeadersText.isEmpty()) responseObject->setHeadersText(response.resourceLoadInfo()->responseHeadersText); responseObject->setRequestHeaders(buildObjectForHeaders(response.resourceLoadInfo()->requestHeaders)); if (!response.resourceLoadInfo()->requestHeadersText.isEmpty()) responseObject->setRequestHeadersText(response.resourceLoadInfo()->requestHeadersText); } return responseObject; }
static PassRefPtr<Inspector::Protocol::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, DocumentLoader* loader) { if (response.isNull()) return nullptr; double status = response.httpStatusCode(); RefPtr<InspectorObject> headers = buildObjectForHeaders(response.httpHeaderFields()); RefPtr<Inspector::Protocol::Network::Response> responseObject = Inspector::Protocol::Network::Response::create() .setUrl(response.url().string()) .setStatus(status) .setStatusText(response.httpStatusText()) .setHeaders(headers) .setMimeType(response.mimeType()) .setConnectionReused(response.connectionReused()) .setConnectionId(response.connectionID()); responseObject->setFromDiskCache(response.wasCached()); responseObject->setTiming(buildObjectForTiming(response.resourceLoadTiming(), loader)); return responseObject; }