| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 #include "core/inspector/IdentifiersFactory.h" | 51 #include "core/inspector/IdentifiersFactory.h" |
| 52 #include "core/inspector/InspectedFrames.h" | 52 #include "core/inspector/InspectedFrames.h" |
| 53 #include "core/inspector/InstrumentingAgents.h" | 53 #include "core/inspector/InstrumentingAgents.h" |
| 54 #include "core/inspector/NetworkResourcesData.h" | 54 #include "core/inspector/NetworkResourcesData.h" |
| 55 #include "core/loader/DocumentLoader.h" | 55 #include "core/loader/DocumentLoader.h" |
| 56 #include "core/loader/FrameLoader.h" | 56 #include "core/loader/FrameLoader.h" |
| 57 #include "core/loader/MixedContentChecker.h" | 57 #include "core/loader/MixedContentChecker.h" |
| 58 #include "core/loader/ThreadableLoaderClient.h" | 58 #include "core/loader/ThreadableLoaderClient.h" |
| 59 #include "core/page/Page.h" | 59 #include "core/page/Page.h" |
| 60 #include "core/xmlhttprequest/XMLHttpRequest.h" | 60 #include "core/xmlhttprequest/XMLHttpRequest.h" |
| 61 #include "platform/JSONValues.h" | |
| 62 #include "platform/blob/BlobData.h" | 61 #include "platform/blob/BlobData.h" |
| 63 #include "platform/inspector_protocol/Frontend.h" | 62 #include "platform/inspector_protocol/Frontend.h" |
| 63 #include "platform/inspector_protocol/Values.h" |
| 64 #include "platform/network/HTTPHeaderMap.h" | 64 #include "platform/network/HTTPHeaderMap.h" |
| 65 #include "platform/network/ResourceError.h" | 65 #include "platform/network/ResourceError.h" |
| 66 #include "platform/network/ResourceLoadPriority.h" | 66 #include "platform/network/ResourceLoadPriority.h" |
| 67 #include "platform/network/ResourceLoadTiming.h" | 67 #include "platform/network/ResourceLoadTiming.h" |
| 68 #include "platform/network/ResourceRequest.h" | 68 #include "platform/network/ResourceRequest.h" |
| 69 #include "platform/network/ResourceResponse.h" | 69 #include "platform/network/ResourceResponse.h" |
| 70 #include "platform/network/WebSocketHandshakeRequest.h" | 70 #include "platform/network/WebSocketHandshakeRequest.h" |
| 71 #include "platform/network/WebSocketHandshakeResponse.h" | 71 #include "platform/network/WebSocketHandshakeResponse.h" |
| 72 #include "platform/weborigin/KURL.h" | 72 #include "platform/weborigin/KURL.h" |
| 73 #include "public/platform/WebURLRequest.h" | 73 #include "public/platform/WebURLRequest.h" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 104 pos = url.find(part, pos); | 104 pos = url.find(part, pos); |
| 105 if (pos == kNotFound) | 105 if (pos == kNotFound) |
| 106 return false; | 106 return false; |
| 107 pos += part.length(); | 107 pos += part.length(); |
| 108 } | 108 } |
| 109 return true; | 109 return true; |
| 110 } | 110 } |
| 111 | 111 |
| 112 static PassOwnPtr<protocol::Network::Headers> buildObjectForHeaders(const HTTPHe
aderMap& headers) | 112 static PassOwnPtr<protocol::Network::Headers> buildObjectForHeaders(const HTTPHe
aderMap& headers) |
| 113 { | 113 { |
| 114 RefPtr<JSONObject> headersObject = JSONObject::create(); | 114 RefPtr<protocol::DictionaryValue> headersObject = protocol::DictionaryValue:
:create(); |
| 115 for (const auto& header : headers) | 115 for (const auto& header : headers) |
| 116 headersObject->setString(header.key.string(), header.value); | 116 headersObject->setString(header.key.string(), header.value); |
| 117 protocol::ErrorSupport errors; | 117 protocol::ErrorSupport errors; |
| 118 return protocol::Network::Headers::parse(headersObject, &errors); | 118 return protocol::Network::Headers::parse(headersObject, &errors); |
| 119 } | 119 } |
| 120 | 120 |
| 121 class InspectorFileReaderLoaderClient final : public FileReaderLoaderClient { | 121 class InspectorFileReaderLoaderClient final : public FileReaderLoaderClient { |
| 122 WTF_MAKE_NONCOPYABLE(InspectorFileReaderLoaderClient); | 122 WTF_MAKE_NONCOPYABLE(InspectorFileReaderLoaderClient); |
| 123 public: | 123 public: |
| 124 InspectorFileReaderLoaderClient(PassRefPtr<BlobDataHandle> blob, PassOwnPtr<
TextResourceDecoder> decoder, PassRefPtr<GetResponseBodyCallback> callback) | 124 InspectorFileReaderLoaderClient(PassRefPtr<BlobDataHandle> blob, PassOwnPtr<
TextResourceDecoder> decoder, PassRefPtr<GetResponseBodyCallback> callback) |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 | 293 |
| 294 double status; | 294 double status; |
| 295 String statusText; | 295 String statusText; |
| 296 if (response.resourceLoadInfo() && response.resourceLoadInfo()->httpStatusCo
de) { | 296 if (response.resourceLoadInfo() && response.resourceLoadInfo()->httpStatusCo
de) { |
| 297 status = response.resourceLoadInfo()->httpStatusCode; | 297 status = response.resourceLoadInfo()->httpStatusCode; |
| 298 statusText = response.resourceLoadInfo()->httpStatusText; | 298 statusText = response.resourceLoadInfo()->httpStatusText; |
| 299 } else { | 299 } else { |
| 300 status = response.httpStatusCode(); | 300 status = response.httpStatusCode(); |
| 301 statusText = response.httpStatusText(); | 301 statusText = response.httpStatusText(); |
| 302 } | 302 } |
| 303 RefPtr<JSONObject> headers; | 303 RefPtr<protocol::DictionaryValue> headers; |
| 304 HTTPHeaderMap headersMap; | 304 HTTPHeaderMap headersMap; |
| 305 if (response.resourceLoadInfo() && response.resourceLoadInfo()->responseHead
ers.size()) | 305 if (response.resourceLoadInfo() && response.resourceLoadInfo()->responseHead
ers.size()) |
| 306 headersMap = response.resourceLoadInfo()->responseHeaders; | 306 headersMap = response.resourceLoadInfo()->responseHeaders; |
| 307 else | 307 else |
| 308 headersMap = response.httpHeaderFields(); | 308 headersMap = response.httpHeaderFields(); |
| 309 | 309 |
| 310 int64_t encodedDataLength = response.resourceLoadInfo() ? response.resourceL
oadInfo()->encodedDataLength : -1; | 310 int64_t encodedDataLength = response.resourceLoadInfo() ? response.resourceL
oadInfo()->encodedDataLength : -1; |
| 311 | 311 |
| 312 String securityState = protocol::Security::SecurityStateEnum::Unknown; | 312 String securityState = protocol::Security::SecurityStateEnum::Unknown; |
| 313 switch (response.securityStyle()) { | 313 switch (response.securityStyle()) { |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 visitor->trace(m_inspectedFrames); | 432 visitor->trace(m_inspectedFrames); |
| 433 visitor->trace(m_resourcesData); | 433 visitor->trace(m_resourcesData); |
| 434 visitor->trace(m_replayXHRs); | 434 visitor->trace(m_replayXHRs); |
| 435 visitor->trace(m_replayXHRsToBeDeleted); | 435 visitor->trace(m_replayXHRsToBeDeleted); |
| 436 visitor->trace(m_pendingXHRReplayData); | 436 visitor->trace(m_pendingXHRReplayData); |
| 437 InspectorBaseAgent::trace(visitor); | 437 InspectorBaseAgent::trace(visitor); |
| 438 } | 438 } |
| 439 | 439 |
| 440 bool InspectorResourceAgent::shouldBlockRequest(const ResourceRequest& request) | 440 bool InspectorResourceAgent::shouldBlockRequest(const ResourceRequest& request) |
| 441 { | 441 { |
| 442 RefPtr<JSONObject> blockedURLs = m_state->getObject(ResourceAgentState::bloc
kedURLs); | 442 RefPtr<protocol::DictionaryValue> blockedURLs = m_state->getObject(ResourceA
gentState::blockedURLs); |
| 443 if (!blockedURLs) | 443 if (!blockedURLs) |
| 444 return false; | 444 return false; |
| 445 String url = request.url().string(); | 445 String url = request.url().string(); |
| 446 for (const auto& entry : *blockedURLs) { | 446 for (const auto& entry : *blockedURLs) { |
| 447 if (matches(url, entry.key)) | 447 if (matches(url, entry.key)) |
| 448 return true; | 448 return true; |
| 449 } | 449 } |
| 450 return false; | 450 return false; |
| 451 } | 451 } |
| 452 | 452 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 | 495 |
| 496 void InspectorResourceAgent::willSendRequest(LocalFrame* frame, unsigned long id
entifier, DocumentLoader* loader, ResourceRequest& request, const ResourceRespon
se& redirectResponse, const FetchInitiatorInfo& initiatorInfo) | 496 void InspectorResourceAgent::willSendRequest(LocalFrame* frame, unsigned long id
entifier, DocumentLoader* loader, ResourceRequest& request, const ResourceRespon
se& redirectResponse, const FetchInitiatorInfo& initiatorInfo) |
| 497 { | 497 { |
| 498 // Ignore the request initiated internally. | 498 // Ignore the request initiated internally. |
| 499 if (initiatorInfo.name == FetchInitiatorTypeNames::internal) | 499 if (initiatorInfo.name == FetchInitiatorTypeNames::internal) |
| 500 return; | 500 return; |
| 501 | 501 |
| 502 if (initiatorInfo.name == FetchInitiatorTypeNames::document && loader->subst
ituteData().isValid()) | 502 if (initiatorInfo.name == FetchInitiatorTypeNames::document && loader->subst
ituteData().isValid()) |
| 503 return; | 503 return; |
| 504 | 504 |
| 505 RefPtr<JSONObject> headers = m_state->getObject(ResourceAgentState::extraReq
uestHeaders); | 505 RefPtr<protocol::DictionaryValue> headers = m_state->getObject(ResourceAgent
State::extraRequestHeaders); |
| 506 if (headers) { | 506 if (headers) { |
| 507 for (const auto& header : *headers) { | 507 for (const auto& header : *headers) { |
| 508 String value; | 508 String value; |
| 509 if (header.value->asString(&value)) | 509 if (header.value->asString(&value)) |
| 510 request.setHTTPHeaderField(AtomicString(header.key), AtomicStrin
g(value)); | 510 request.setHTTPHeaderField(AtomicString(header.key), AtomicStrin
g(value)); |
| 511 } | 511 } |
| 512 } | 512 } |
| 513 | 513 |
| 514 request.setReportRawHeaders(true); | 514 request.setReportRawHeaders(true); |
| 515 | 515 |
| (...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 } | 960 } |
| 961 | 961 |
| 962 if (getResponseBodyBlob(requestId, callback)) | 962 if (getResponseBodyBlob(requestId, callback)) |
| 963 return; | 963 return; |
| 964 | 964 |
| 965 callback->sendFailure("No data found for resource with given identifier"); | 965 callback->sendFailure("No data found for resource with given identifier"); |
| 966 } | 966 } |
| 967 | 967 |
| 968 void InspectorResourceAgent::addBlockedURL(ErrorString*, const String& url) | 968 void InspectorResourceAgent::addBlockedURL(ErrorString*, const String& url) |
| 969 { | 969 { |
| 970 RefPtr<JSONObject> blockedURLs = m_state->getObject(ResourceAgentState::bloc
kedURLs); | 970 RefPtr<protocol::DictionaryValue> blockedURLs = m_state->getObject(ResourceA
gentState::blockedURLs); |
| 971 if (!blockedURLs) { | 971 if (!blockedURLs) { |
| 972 blockedURLs = JSONObject::create(); | 972 blockedURLs = protocol::DictionaryValue::create(); |
| 973 m_state->setObject(ResourceAgentState::blockedURLs, blockedURLs); | 973 m_state->setObject(ResourceAgentState::blockedURLs, blockedURLs); |
| 974 } | 974 } |
| 975 blockedURLs->setBoolean(url, true); | 975 blockedURLs->setBoolean(url, true); |
| 976 } | 976 } |
| 977 | 977 |
| 978 void InspectorResourceAgent::removeBlockedURL(ErrorString*, const String& url) | 978 void InspectorResourceAgent::removeBlockedURL(ErrorString*, const String& url) |
| 979 { | 979 { |
| 980 RefPtr<JSONObject> blockedURLs = m_state->getObject(ResourceAgentState::bloc
kedURLs); | 980 RefPtr<protocol::DictionaryValue> blockedURLs = m_state->getObject(ResourceA
gentState::blockedURLs); |
| 981 if (blockedURLs) | 981 if (blockedURLs) |
| 982 blockedURLs->remove(url); | 982 blockedURLs->remove(url); |
| 983 } | 983 } |
| 984 | 984 |
| 985 void InspectorResourceAgent::replayXHR(ErrorString*, const String& requestId) | 985 void InspectorResourceAgent::replayXHR(ErrorString*, const String& requestId) |
| 986 { | 986 { |
| 987 String actualRequestId = requestId; | 987 String actualRequestId = requestId; |
| 988 | 988 |
| 989 XHRReplayData* xhrReplayData = m_resourcesData->xhrReplayData(requestId); | 989 XHRReplayData* xhrReplayData = m_resourcesData->xhrReplayData(requestId); |
| 990 if (!xhrReplayData) | 990 if (!xhrReplayData) |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1102 , m_removeFinishedReplayXHRTimer(this, &InspectorResourceAgent::removeFinish
edReplayXHRFired) | 1102 , m_removeFinishedReplayXHRTimer(this, &InspectorResourceAgent::removeFinish
edReplayXHRFired) |
| 1103 { | 1103 { |
| 1104 } | 1104 } |
| 1105 | 1105 |
| 1106 bool InspectorResourceAgent::shouldForceCORSPreflight() | 1106 bool InspectorResourceAgent::shouldForceCORSPreflight() |
| 1107 { | 1107 { |
| 1108 return m_state->booleanProperty(ResourceAgentState::cacheDisabled, false); | 1108 return m_state->booleanProperty(ResourceAgentState::cacheDisabled, false); |
| 1109 } | 1109 } |
| 1110 | 1110 |
| 1111 } // namespace blink | 1111 } // namespace blink |
| OLD | NEW |