Index: Source/core/inspector/InspectorResourceAgent.cpp |
diff --git a/Source/core/inspector/InspectorResourceAgent.cpp b/Source/core/inspector/InspectorResourceAgent.cpp |
index 5e9bb99b48a926f1341e2bb93bdf03bae12cbc63..cf09e504e870ffed6c7851fa5f9d556b5baf03e2 100644 |
--- a/Source/core/inspector/InspectorResourceAgent.cpp |
+++ b/Source/core/inspector/InspectorResourceAgent.cpp |
@@ -193,6 +193,24 @@ TypeBuilder::Network::Request::MixedContentType::Enum mixedContentTypeForContext |
return TypeBuilder::Network::Request::MixedContentType::None; |
} |
+TypeBuilder::Network::BlockedReason::Enum buildBlockedReason(InspectorRequestBlockedReason reason) |
+{ |
+ switch (reason) { |
+ case InspectorRequestBlockedReasonCSP: |
+ return TypeBuilder::Network::BlockedReason::Enum::Csp; |
+ case InspectorRequestBlockedReasonMixedContent: |
+ return TypeBuilder::Network::BlockedReason::Enum::Mixed_content; |
+ case InspectorRequestBlockedReasonOrigin: |
+ return TypeBuilder::Network::BlockedReason::Enum::Origin; |
+ case InspectorRequestBlockedReasonInspector: |
+ return TypeBuilder::Network::BlockedReason::Enum::Inspector; |
+ case InspectorRequestBlockedReasonOther: |
+ case InspectorRequestBlockedReasonNone: |
+ return TypeBuilder::Network::BlockedReason::Enum::Other; |
+ } |
+ return TypeBuilder::Network::BlockedReason::Enum::Other; |
+} |
+ |
} // namespace |
void InspectorResourceAgent::restore() |
@@ -366,24 +384,27 @@ DEFINE_TRACE(InspectorResourceAgent) |
InspectorBaseAgent::trace(visitor); |
} |
-bool InspectorResourceAgent::shouldBlockRequest(LocalFrame* frame, const ResourceRequest& request, DocumentLoader* loader, const FetchInitiatorInfo& initiatorInfo) |
+bool InspectorResourceAgent::shouldBlockRequest(const ResourceRequest& request) |
{ |
String url = request.url().string(); |
RefPtr<JSONObject> blockedURLs = m_state->getObject(ResourceAgentState::blockedURLs); |
for (const auto& entry : *blockedURLs) { |
- if (url.contains(entry.key)) { |
- unsigned long identifier = createUniqueIdentifier(); |
- willSendRequestInternal(frame, identifier, loader, request, ResourceResponse(), initiatorInfo); |
- |
- String requestId = IdentifiersFactory::requestId(identifier); |
- bool blocked = true; |
- frontend()->loadingFailed(requestId, monotonicallyIncreasingTime(), InspectorPageAgent::resourceTypeJson(m_resourcesData->resourceType(requestId)), String(), nullptr, &blocked); |
+ if (url.contains(entry.key)) |
return true; |
- } |
} |
return false; |
} |
+void InspectorResourceAgent::didBlockRequest(LocalFrame* frame, const ResourceRequest& request, DocumentLoader* loader, const FetchInitiatorInfo& initiatorInfo, InspectorRequestBlockedReason reason) |
+{ |
+ unsigned long identifier = createUniqueIdentifier(); |
+ willSendRequestInternal(frame, identifier, loader, request, ResourceResponse(), initiatorInfo); |
+ |
+ String requestId = IdentifiersFactory::requestId(identifier); |
+ TypeBuilder::Network::BlockedReason::Enum protocolReason = buildBlockedReason(reason); |
+ frontend()->loadingFailed(requestId, monotonicallyIncreasingTime(), InspectorPageAgent::resourceTypeJson(m_resourcesData->resourceType(requestId)), String(), nullptr, &protocolReason); |
+} |
+ |
void InspectorResourceAgent::willSendRequestInternal(LocalFrame* frame, unsigned long identifier, DocumentLoader* loader, const ResourceRequest& request, const ResourceResponse& redirectResponse, const FetchInitiatorInfo& initiatorInfo) |
{ |
String requestId = IdentifiersFactory::requestId(identifier); |