Diff
Modified: trunk/Source/WebCore/ChangeLog (201707 => 201708)
--- trunk/Source/WebCore/ChangeLog 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/ChangeLog 2016-06-06 08:25:16 UTC (rev 201708)
@@ -1,3 +1,67 @@
+2016-06-06 Alex Christensen <[email protected]>
+
+ Reduce ResourceRequest copying in loading code
+ https://bugs.webkit.org/show_bug.cgi?id=158251
+
+ Reviewed by Darin Adler.
+
+ No new tests. There should be no change in behavior except fewer unnecessary copies.
+ Before, we would pass a const ResourceRequest& around, and if we needed to modify it
+ we would copy the whole thing, modify the copy, and pass the copy along. This can be
+ accomplished with move semantics without the now-unnecessary copy.
+
+ The biggest conceptual change is that the synchronous ResourceHandleClient::willSendRequest
+ used to take a non-const ResourceRequest& and modify it, but now it returns a modified
+ ResourceRequest instead.
+
+ * loader/ResourceLoader.cpp:
+ (WebCore::ResourceLoader::cannotShowURLError):
+ (WebCore::ResourceLoader::willSendRequest):
+ (WebCore::ResourceLoader::didSendData):
+ * loader/ResourceLoader.h:
+ * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+ (ResourceHandleStreamingClient::getOrCreateReadBuffer):
+ (ResourceHandleStreamingClient::willSendRequest):
+ (ResourceHandleStreamingClient::didReceiveResponse):
+ * platform/network/ResourceHandle.h:
+ * platform/network/ResourceHandleClient.cpp:
+ (WebCore::ResourceHandleClient::~ResourceHandleClient):
+ (WebCore::ResourceHandleClient::willSendRequest):
+ (WebCore::ResourceHandleClient::willSendRequestAsync):
+ (WebCore::ResourceHandleClient::didReceiveResponseAsync):
+ * platform/network/ResourceHandleClient.h:
+ (WebCore::ResourceHandleClient::didSendData):
+ (WebCore::ResourceHandleClient::didReceiveResponse):
+ (WebCore::ResourceHandleClient::loadingSynchronousXHR):
+ (WebCore::ResourceHandleClient::willSendRequest): Deleted.
+ * platform/network/SynchronousLoaderClient.cpp:
+ (WebCore::SynchronousLoaderClient::~SynchronousLoaderClient):
+ (WebCore::SynchronousLoaderClient::willSendRequest):
+ (WebCore::SynchronousLoaderClient::shouldUseCredentialStorage):
+ * platform/network/SynchronousLoaderClient.h:
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::cancel):
+ (WebCore::ResourceHandle::willSendRequest):
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
+ * platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
+ (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::platformLoadResourceSynchronously):
+ (WebCore::ResourceHandle::willSendRequest):
+ (WebCore::ResourceHandle::continueWillSendRequest):
+ * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
+ (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]):
+ (-[WebCoreResourceHandleAsDelegate connectionShouldUseCredentialStorage:]):
+ * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
+ (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::shouldRedirectAsGET):
+ (WebCore::continueAfterWillSendRequest):
+ (WebCore::readCallback):
+ (WebCore::ResourceHandle::continueWillSendRequest):
+ (WebCore::ResourceHandle::continueDidReceiveResponse):
+
2016-06-05 Sam Weinig <[email protected]>
Add experimental support for spring based CSS animations
Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (201707 => 201708)
--- trunk/Source/WebCore/loader/ResourceLoader.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -607,11 +607,12 @@
return frameLoader()->client().cannotShowURLError(m_request);
}
-void ResourceLoader::willSendRequest(ResourceHandle*, ResourceRequest& request, const ResourceResponse& redirectResponse)
+ResourceRequest ResourceLoader::willSendRequest(ResourceHandle*, ResourceRequest&& request, ResourceResponse&& redirectResponse)
{
if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForRedirect(this, request, redirectResponse))
- return;
+ return WTFMove(request);
willSendRequestInternal(request, redirectResponse);
+ return WTFMove(request);
}
void ResourceLoader::didSendData(ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
Modified: trunk/Source/WebCore/loader/ResourceLoader.h (201707 => 201708)
--- trunk/Source/WebCore/loader/ResourceLoader.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/loader/ResourceLoader.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -183,7 +183,7 @@
void finishNetworkLoad();
// ResourceHandleClient
- void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse& redirectResponse) override;
+ ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&& redirectResponse) override;
void didSendData(ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
void didReceiveData(ResourceHandle*, const char*, unsigned, int encodedDataLength) override;
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -95,7 +95,7 @@
#if USE(SOUP)
char* getOrCreateReadBuffer(size_t requestedSize, size_t& actualSize) override;
#endif
- void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse&) override;
+ ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
void didReceiveData(ResourceHandle*, const char*, unsigned, int) override;
void didReceiveBuffer(ResourceHandle*, PassRefPtr<SharedBuffer>, int encodedLength) override;
@@ -1085,8 +1085,9 @@
}
#endif
-void ResourceHandleStreamingClient::willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse&)
+ResourceRequest ResourceHandleStreamingClient::willSendRequest(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&)
{
+ return WTFMove(request);
}
void ResourceHandleStreamingClient::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
Modified: trunk/Source/WebCore/platform/network/ResourceHandle.h (201707 => 201708)
--- trunk/Source/WebCore/platform/network/ResourceHandle.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/ResourceHandle.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -105,7 +105,7 @@
WEBCORE_EXPORT virtual ~ResourceHandle();
#if PLATFORM(COCOA) || USE(CFNETWORK)
- void willSendRequest(ResourceRequest&, const ResourceResponse& redirectResponse);
+ ResourceRequest willSendRequest(ResourceRequest&&, ResourceResponse&&);
#endif
#if PLATFORM(COCOA) || USE(CFNETWORK) || USE(CURL) || USE(SOUP)
@@ -202,7 +202,7 @@
WEBCORE_EXPORT void clearClient();
// Called in response to ResourceHandleClient::willSendRequestAsync().
- WEBCORE_EXPORT void continueWillSendRequest(const ResourceRequest&);
+ WEBCORE_EXPORT void continueWillSendRequest(ResourceRequest&&);
// Called in response to ResourceHandleClient::didReceiveResponseAsync().
WEBCORE_EXPORT virtual void continueDidReceiveResponse();
Modified: trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -27,6 +27,7 @@
#include "ResourceHandleClient.h"
#include "ResourceHandle.h"
+#include "ResourceRequest.h"
#include "SharedBuffer.h"
namespace WebCore {
@@ -38,10 +39,15 @@
ResourceHandleClient::~ResourceHandleClient()
{
}
+
+ResourceRequest ResourceHandleClient::willSendRequest(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&)
+{
+ return WTFMove(request);
+}
-void ResourceHandleClient::willSendRequestAsync(ResourceHandle* handle, const ResourceRequest& request, const ResourceResponse& /*redirectResponse*/)
+void ResourceHandleClient::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&& /*redirectResponse*/)
{
- handle->continueWillSendRequest(request);
+ handle->continueWillSendRequest(WTFMove(request));
}
void ResourceHandleClient::didReceiveResponseAsync(ResourceHandle* handle, const ResourceResponse&)
Modified: trunk/Source/WebCore/platform/network/ResourceHandleClient.h (201707 => 201708)
--- trunk/Source/WebCore/platform/network/ResourceHandleClient.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/ResourceHandleClient.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -69,8 +69,7 @@
WEBCORE_EXPORT ResourceHandleClient();
WEBCORE_EXPORT virtual ~ResourceHandleClient();
- // Request may be modified.
- virtual void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse& /*redirectResponse*/) { }
+ WEBCORE_EXPORT virtual ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&);
virtual void didSendData(ResourceHandle*, unsigned long long /*bytesSent*/, unsigned long long /*totalBytesToBeSent*/) { }
virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&) { }
@@ -88,7 +87,7 @@
virtual bool loadingSynchronousXHR() { return false; }
// Client will pass an updated request using ResourceHandle::continueWillSendRequest() when ready.
- WEBCORE_EXPORT virtual void willSendRequestAsync(ResourceHandle*, const ResourceRequest&, const ResourceResponse& redirectResponse);
+ WEBCORE_EXPORT virtual void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&);
// Client will call ResourceHandle::continueDidReceiveResponse() when ready.
WEBCORE_EXPORT virtual void didReceiveResponseAsync(ResourceHandle*, const ResourceResponse&);
Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -36,16 +36,16 @@
{
}
-void SynchronousLoaderClient::willSendRequest(ResourceHandle* handle, ResourceRequest& request, const ResourceResponse& /*redirectResponse*/)
+ResourceRequest SynchronousLoaderClient::willSendRequest(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&&)
{
// FIXME: This needs to be fixed to follow the redirect correctly even for cross-domain requests.
if (protocolHostAndPortAreEqual(handle->firstRequest().url(), request.url()))
- return;
+ return WTFMove(request);
ASSERT(m_error.isNull());
m_error = platformBadResponseError();
m_isDone = true;
- request = ResourceRequest();
+ return { };
}
bool SynchronousLoaderClient::shouldUseCredentialStorage(ResourceHandle*)
Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h (201707 => 201708)
--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -45,7 +45,7 @@
WEBCORE_EXPORT static ResourceError platformBadResponseError();
private:
- void willSendRequest(ResourceHandle*, ResourceRequest&, const ResourceResponse& /*redirectResponse*/) override;
+ ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
bool shouldUseCredentialStorage(ResourceHandle*) override;
void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&) override;
void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -287,7 +287,7 @@
}
}
-void ResourceHandle::willSendRequest(ResourceRequest& request, const ResourceResponse& redirectResponse)
+ResourceRequest ResourceHandle::willSendRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse)
{
const URL& url = ""
d->m_user = url.user();
@@ -315,18 +315,20 @@
}
Ref<ResourceHandle> protectedThis(*this);
- if (d->m_usesAsyncCallbacks)
- client()->willSendRequestAsync(this, request, redirectResponse);
- else {
- client()->willSendRequest(this, request, redirectResponse);
+ if (d->m_usesAsyncCallbacks) {
+ client()->willSendRequestAsync(this, WTFMove(request), WTFMove(redirectResponse));
+ return { };
+ }
+
+ auto newRequest = client()->willSendRequest(this, WTFMove(request), WTFMove(redirectResponse));
- // Client call may not preserve the session, especially if the request is sent over IPC.
- if (!request.isNull()) {
- request.setStorageSession(d->m_storageSession.get());
+ // Client call may not preserve the session, especially if the request is sent over IPC.
+ if (!newRequest.isNull()) {
+ newRequest.setStorageSession(d->m_storageSession.get());
- d->m_currentRequest = request;
- }
+ d->m_currentRequest = newRequest;
}
+ return newRequest;
}
bool ResourceHandle::shouldUseCredentialStorage()
@@ -650,12 +652,11 @@
return d->m_currentRequest;
}
-void ResourceHandle::continueWillSendRequest(const ResourceRequest& request)
+void ResourceHandle::continueWillSendRequest(ResourceRequest&& request)
{
- ResourceRequest requestResult = request;
- if (!requestResult.isNull())
- requestResult.setStorageSession(d->m_storageSession.get());
- d->m_connectionDelegate->continueWillSendRequest(requestResult.cfURLRequest(UpdateHTTPBody));
+ if (!request.isNull())
+ request.setStorageSession(d->m_storageSession.get());
+ d->m_connectionDelegate->continueWillSendRequest(request.cfURLRequest(UpdateHTTPBody));
}
void ResourceHandle::continueDidReceiveResponse()
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -118,7 +118,7 @@
ASSERT(redirectResponse);
ResourceRequest request = createResourceRequest(cfRequest, redirectResponse.get());
- m_handle->willSendRequest(request, redirectResponse.get());
+ m_handle->willSendRequest(WTFMove(request), redirectResponse.get());
});
dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
Modified: trunk/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -92,15 +92,15 @@
LOG(Network, "CFNet - SynchronousResourceHandleCFURLConnectionDelegate::willSendRequest(handle=%p) (%s)", m_handle, m_handle->firstRequest().url().string().utf8().data());
ResourceRequest request = createResourceRequest(cfRequest, redirectResponse.get());
- m_handle->willSendRequest(request, redirectResponse.get());
+ auto newRequest = m_handle->willSendRequest(WTFMove(request), redirectResponse.get());
- if (request.isNull())
- return 0;
+ if (newRequest.isNull())
+ return nullptr;
- cfRequest = request.cfURLRequest(UpdateHTTPBody);
+ auto newCFRequest = newRequest.cfURLRequest(UpdateHTTPBody);
- CFRetain(cfRequest);
- return cfRequest;
+ CFRetain(newCFRequest);
+ return newCFRequest;
}
#if !PLATFORM(COCOA)
Modified: trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm (201707 => 201708)
--- trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm 2016-06-06 08:25:16 UTC (rev 201708)
@@ -440,7 +440,7 @@
data.swap(client.mutableData());
}
-void ResourceHandle::willSendRequest(ResourceRequest& request, const ResourceResponse& redirectResponse)
+ResourceRequest ResourceHandle::willSendRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse)
{
ASSERT(!redirectResponse.isNull());
@@ -489,23 +489,24 @@
}
if (d->m_usesAsyncCallbacks) {
- client()->willSendRequestAsync(this, request, redirectResponse);
- } else {
- Ref<ResourceHandle> protectedThis(*this);
- client()->willSendRequest(this, request, redirectResponse);
+ client()->willSendRequestAsync(this, WTFMove(request), WTFMove(redirectResponse));
+ return { };
+ }
- // Client call may not preserve the session, especially if the request is sent over IPC.
- if (!request.isNull())
- request.setStorageSession(d->m_storageSession.get());
- }
+ Ref<ResourceHandle> protectedThis(*this);
+ auto newRequest = client()->willSendRequest(this, WTFMove(request), WTFMove(redirectResponse));
+
+ // Client call may not preserve the session, especially if the request is sent over IPC.
+ if (!newRequest.isNull())
+ newRequest.setStorageSession(d->m_storageSession.get());
+ return newRequest;
}
-void ResourceHandle::continueWillSendRequest(const ResourceRequest& request)
+void ResourceHandle::continueWillSendRequest(ResourceRequest&& newRequest)
{
ASSERT(d->m_usesAsyncCallbacks);
// Client call may not preserve the session, especially if the request is sent over IPC.
- ResourceRequest newRequest = request;
if (!newRequest.isNull())
newRequest.setStorageSession(d->m_storageSession.get());
[(id)delegate() continueWillSendRequest:newRequest.nsURLRequest(UpdateHTTPBody)];
Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm (201707 => 201708)
--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm 2016-06-06 08:25:16 UTC (rev 201708)
@@ -77,11 +77,7 @@
LOG(Network, "Handle %p delegate connection:%p willSendRequest:%@ redirectResponse:non-HTTP", m_handle, connection, [newRequest description]);
#endif
- ResourceRequest request = newRequest;
-
- m_handle->willSendRequest(request, redirectResponse);
-
- return request.nsURLRequest(UpdateHTTPBody);
+ return m_handle->willSendRequest(newRequest, redirectResponse).nsURLRequest(UpdateHTTPBody);
}
- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection
Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (201707 => 201708)
--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm 2016-06-06 08:25:16 UTC (rev 201708)
@@ -122,9 +122,7 @@
return;
}
- ResourceRequest request = newRequest;
-
- m_handle->willSendRequest(request, redirectResponse);
+ m_handle->willSendRequest(newRequest, redirectResponse);
});
dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
Modified: trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp (201707 => 201708)
--- trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -464,18 +464,17 @@
return false;
}
-static void continueAfterWillSendRequest(ResourceHandle* handle, const ResourceRequest& request)
+static void continueAfterWillSendRequest(ResourceHandle* handle, ResourceRequest&& request)
{
// willSendRequest might cancel the load.
if (handle->cancelledOrClientless())
return;
- ResourceRequest newRequest(request);
ResourceHandleInternal* d = handle->getInternal();
- if (protocolHostAndPortAreEqual(newRequest.url(), d->m_response.url()))
- applyAuthenticationToRequest(handle, newRequest, true);
+ if (protocolHostAndPortAreEqual(request.url(), d->m_response.url()))
+ applyAuthenticationToRequest(handle, request, true);
- if (!createSoupRequestAndMessageForHandle(handle, newRequest)) {
+ if (!createSoupRequestAndMessageForHandle(handle, request)) {
d->client()->cannotShowURL(handle);
return;
}
@@ -532,11 +531,12 @@
cleanupSoupRequestOperation(handle);
+ ResourceResponse responseCopy = d->m_response;
if (d->client()->usesAsyncCallbacks())
- d->client()->willSendRequestAsync(handle, newRequest, d->m_response);
+ d->client()->willSendRequestAsync(handle, WTFMove(newRequest), WTFMove(responseCopy));
else {
- d->client()->willSendRequest(handle, newRequest, d->m_response);
- continueAfterWillSendRequest(handle, newRequest);
+ auto request = d->client()->willSendRequest(handle, WTFMove(newRequest), WTFMove(responseCopy));
+ continueAfterWillSendRequest(handle, WTFMove(request));
}
}
@@ -1367,10 +1367,10 @@
d->m_cancellable.get(), readCallback, handle.get());
}
-void ResourceHandle::continueWillSendRequest(const ResourceRequest& request)
+void ResourceHandle::continueWillSendRequest(ResourceRequest&& request)
{
ASSERT(!client() || client()->usesAsyncCallbacks());
- continueAfterWillSendRequest(this, request);
+ continueAfterWillSendRequest(this, WTFMove(request));
}
void ResourceHandle::continueDidReceiveResponse()
Modified: trunk/Source/WebKit2/ChangeLog (201707 => 201708)
--- trunk/Source/WebKit2/ChangeLog 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/ChangeLog 2016-06-06 08:25:16 UTC (rev 201708)
@@ -1,3 +1,63 @@
+2016-06-06 Alex Christensen <[email protected]>
+
+ Reduce ResourceRequest copying in loading code
+ https://bugs.webkit.org/show_bug.cgi?id=158251
+
+ Reviewed by Darin Adler.
+
+ * NetworkProcess/Downloads/DownloadManager.cpp:
+ (WebKit::DownloadManager::continueCanAuthenticateAgainstProtectionSpace):
+ (WebKit::DownloadManager::continueWillSendRequest):
+ (WebKit::DownloadManager::willDecidePendingDownloadDestination):
+ * NetworkProcess/Downloads/DownloadManager.h:
+ * NetworkProcess/Downloads/PendingDownload.cpp:
+ (WebKit::PendingDownload::PendingDownload):
+ (WebKit::PendingDownload::willSendRedirectedRequest):
+ (WebKit::PendingDownload::continueWillSendRequest):
+ (WebKit::PendingDownload::canAuthenticateAgainstProtectionSpaceAsync):
+ * NetworkProcess/Downloads/PendingDownload.h:
+ * NetworkProcess/NetworkDataTask.h:
+ (WebKit::NetworkDataTask::firstRequest):
+ * NetworkProcess/NetworkLoad.cpp:
+ (WebKit::NetworkLoad::cancel):
+ (WebKit::NetworkLoad::continueWillSendRequest):
+ (WebKit::NetworkLoad::sharedDidReceiveResponse):
+ (WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
+ (WebKit::NetworkLoad::setPendingDownload):
+ (WebKit::NetworkLoad::willPerformHTTPRedirection):
+ (WebKit::NetworkLoad::didReceiveChallenge):
+ (WebKit::NetworkLoad::didFail):
+ (WebKit::NetworkLoad::willSendRequestAsync):
+ * NetworkProcess/NetworkLoad.h:
+ (WebKit::NetworkLoad::currentRequest):
+ (WebKit::NetworkLoad::clearCurrentRequest):
+ (WebKit::NetworkLoad::pendingDownloadID):
+ * NetworkProcess/NetworkLoadClient.h:
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::continueCanAuthenticateAgainstProtectionSpace):
+ (WebKit::NetworkProcess::continueWillSendRequest):
+ (WebKit::NetworkProcess::pendingDownloadCanceled):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::didFailLoading):
+ (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
+ (WebKit::NetworkResourceLoader::continueWillSendRequest):
+ (WebKit::NetworkResourceLoader::continueDidReceiveResponse):
+ * NetworkProcess/NetworkResourceLoader.h:
+ * NetworkProcess/PingLoad.h:
+ (WebKit::PingLoad::PingLoad):
+ * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
+ (WebKit::NetworkCache::SpeculativeLoad::~SpeculativeLoad):
+ (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
+ * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
+ * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+ (WebKit::NetworkDataTask::didBecomeDownload):
+ (WebKit::NetworkDataTask::willPerformHTTPRedirection):
+ * WebProcess/Network/WebResourceLoader.cpp:
+ (WebKit::WebResourceLoader::detachFromCoreLoader):
+ (WebKit::WebResourceLoader::willSendRequest):
+ * WebProcess/Network/WebResourceLoader.h:
+
2016-06-05 Sam Weinig <[email protected]>
Add experimental support for spring based CSS animations
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -87,12 +87,12 @@
pendingDownload->continueCanAuthenticateAgainstProtectionSpace(canAuthenticate);
}
-void DownloadManager::continueWillSendRequest(DownloadID downloadID, const WebCore::ResourceRequest& request)
+void DownloadManager::continueWillSendRequest(DownloadID downloadID, WebCore::ResourceRequest&& request)
{
auto* pendingDownload = m_pendingDownloads.get(downloadID);
ASSERT(pendingDownload);
if (pendingDownload)
- pendingDownload->continueWillSendRequest(request);
+ pendingDownload->continueWillSendRequest(WTFMove(request));
}
void DownloadManager::willDecidePendingDownloadDestination(NetworkDataTask& networkDataTask, ResponseCompletionHandler completionHandler)
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/DownloadManager.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -78,7 +78,7 @@
#if USE(NETWORK_SESSION)
std::pair<RefPtr<NetworkDataTask>, std::unique_ptr<PendingDownload>> dataTaskBecameDownloadTask(DownloadID, std::unique_ptr<Download>&&);
void continueCanAuthenticateAgainstProtectionSpace(DownloadID, bool canAuthenticate);
- void continueWillSendRequest(DownloadID, const WebCore::ResourceRequest&);
+ void continueWillSendRequest(DownloadID, WebCore::ResourceRequest&&);
void willDecidePendingDownloadDestination(NetworkDataTask&, ResponseCompletionHandler);
void continueDecidePendingDownloadDestination(DownloadID, String destination, const SandboxExtension::Handle&, bool allowOverwrite);
#else
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.cpp (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -45,14 +45,14 @@
m_networkLoad->setPendingDownload(*this);
}
-void PendingDownload::willSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceRequest& redirectRequest, const WebCore::ResourceResponse& redirectResponse)
+void PendingDownload::willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse)
{
- send(Messages::DownloadProxy::WillSendRequest(redirectRequest, redirectResponse));
+ send(Messages::DownloadProxy::WillSendRequest(WTFMove(redirectRequest), WTFMove(redirectResponse)));
};
-void PendingDownload::continueWillSendRequest(const WebCore::ResourceRequest& newRequest)
+void PendingDownload::continueWillSendRequest(WebCore::ResourceRequest&& newRequest)
{
- m_networkLoad->continueWillSendRequest(newRequest);
+ m_networkLoad->continueWillSendRequest(WTFMove(newRequest));
}
void PendingDownload::canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace& protectionSpace)
Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -46,7 +46,7 @@
public:
PendingDownload(const NetworkLoadParameters&, DownloadID);
- void continueWillSendRequest(const WebCore::ResourceRequest&);
+ void continueWillSendRequest(WebCore::ResourceRequest&&);
void continueCanAuthenticateAgainstProtectionSpace(bool canAuthenticate);
private:
@@ -54,7 +54,7 @@
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override { }
void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override;
bool isSynchronous() const override { return false; }
- void willSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceRequest& redirectRequest, const WebCore::ResourceResponse& redirectResponse) override;
+ void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override;
ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) override { return ShouldContinueDidReceiveResponse::No; };
void didReceiveBuffer(RefPtr<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override { };
void didFinishLoading(double finishTime) override { };
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -68,7 +68,7 @@
class NetworkDataTaskClient {
public:
- virtual void willPerformHTTPRedirection(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, RedirectCompletionHandler) = 0;
+ virtual void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler) = 0;
virtual void didReceiveChallenge(const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler) = 0;
virtual void didReceiveResponseNetworkSession(const WebCore::ResourceResponse&, ResponseCompletionHandler) = 0;
virtual void didReceiveData(RefPtr<WebCore::SharedBuffer>&&) = 0;
@@ -126,7 +126,7 @@
const WebCore::ResourceRequest& firstRequest() const { return m_firstRequest; }
WebCore::ResourceRequest currentRequest();
String suggestedFilename();
- void willPerformHTTPRedirection(const WebCore::ResourceResponse&, WebCore::ResourceRequest&&, RedirectCompletionHandler);
+ void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler);
void transferSandboxExtensionToDownload(Download&);
bool allowsSpecificHTTPSCertificateForHost(const WebCore::AuthenticationChallenge&);
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -105,7 +105,7 @@
m_handle->cancel();
}
-void NetworkLoad::continueWillSendRequest(const WebCore::ResourceRequest& newRequest)
+void NetworkLoad::continueWillSendRequest(WebCore::ResourceRequest&& newRequest)
{
#if PLATFORM(COCOA)
m_currentRequest.updateFromDelegatePreservingOldProperties(newRequest.nsURLRequest(DoNotUpdateHTTPBody));
@@ -128,8 +128,10 @@
redirectCompletionHandler({ });
#endif
return;
- } else if (m_handle)
- m_handle->continueWillSendRequest(m_currentRequest);
+ } else if (m_handle) {
+ auto currentRequestCopy = m_currentRequest;
+ m_handle->continueWillSendRequest(WTFMove(currentRequestCopy));
+ }
#if USE(NETWORK_SESSION)
if (redirectCompletionHandler)
@@ -160,15 +162,15 @@
return m_client.didReceiveResponse(response);
}
-void NetworkLoad::sharedWillSendRedirectedRequest(const ResourceRequest& request, const ResourceResponse& redirectResponse)
+void NetworkLoad::sharedWillSendRedirectedRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse)
{
// We only expect to get the willSendRequest callback from ResourceHandle as the result of a redirect.
ASSERT(!redirectResponse.isNull());
ASSERT(RunLoop::isMain());
- auto oldRequest = m_currentRequest;
+ auto oldRequest = WTFMove(m_currentRequest);
m_currentRequest = request;
- m_client.willSendRedirectedRequest(oldRequest, request, redirectResponse);
+ m_client.willSendRedirectedRequest(WTFMove(oldRequest), WTFMove(request), WTFMove(redirectResponse));
}
#if USE(NETWORK_SESSION)
@@ -201,11 +203,11 @@
m_task->setPendingDownload(pendingDownload);
}
-void NetworkLoad::willPerformHTTPRedirection(const ResourceResponse& response, const ResourceRequest& request, RedirectCompletionHandler completionHandler)
+void NetworkLoad::willPerformHTTPRedirection(ResourceResponse&& response, ResourceRequest&& request, RedirectCompletionHandler completionHandler)
{
ASSERT(!m_redirectCompletionHandler);
m_redirectCompletionHandler = completionHandler;
- sharedWillSendRedirectedRequest(request, response);
+ sharedWillSendRedirectedRequest(WTFMove(request), WTFMove(response));
}
void NetworkLoad::didReceiveChallenge(const AuthenticationChallenge& challenge, std::function<void(AuthenticationChallengeDisposition, const Credential&)> completionHandler)
@@ -318,10 +320,10 @@
m_client.didFailLoading(error);
}
-void NetworkLoad::willSendRequestAsync(ResourceHandle* handle, const ResourceRequest& request, const ResourceResponse& redirectResponse)
+void NetworkLoad::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&& redirectResponse)
{
ASSERT_UNUSED(handle, handle == m_handle);
- sharedWillSendRedirectedRequest(request, redirectResponse);
+ sharedWillSendRedirectedRequest(WTFMove(request), WTFMove(redirectResponse));
}
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -55,7 +55,7 @@
const WebCore::ResourceRequest& currentRequest() const { return m_currentRequest; }
void clearCurrentRequest() { m_currentRequest = WebCore::ResourceRequest(); }
- void continueWillSendRequest(const WebCore::ResourceRequest&);
+ void continueWillSendRequest(WebCore::ResourceRequest&&);
void continueDidReceiveResponse();
#if USE(NETWORK_SESSION)
@@ -65,7 +65,7 @@
DownloadID pendingDownloadID() { return m_task->pendingDownloadID(); }
// NetworkDataTaskClient
- void willPerformHTTPRedirection(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, RedirectCompletionHandler) final;
+ void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler) final;
void didReceiveChallenge(const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler) final;
void didReceiveResponseNetworkSession(const WebCore::ResourceResponse&, ResponseCompletionHandler) final;
void didReceiveData(RefPtr<WebCore::SharedBuffer>&&) final;
@@ -76,7 +76,7 @@
void cannotShowURL() override;
#endif
// ResourceHandleClient
- void willSendRequestAsync(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse) override;
+ void willSendRequestAsync(WebCore::ResourceHandle*, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse) override;
void didSendData(WebCore::ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
void didReceiveResponseAsync(WebCore::ResourceHandle*, const WebCore::ResourceResponse&) override;
void didReceiveData(WebCore::ResourceHandle*, const char*, unsigned, int encodedDataLength) override;
@@ -117,7 +117,7 @@
private:
NetworkLoadClient::ShouldContinueDidReceiveResponse sharedDidReceiveResponse(const WebCore::ResourceResponse&);
- void sharedWillSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
+ void sharedWillSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceResponse&&);
NetworkLoadClient& m_client;
const NetworkLoadParameters m_parameters;
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoadClient.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkLoadClient.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoadClient.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -50,7 +50,7 @@
virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) = 0;
virtual void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) = 0;
- virtual void willSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceRequest& redirectRequest, const WebCore::ResourceResponse& redirectResponse) = 0;
+ virtual void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) = 0;
enum class ShouldContinueDidReceiveResponse { No, Yes };
virtual ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) = 0;
virtual void didReceiveBuffer(RefPtr<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) = 0;
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -486,9 +486,9 @@
downloadManager().continueCanAuthenticateAgainstProtectionSpace(downloadID, canAuthenticate);
}
-void NetworkProcess::continueWillSendRequest(DownloadID downloadID, const WebCore::ResourceRequest& request)
+void NetworkProcess::continueWillSendRequest(DownloadID downloadID, WebCore::ResourceRequest&& request)
{
- downloadManager().continueWillSendRequest(downloadID, request);
+ downloadManager().continueWillSendRequest(downloadID, WTFMove(request));
}
void NetworkProcess::pendingDownloadCanceled(DownloadID downloadID)
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkProcess.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -172,7 +172,7 @@
void cancelDownload(DownloadID);
#if USE(NETWORK_SESSION)
void continueCanAuthenticateAgainstProtectionSpace(DownloadID, bool canAuthenticate);
- void continueWillSendRequest(DownloadID, const WebCore::ResourceRequest&);
+ void continueWillSendRequest(DownloadID, WebCore::ResourceRequest&&);
void continueDecidePendingDownloadDestination(DownloadID, String destination, const SandboxExtension::Handle& sandboxExtensionHandle, bool allowOverwrite);
#endif
void setCacheModel(uint32_t);
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -410,7 +410,7 @@
cleanup();
}
-void NetworkResourceLoader::willSendRedirectedRequest(const ResourceRequest& request, const WebCore::ResourceRequest& redirectRequest, const ResourceResponse& redirectResponse)
+void NetworkResourceLoader::willSendRedirectedRequest(ResourceRequest&& request, WebCore::ResourceRequest&& redirectRequest, ResourceResponse&& redirectResponse)
{
++m_redirectCount;
@@ -424,7 +424,7 @@
m_networkLoad->clearCurrentRequest();
overridenRequest = ResourceRequest();
}
- continueWillSendRequest(overridenRequest);
+ continueWillSendRequest(WTFMove(overridenRequest));
return;
}
sendAbortingOnFailure(Messages::WebResourceLoader::WillSendRequest(redirectRequest, redirectResponse));
@@ -437,7 +437,7 @@
#endif
}
-void NetworkResourceLoader::continueWillSendRequest(const ResourceRequest& newRequest)
+void NetworkResourceLoader::continueWillSendRequest(ResourceRequest&& newRequest)
{
NETWORKRESOURCELOADER_LOG_ALWAYS("Following redirect of network resource: loader = %p, pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d", this, static_cast<unsigned long long>(m_parameters.webPageID), static_cast<unsigned long long>(m_parameters.webFrameID), isMainResource(), isSynchronous());
@@ -456,7 +456,7 @@
#endif
if (m_networkLoad)
- m_networkLoad->continueWillSendRequest(newRequest);
+ m_networkLoad->continueWillSendRequest(WTFMove(newRequest));
}
void NetworkResourceLoader::continueDidReceiveResponse()
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -72,7 +72,7 @@
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void continueCanAuthenticateAgainstProtectionSpace(bool);
#endif
- void continueWillSendRequest(const WebCore::ResourceRequest& newRequest);
+ void continueWillSendRequest(WebCore::ResourceRequest&& newRequest);
WebCore::SharedBuffer* bufferedData() { return m_bufferedData.get(); }
const WebCore::ResourceResponse& response() const { return m_response; }
@@ -87,7 +87,7 @@
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override;
bool isSynchronous() const override;
- void willSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceRequest& redirectRequest, const WebCore::ResourceResponse& redirectResponse) override;
+ void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&&) override;
ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) override;
void didReceiveBuffer(RefPtr<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
void didFinishLoading(double finishTime) override;
Modified: trunk/Source/WebKit2/NetworkProcess/PingLoad.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/PingLoad.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/PingLoad.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -48,7 +48,7 @@
}
private:
- void willPerformHTTPRedirection(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, RedirectCompletionHandler completionHandler) override
+ void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler completionHandler) override
{
completionHandler({ });
delete this;
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -63,7 +63,7 @@
ASSERT(!m_networkLoad);
}
-void SpeculativeLoad::willSendRedirectedRequest(const ResourceRequest&, const ResourceRequest& redirectRequest, const ResourceResponse& redirectResponse)
+void SpeculativeLoad::willSendRedirectedRequest(ResourceRequest&&, ResourceRequest&& redirectRequest, ResourceResponse&& redirectResponse)
{
LOG(NetworkCacheSpeculativePreloading, "(NetworkProcess) Speculative revalidation for %s hit a redirect, aborting the load.", redirectResponse.url().string().utf8().data());
// We drop speculative revalidations if they redirect for now as we would need to notify WebCore of such redirects.
Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -56,7 +56,7 @@
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override { }
void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override { }
bool isSynchronous() const override { return false; }
- void willSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceRequest& redirectRequest, const WebCore::ResourceResponse& redirectResponse) override;
+ void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override;
ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) override;
void didReceiveBuffer(RefPtr<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
void didFinishLoading(double finishTime) override;
Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (201707 => 201708)
--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm 2016-06-06 08:25:16 UTC (rev 201708)
@@ -187,7 +187,7 @@
m_client->didBecomeDownload();
}
-void NetworkDataTask::willPerformHTTPRedirection(const WebCore::ResourceResponse& redirectResponse, WebCore::ResourceRequest&& request, RedirectCompletionHandler completionHandler)
+void NetworkDataTask::willPerformHTTPRedirection(WebCore::ResourceResponse&& redirectResponse, WebCore::ResourceRequest&& request, RedirectCompletionHandler completionHandler)
{
if (redirectResponse.httpStatusCode() == 307 || redirectResponse.httpStatusCode() == 308) {
ASSERT(m_lastHTTPMethod == request.httpMethod());
@@ -232,7 +232,7 @@
}
if (m_client)
- m_client->willPerformHTTPRedirection(redirectResponse, request, completionHandler);
+ m_client->willPerformHTTPRedirection(WTFMove(redirectResponse), WTFMove(request), completionHandler);
else {
ASSERT_NOT_REACHED();
completionHandler({ });
Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp (201707 => 201708)
--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp 2016-06-06 08:25:16 UTC (rev 201708)
@@ -75,22 +75,21 @@
m_coreLoader = nullptr;
}
-void WebResourceLoader::willSendRequest(const ResourceRequest& proposedRequest, const ResourceResponse& redirectResponse)
+void WebResourceLoader::willSendRequest(ResourceRequest&& proposedRequest, ResourceResponse&& redirectResponse)
{
LOG(Network, "(WebProcess) WebResourceLoader::willSendRequest to '%s'", proposedRequest.url().string().latin1().data());
WEBRESOURCELOADER_LOG_ALWAYS("WebResourceLoader::willSendRequest, WebResourceLoader = %p", this);
- RefPtr<WebResourceLoader> protect(this);
+ RefPtr<WebResourceLoader> protectedThis(this);
- ResourceRequest newRequest = proposedRequest;
- if (m_coreLoader->documentLoader()->applicationCacheHost()->maybeLoadFallbackForRedirect(m_coreLoader.get(), newRequest, redirectResponse))
+ if (m_coreLoader->documentLoader()->applicationCacheHost()->maybeLoadFallbackForRedirect(m_coreLoader.get(), proposedRequest, redirectResponse))
return;
// FIXME: Do we need to update NetworkResourceLoader clientCredentialPolicy in case loader policy is DoNotAskClientForCrossOriginCredentials?
- m_coreLoader->willSendRequest(WTFMove(newRequest), redirectResponse, [protect](ResourceRequest&& request) {
- if (!protect->m_coreLoader)
+ m_coreLoader->willSendRequest(WTFMove(proposedRequest), redirectResponse, [protectedThis](ResourceRequest&& request) {
+ if (!protectedThis->m_coreLoader)
return;
- protect->send(Messages::NetworkResourceLoader::ContinueWillSendRequest(request));
+ protectedThis->send(Messages::NetworkResourceLoader::ContinueWillSendRequest(request));
});
}
Modified: trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h (201707 => 201708)
--- trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h 2016-06-06 05:09:51 UTC (rev 201707)
+++ trunk/Source/WebKit2/WebProcess/Network/WebResourceLoader.h 2016-06-06 08:25:16 UTC (rev 201708)
@@ -75,7 +75,7 @@
IPC::Connection* messageSenderConnection() override;
uint64_t messageSenderDestinationID() override;
- void willSendRequest(const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
+ void willSendRequest(WebCore::ResourceRequest&&, WebCore::ResourceResponse&&);
void didSendData(uint64_t bytesSent, uint64_t totalBytesToBeSent);
void didReceiveResponse(const WebCore::ResourceResponse&, bool needsContinueDidReceiveResponseMessage);
void didReceiveData(const IPC::DataReference&, int64_t encodedDataLength);