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; }
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; }
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 RefPtr<Inspector::Protocol::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, DocumentLoader* loader) { if (response.isNull()) return nullptr; double status = response.httpStatusCode(); Ref<InspectorObject> headers = buildObjectForHeaders(response.httpHeaderFields()); auto responseObject = Inspector::Protocol::Network::Response::create() .setUrl(response.url().string()) .setStatus(status) .setStatusText(response.httpStatusText()) .setHeaders(WTFMove(headers)) .setMimeType(response.mimeType()) .release(); responseObject->setFromDiskCache(response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation); responseObject->setTiming(buildObjectForTiming(response.networkLoadTiming(), loader)); return WTFMove(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; }
void InspectorResource::updateScriptObject(InspectorFrontend* frontend) { if (m_changes.hasChange(NoChange)) return; RefPtr<InspectorObject> jsonObject = InspectorObject::create(); jsonObject->setNumber("id", m_identifier); if (m_changes.hasChange(RequestChange)) { if (m_frame) m_documentURL = m_frame->document()->url(); jsonObject->setString("url", m_requestURL.string()); jsonObject->setString("documentURL", m_documentURL.string()); jsonObject->setString("host", m_requestURL.host()); jsonObject->setString("path", m_requestURL.path()); jsonObject->setString("lastPathComponent", m_requestURL.lastPathComponent()); RefPtr<InspectorObject> requestHeaders = buildHeadersObject(m_requestHeaderFields); jsonObject->setObject("requestHeaders", requestHeaders); jsonObject->setBoolean("mainResource", m_isMainResource); jsonObject->setString("requestMethod", m_requestMethod); jsonObject->setString("requestFormData", m_requestFormData); jsonObject->setBoolean("didRequestChange", true); #if ENABLE(WEB_SOCKETS) if (m_webSocketRequestKey3) jsonObject->setString("webSocketRequestKey3", createReadableStringFromBinary(m_webSocketRequestKey3->value, sizeof(m_webSocketRequestKey3->value))); #endif } if (m_changes.hasChange(ResponseChange)) { jsonObject->setString("mimeType", m_mimeType); jsonObject->setString("suggestedFilename", m_suggestedFilename); jsonObject->setNumber("expectedContentLength", m_expectedContentLength); jsonObject->setNumber("statusCode", m_responseStatusCode); jsonObject->setString("statusText", m_responseStatusText); RefPtr<InspectorObject> responseHeaders = buildHeadersObject(m_responseHeaderFields); jsonObject->setObject("responseHeaders", responseHeaders); jsonObject->setNumber("connectionID", m_connectionID); jsonObject->setBoolean("connectionReused", m_connectionReused); jsonObject->setBoolean("cached", m_cached); if (m_loadTiming && !m_cached) jsonObject->setObject("timing", buildObjectForTiming(m_loadTiming.get())); #if ENABLE(WEB_SOCKETS) if (m_webSocketChallengeResponse) jsonObject->setString("webSocketChallengeResponse", createReadableStringFromBinary(m_webSocketChallengeResponse->value, sizeof(m_webSocketChallengeResponse->value))); #endif jsonObject->setBoolean("didResponseChange", true); } if (m_changes.hasChange(TypeChange)) { jsonObject->setNumber("type", static_cast<int>(type())); jsonObject->setBoolean("didTypeChange", true); } if (m_changes.hasChange(LengthChange)) { jsonObject->setNumber("resourceSize", m_length); jsonObject->setBoolean("didLengthChange", true); } if (m_changes.hasChange(CompletionChange)) { jsonObject->setBoolean("failed", m_failed); jsonObject->setBoolean("finished", m_finished); jsonObject->setBoolean("didCompletionChange", true); } if (m_changes.hasChange(TimingChange)) { if (m_startTime > 0) jsonObject->setNumber("startTime", m_startTime); if (m_responseReceivedTime > 0) jsonObject->setNumber("responseReceivedTime", m_responseReceivedTime); if (m_endTime > 0) jsonObject->setNumber("endTime", m_endTime); if (m_loadEventTime > 0) jsonObject->setNumber("loadEventTime", m_loadEventTime); if (m_domContentEventTime > 0) jsonObject->setNumber("domContentEventTime", m_domContentEventTime); jsonObject->setBoolean("didTimingChange", true); } if (m_changes.hasChange(RedirectsChange)) { for (size_t i = 0; i < m_redirects.size(); ++i) m_redirects[i]->updateScriptObject(frontend); } frontend->updateResource(jsonObject); m_changes.clearAll(); }