Esempio n. 1
0
void InspectorResourceAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest& request)
{
    RefPtr<InspectorObject> requestObject = InspectorObject::create();
    requestObject->setObject("webSocketHeaderFields", buildObjectForHeaders(request.headerFields()));
    requestObject->setString("webSocketRequestKey3", createReadableStringFromBinary(request.key3().value, sizeof(request.key3().value)));
    m_frontend->willSendWebSocketHandshakeRequest(identifier, currentTime(), requestObject);
}
Esempio n. 2
0
void InspectorResourceAgent::willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest& request)
{
    RefPtr<TypeBuilder::Network::WebSocketRequest> requestObject = TypeBuilder::Network::WebSocketRequest::create()
        .setRequestKey3(createReadableStringFromBinary(request.key3().value, sizeof(request.key3().value)))
        .setHeaders(buildObjectForHeaders(request.headerFields()));
    m_frontend->webSocketWillSendHandshakeRequest(IdentifiersFactory::requestId(identifier), currentTime(), requestObject);
}
Esempio n. 3
0
void InspectorResourceAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse& response)
{
    RefPtr<InspectorObject> responseObject = InspectorObject::create();
    responseObject->setNumber("statusCode", response.statusCode());
    responseObject->setString("statusText", response.statusText());
    responseObject->setObject("webSocketHeaderFields", buildObjectForHeaders(response.headerFields()));
    responseObject->setString("webSocketChallengeResponse", createReadableStringFromBinary(response.challengeResponse().value, sizeof(response.challengeResponse().value)));
    m_frontend->didReceiveWebSocketHandshakeResponse(identifier, currentTime(), responseObject);
}
Esempio n. 4
0
void InspectorResourceAgent::didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse& response)
{
    RefPtr<TypeBuilder::Network::WebSocketResponse> responseObject = TypeBuilder::Network::WebSocketResponse::create()
        .setStatus(response.statusCode())
        .setStatusText(response.statusText())
        .setHeaders(buildObjectForHeaders(response.headerFields()))
        .setChallengeResponse(createReadableStringFromBinary(response.challengeResponse().value, sizeof(response.challengeResponse().value)));
    m_frontend->webSocketHandshakeResponseReceived(IdentifiersFactory::requestId(identifier), currentTime(), 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();
}