diff options
Diffstat (limited to 'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp')
-rw-r--r-- | Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp index 800b40790..132e26dc8 100644 --- a/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp +++ b/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp @@ -28,6 +28,8 @@ #include "WKAPICast.h" #include "WKBundleAPICast.h" +#include "WebFrame.h" +#include "WebPage.h" using namespace WebCore; @@ -47,10 +49,15 @@ void InjectedBundlePageResourceLoadClient::willSendRequestForFrame(WebPage* page return; RefPtr<API::URLRequest> returnedRequest = adoptRef(toImpl(m_client.willSendRequestForFrame(toAPI(page), toAPI(frame), identifier, toAPI(request), toAPI(redirectResponse), m_client.base.clientInfo))); - if (returnedRequest) - request.updateFromDelegatePreservingOldHTTPBody(returnedRequest->resourceRequest()); - else - request = ResourceRequest(); + if (returnedRequest) { + // If the client returned an HTTP body, we want to use that http body. This is needed to fix <rdar://problem/23763584> + auto& returnedResourceRequest = returnedRequest->resourceRequest(); + RefPtr<FormData> returnedHTTPBody = returnedResourceRequest.httpBody(); + request.updateFromDelegatePreservingOldProperties(returnedResourceRequest); + if (returnedHTTPBody) + request.setHTTPBody(WTFMove(returnedHTTPBody)); + } else + request = { }; } void InjectedBundlePageResourceLoadClient::didReceiveResponseForResource(WebPage* page, WebFrame* frame, uint64_t identifier, const WebCore::ResourceResponse& response) |