Title: [201708] trunk/Source
Revision
201708
Author
[email protected]
Date
2016-06-06 01:25:16 -0700 (Mon, 06 Jun 2016)

Log Message

Reduce ResourceRequest copying in loading code
https://bugs.webkit.org/show_bug.cgi?id=158251

Patch by Alex Christensen <[email protected]> on 2016-06-06
Reviewed by Darin Adler.

Source/WebCore:

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):

Source/WebKit2:

* 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:

Modified Paths

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);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to