summaryrefslogtreecommitdiff
path: root/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp')
-rw-r--r--Source/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageResourceLoadClient.cpp15
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)