browser(webkit): abort interception if loader reached termial state (#2776)
This commit is contained in:
		
							parent
							
								
									55a07dbf4d
								
							
						
					
					
						commit
						c6df8fd507
					
				|  | @ -1 +1 @@ | |||
| 1294 | ||||
| 1295 | ||||
|  |  | |||
|  | @ -2614,7 +2614,7 @@ index ddbb5d5347f3beabe3cfab201d6838c896d21e39..25f1798cad5a4ef135a27d3bd5146798 | |||
|  class Page; | ||||
|  class SecurityOrigin; | ||||
| diff --git a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
 | ||||
| index 1ccc5f5de274bd263c8bec5c72fe417ea99534fd..5dac8d209b4d2f19eee3471ba4a3cd530a691b65 100644
 | ||||
| index 1ccc5f5de274bd263c8bec5c72fe417ea99534fd..f1c538d44e1a33dc4d5159007392c765cc3920e7 100644
 | ||||
| --- a/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
 | ||||
| +++ b/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
 | ||||
| @@ -44,6 +44,7 @@
 | ||||
|  | @ -2660,7 +2660,19 @@ index 1ccc5f5de274bd263c8bec5c72fe417ea99534fd..5dac8d209b4d2f19eee3471ba4a3cd53 | |||
|  } | ||||
|   | ||||
|  bool InspectorNetworkAgent::shouldInterceptRequest(const ResourceRequest& request) | ||||
| @@ -1291,6 +1298,8 @@ void InspectorNetworkAgent::interceptRequestWithResponse(ErrorString& errorStrin
 | ||||
| @@ -1179,6 +1186,11 @@ void InspectorNetworkAgent::interceptWithRequest(ErrorString& errorString, const
 | ||||
|      } | ||||
|   | ||||
|      auto& loader = *pendingRequest->m_loader; | ||||
| +    if (loader.reachedTerminalState()) {
 | ||||
| +        errorString = "Unable to intercept request, it has already been processed"_s;
 | ||||
| +        return;
 | ||||
| +    }
 | ||||
| +
 | ||||
|      ResourceRequest request = loader.request(); | ||||
|      if (url) | ||||
|          request.setURL(URL({ }, *url)); | ||||
| @@ -1291,6 +1303,8 @@ void InspectorNetworkAgent::interceptRequestWithResponse(ErrorString& errorStrin
 | ||||
|      response.setHTTPHeaderFields(WTFMove(explicitHeaders)); | ||||
|      response.setHTTPHeaderField(HTTPHeaderName::ContentType, response.mimeType()); | ||||
|      loader->didReceiveResponse(response, [loader, buffer = data.releaseNonNull()]() mutable { | ||||
|  | @ -2669,7 +2681,7 @@ index 1ccc5f5de274bd263c8bec5c72fe417ea99534fd..5dac8d209b4d2f19eee3471ba4a3cd53 | |||
|          if (buffer->size()) | ||||
|              loader->didReceiveBuffer(WTFMove(buffer), buffer->size(), DataPayloadWholeResource); | ||||
|          loader->didFinishLoading(NetworkLoadMetrics()); | ||||
| @@ -1335,6 +1344,11 @@ void InspectorNetworkAgent::interceptRequestWithError(ErrorString& errorString,
 | ||||
| @@ -1335,6 +1349,11 @@ void InspectorNetworkAgent::interceptRequestWithError(ErrorString& errorString,
 | ||||
|      loader.didFail(error); | ||||
|  } | ||||
|   | ||||
|  | @ -2681,7 +2693,7 @@ index 1ccc5f5de274bd263c8bec5c72fe417ea99534fd..5dac8d209b4d2f19eee3471ba4a3cd53 | |||
|  bool InspectorNetworkAgent::shouldTreatAsText(const String& mimeType) | ||||
|  { | ||||
|      return startsWithLettersIgnoringASCIICase(mimeType, "text/") | ||||
| @@ -1376,6 +1390,12 @@ Optional<String> InspectorNetworkAgent::textContentForCachedResource(CachedResou
 | ||||
| @@ -1376,6 +1395,12 @@ Optional<String> InspectorNetworkAgent::textContentForCachedResource(CachedResou
 | ||||
|      return WTF::nullopt; | ||||
|  } | ||||
|   | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue