Title: [201943] trunk/Source
Revision
201943
Author
achristen...@apple.com
Date
2016-06-10 15:02:55 -0700 (Fri, 10 Jun 2016)

Log Message

Reduce ResourceResponse copying
https://bugs.webkit.org/show_bug.cgi?id=158232

Reviewed by Darin Adler.

Source/WebCore:

No new tests.  No change in behavior except removing an unnecessary copy on cocoa platforms.

* loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::didSendData):
(WebCore::ResourceLoader::didReceiveResponse):
* loader/ResourceLoader.h:
* loader/appcache/ApplicationCacheGroup.cpp:
(WebCore::ApplicationCacheGroup::createResourceHandle):
(WebCore::ApplicationCacheGroup::didReceiveResponse):
* loader/appcache/ApplicationCacheGroup.h:
* platform/graphics/PlatformMediaResourceLoader.h:
(WebCore::PlatformMediaResourceClient::~PlatformMediaResourceClient):
(WebCore::PlatformMediaResourceClient::responseReceived):
(WebCore::PlatformMediaResourceClient::redirectReceived):
(WebCore::PlatformMediaResourceClient::shouldCacheResponse):
(WebCore::PlatformMediaResourceClient::dataSent):
* platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.h:
* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(ResourceHandleStreamingClient::willSendRequest):
(ResourceHandleStreamingClient::didReceiveResponse):
* platform/network/BlobResourceHandle.cpp:
(WebCore::BlobResourceHandle::notifyResponseOnSuccess):
(WebCore::BlobResourceHandle::notifyResponseOnError):
(WebCore::BlobResourceHandle::notifyReceiveData):
* platform/network/DataURL.cpp:
(WebCore::handleDataURL):
* platform/network/PingHandle.h:
(WebCore::PingHandle::PingHandle):
* platform/network/ResourceHandleClient.cpp:
(WebCore::ResourceHandleClient::willSendRequestAsync):
(WebCore::ResourceHandleClient::didReceiveResponseAsync):
* platform/network/ResourceHandleClient.h:
(WebCore::ResourceHandleClient::didSendData):
(WebCore::ResourceHandleClient::didReceiveResponse):
(WebCore::ResourceHandleClient::didReceiveData):
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::ResourceResponseBase):
(WebCore::ResourceResponseBase::includeCertificateInfo):
(WebCore::ResourceResponseBase::suggestedFilename):
(WebCore::ResourceResponseBase::certificateInfo): Deleted.
* platform/network/ResourceResponseBase.h:
(WebCore::ResourceResponseBase::certificateInfo):
(WebCore::ResourceResponseBase::encode):
(WebCore::ResourceResponseBase::decode):
(WebCore::ResourceResponseBase::containsCertificateInfo): Deleted.
* platform/network/SynchronousLoaderClient.cpp:
(WebCore::SynchronousLoaderClient::canAuthenticateAgainstProtectionSpace):
(WebCore::SynchronousLoaderClient::didReceiveResponse):
(WebCore::SynchronousLoaderClient::didReceiveData):
* platform/network/SynchronousLoaderClient.h:
* platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
(WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
* platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
(WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData):
* platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
(-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
* platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::nextMultipartResponsePartCallback):
(WebCore::sendRequestCallback):

Source/WebKit2:

* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::continueDidReceiveResponse):
(WebKit::NetworkLoad::sharedDidReceiveResponse):
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
(WebKit::NetworkLoad::didReceiveChallenge):
(WebKit::NetworkLoad::didReceiveResponseNetworkSession):
(WebKit::NetworkLoad::didReceiveResponseAsync):
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkLoadClient.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::abort):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/PingLoad.h:
* NetworkProcess/cache/NetworkCacheCoders.h:
(WebKit::NetworkCache::Coder<Optional<T>>::encode):
(WebKit::NetworkCache::Coder<Optional<T>>::decode):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
* NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTask::didCompleteWithError):
(WebKit::NetworkDataTask::didReceiveResponse):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::url):
(WebKit::WebFrame::certificateInfo):
(WebKit::WebFrame::innerText):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (201942 => 201943)


--- trunk/Source/WebCore/ChangeLog	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/ChangeLog	2016-06-10 22:02:55 UTC (rev 201943)
@@ -1,3 +1,73 @@
+2016-06-10  Alex Christensen  <achristen...@webkit.org>
+
+        Reduce ResourceResponse copying
+        https://bugs.webkit.org/show_bug.cgi?id=158232
+
+        Reviewed by Darin Adler.
+
+        No new tests.  No change in behavior except removing an unnecessary copy on cocoa platforms.
+
+        * loader/ResourceLoader.cpp:
+        (WebCore::ResourceLoader::didSendData):
+        (WebCore::ResourceLoader::didReceiveResponse):
+        * loader/ResourceLoader.h:
+        * loader/appcache/ApplicationCacheGroup.cpp:
+        (WebCore::ApplicationCacheGroup::createResourceHandle):
+        (WebCore::ApplicationCacheGroup::didReceiveResponse):
+        * loader/appcache/ApplicationCacheGroup.h:
+        * platform/graphics/PlatformMediaResourceLoader.h:
+        (WebCore::PlatformMediaResourceClient::~PlatformMediaResourceClient):
+        (WebCore::PlatformMediaResourceClient::responseReceived):
+        (WebCore::PlatformMediaResourceClient::redirectReceived):
+        (WebCore::PlatformMediaResourceClient::shouldCacheResponse):
+        (WebCore::PlatformMediaResourceClient::dataSent):
+        * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.h:
+        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+        (ResourceHandleStreamingClient::willSendRequest):
+        (ResourceHandleStreamingClient::didReceiveResponse):
+        * platform/network/BlobResourceHandle.cpp:
+        (WebCore::BlobResourceHandle::notifyResponseOnSuccess):
+        (WebCore::BlobResourceHandle::notifyResponseOnError):
+        (WebCore::BlobResourceHandle::notifyReceiveData):
+        * platform/network/DataURL.cpp:
+        (WebCore::handleDataURL):
+        * platform/network/PingHandle.h:
+        (WebCore::PingHandle::PingHandle):
+        * platform/network/ResourceHandleClient.cpp:
+        (WebCore::ResourceHandleClient::willSendRequestAsync):
+        (WebCore::ResourceHandleClient::didReceiveResponseAsync):
+        * platform/network/ResourceHandleClient.h:
+        (WebCore::ResourceHandleClient::didSendData):
+        (WebCore::ResourceHandleClient::didReceiveResponse):
+        (WebCore::ResourceHandleClient::didReceiveData):
+        * platform/network/ResourceResponseBase.cpp:
+        (WebCore::ResourceResponseBase::ResourceResponseBase):
+        (WebCore::ResourceResponseBase::includeCertificateInfo):
+        (WebCore::ResourceResponseBase::suggestedFilename):
+        (WebCore::ResourceResponseBase::certificateInfo): Deleted.
+        * platform/network/ResourceResponseBase.h:
+        (WebCore::ResourceResponseBase::certificateInfo):
+        (WebCore::ResourceResponseBase::encode):
+        (WebCore::ResourceResponseBase::decode):
+        (WebCore::ResourceResponseBase::containsCertificateInfo): Deleted.
+        * platform/network/SynchronousLoaderClient.cpp:
+        (WebCore::SynchronousLoaderClient::canAuthenticateAgainstProtectionSpace):
+        (WebCore::SynchronousLoaderClient::didReceiveResponse):
+        (WebCore::SynchronousLoaderClient::didReceiveData):
+        * platform/network/SynchronousLoaderClient.h:
+        * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
+        (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
+        * platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
+        (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData):
+        * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
+        (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
+        * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
+        (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
+        * platform/network/soup/ResourceHandleSoup.cpp:
+        (WebCore::nextMultipartResponsePartCallback):
+        (WebCore::sendRequestCallback):
+
 2016-06-09  Ryosuke Niwa  <rn...@webkit.org>
 
         Add SPI to disable spellchecking on auto-fillable text fields

Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (201942 => 201943)


--- trunk/Source/WebCore/loader/ResourceLoader.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -637,7 +637,7 @@
     didSendData(bytesSent, totalBytesToBeSent);
 }
 
-void ResourceLoader::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
+void ResourceLoader::didReceiveResponse(ResourceHandle*, ResourceResponse&& response)
 {
     if (documentLoader()->applicationCacheHost()->maybeLoadFallbackForResponse(this, response))
         return;

Modified: trunk/Source/WebCore/loader/ResourceLoader.h (201942 => 201943)


--- trunk/Source/WebCore/loader/ResourceLoader.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/loader/ResourceLoader.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -185,7 +185,7 @@
     // ResourceHandleClient
     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 didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
     void didReceiveData(ResourceHandle*, const char*, unsigned, int encodedDataLength) override;
     void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int encodedDataLength) override;
     void didFinishLoading(ResourceHandle*, double finishTime) override;

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (201942 => 201943)


--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -489,7 +489,7 @@
     return handle;
 }
 
-void ApplicationCacheGroup::didReceiveResponse(ResourceHandle* handle, const ResourceResponse& response)
+void ApplicationCacheGroup::didReceiveResponse(ResourceHandle* handle, ResourceResponse&& response)
 {
     ASSERT(m_frame);
     InspectorInstrumentationCookie cookie = InspectorInstrumentation::willReceiveResourceResponse(m_frame);

Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h (201942 => 201943)


--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -108,7 +108,7 @@
     // the existing client callback cannot be used, so assume that any client that enables application cache also wants it to use credential storage.
     bool shouldUseCredentialStorage(ResourceHandle*) override { return true; }
 
-    void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
+    void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
     void didReceiveData(ResourceHandle*, const char*, unsigned length, int encodedDataLength) override;
     void didFinishLoading(ResourceHandle*, double finishTime) override;
     void didFail(ResourceHandle*, const ResourceError&) override;

Modified: trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h (201942 => 201943)


--- trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -23,8 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef PlatformMediaResourceLoader_h
-#define PlatformMediaResourceLoader_h
+#pragma once
 
 #if ENABLE(VIDEO)
 
@@ -91,4 +90,3 @@
 } // namespace WebCore
 
 #endif
-#endif

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -96,7 +96,7 @@
         char* getOrCreateReadBuffer(size_t requestedSize, size_t& actualSize) override;
 #endif
         ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
-        void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
+        void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
         void didReceiveData(ResourceHandle*, const char*, unsigned, int) override;
         void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int encodedLength) override;
         void didFinishLoading(ResourceHandle*, double /*finishTime*/) override;
@@ -1090,7 +1090,7 @@
     return WTFMove(request);
 }
 
-void ResourceHandleStreamingClient::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
+void ResourceHandleStreamingClient::didReceiveResponse(ResourceHandle*, ResourceResponse&& response)
 {
     handleResponseReceived(response);
 }

Modified: trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -83,7 +83,7 @@
 public:
     BlobResourceSynchronousLoader(ResourceError&, ResourceResponse&, Vector<char>&);
 
-    void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
+    void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
     void didFail(ResourceHandle*, const ResourceError&) override;
 
 private:
@@ -99,7 +99,7 @@
 {
 }
 
-void BlobResourceSynchronousLoader::didReceiveResponse(ResourceHandle* handle, const ResourceResponse& response)
+void BlobResourceSynchronousLoader::didReceiveResponse(ResourceHandle* handle, ResourceResponse&& response)
 {
     // We cannot handle the size that is more than maximum integer.
     if (response.expectedContentLength() > INT_MAX) {
@@ -583,9 +583,9 @@
     // It's currently client's responsibility to know that didReceiveResponseAsync cannot be used to convert a
     // load into a download or blobs.
     if (usesAsyncCallbacks())
-        client()->didReceiveResponseAsync(this, response);
+        client()->didReceiveResponseAsync(this, WTFMove(response));
     else
-        client()->didReceiveResponse(this, response);
+        client()->didReceiveResponse(this, WTFMove(response));
 }
 
 void BlobResourceHandle::notifyResponseOnError()
@@ -615,9 +615,9 @@
     // Note that we don't wait for continueDidReceiveResponse when using didReceiveResponseAsync.
     // This is not formally correct, but the client has to be a no-op anyway, because blobs can't be downloaded.
     if (usesAsyncCallbacks())
-        client()->didReceiveResponseAsync(this, response);
+        client()->didReceiveResponseAsync(this, WTFMove(response));
     else
-        client()->didReceiveResponse(this, response);
+        client()->didReceiveResponse(this, WTFMove(response));
 }
 
 void BlobResourceHandle::notifyReceiveData(const char* data, int bytesRead)

Modified: trunk/Source/WebCore/platform/network/DataURL.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/DataURL.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/DataURL.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -76,25 +76,22 @@
 
     if (base64) {
         data = ""
-        handle->client()->didReceiveResponse(handle, response);
+        handle->client()->didReceiveResponse(handle, WTFMove(response));
 
         // didReceiveResponse might cause the client to be deleted.
         if (handle->client()) {
             Vector<char> out;
-            if (base64Decode(data, out, Base64IgnoreSpacesAndNewLines) && out.size() > 0) {
-                response.setExpectedContentLength(out.size());
+            if (base64Decode(data, out, Base64IgnoreSpacesAndNewLines) && out.size() > 0)
                 handle->client()->didReceiveData(handle, out.data(), out.size(), 0);
-            }
         }
     } else {
         TextEncoding encoding(charset);
         data = "" encoding);
-        handle->client()->didReceiveResponse(handle, response);
+        handle->client()->didReceiveResponse(handle, WTFMove(response));
 
         // didReceiveResponse might cause the client to be deleted.
         if (handle->client()) {
             CString encodedData = encoding.encode(data, URLEncodedEntitiesForUnencodables);
-            response.setExpectedContentLength(encodedData.length());
             if (encodedData.length())
                 handle->client()->didReceiveData(handle, encodedData.data(), encodedData.length(), 0);
         }

Modified: trunk/Source/WebCore/platform/network/PingHandle.h (201942 => 201943)


--- trunk/Source/WebCore/platform/network/PingHandle.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/PingHandle.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -56,7 +56,7 @@
     }
 
 private:
-    void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override { delete this; }
+    void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override { delete this; }
     void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int) override { delete this; };
     void didFinishLoading(ResourceHandle*, double) override { delete this; }
     void didFail(ResourceHandle*, const ResourceError&) override { delete this; }

Modified: trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -50,7 +50,7 @@
     handle->continueWillSendRequest(WTFMove(request));
 }
 
-void ResourceHandleClient::didReceiveResponseAsync(ResourceHandle* handle, const ResourceResponse&)
+void ResourceHandleClient::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&&)
 {
     handle->continueDidReceiveResponse();
 }

Modified: trunk/Source/WebCore/platform/network/ResourceHandleClient.h (201942 => 201943)


--- trunk/Source/WebCore/platform/network/ResourceHandleClient.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/ResourceHandleClient.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -71,7 +71,7 @@
         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&) { }
+        virtual void didReceiveResponse(ResourceHandle*, ResourceResponse&&) { }
         
         virtual void didReceiveData(ResourceHandle*, const char*, unsigned, int /*encodedDataLength*/) { }
         WEBCORE_EXPORT virtual void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int encodedDataLength);
@@ -89,7 +89,7 @@
         WEBCORE_EXPORT virtual void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&);
 
         // Client will call ResourceHandle::continueDidReceiveResponse() when ready.
-        WEBCORE_EXPORT virtual void didReceiveResponseAsync(ResourceHandle*, const ResourceResponse&);
+        WEBCORE_EXPORT virtual void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&);
 
 #if USE(PROTECTION_SPACE_AUTH_CALLBACK)
         // Client will pass an updated request using ResourceHandle::continueCanAuthenticateAgainstProtectionSpace() when ready.

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -47,7 +47,6 @@
 ResourceResponseBase::ResourceResponseBase()
     : m_isNull(true)
     , m_expectedContentLength(0)
-    , m_includesCertificateInfo(false)
     , m_httpStatusCode(0)
 {
 }
@@ -58,7 +57,7 @@
     , m_mimeType(mimeType)
     , m_expectedContentLength(expectedLength)
     , m_textEncodingName(textEncodingName)
-    , m_includesCertificateInfo(true) // Empty but valid for synthetic responses.
+    , m_certificateInfo(CertificateInfo()) // Empty but valid for synthetic responses.
     , m_httpStatusCode(0)
 {
 }
@@ -184,17 +183,11 @@
 
 void ResourceResponseBase::includeCertificateInfo() const
 {
-    if (m_includesCertificateInfo)
+    if (m_certificateInfo)
         return;
     m_certificateInfo = static_cast<const ResourceResponse*>(this)->platformCertificateInfo();
-    m_includesCertificateInfo = true;
 }
 
-CertificateInfo ResourceResponseBase::certificateInfo() const
-{
-    return m_certificateInfo;
-}
-
 String ResourceResponseBase::suggestedFilename() const
 {
     return static_cast<const ResourceResponse*>(this)->platformSuggestedFilename();

Modified: trunk/Source/WebCore/platform/network/ResourceResponseBase.h (201942 => 201943)


--- trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/ResourceResponseBase.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -114,8 +114,7 @@
     WEBCORE_EXPORT String suggestedFilename() const;
 
     WEBCORE_EXPORT void includeCertificateInfo() const;
-    bool containsCertificateInfo() const { return m_includesCertificateInfo; }
-    WEBCORE_EXPORT CertificateInfo certificateInfo() const;
+    WEBCORE_EXPORT const Optional<CertificateInfo>& certificateInfo() const { return m_certificateInfo; };
     
     // These functions return parsed values of the corresponding response headers.
     // NaN means that the header was not present or had invalid value.
@@ -190,8 +189,8 @@
     HTTPHeaderMap m_httpHeaderFields;
     mutable ResourceLoadTiming m_resourceLoadTiming;
 
-    mutable bool m_includesCertificateInfo;
-    mutable CertificateInfo m_certificateInfo;
+#define RESOURCE_RESPONSE_BASE_CERT_INFO_OPTIONAL
+    mutable Optional<CertificateInfo> m_certificateInfo;
 
     int m_httpStatusCode;
 
@@ -236,9 +235,7 @@
     encoder << m_httpHeaderFields;
     encoder << m_resourceLoadTiming;
     encoder << m_httpStatusCode;
-    encoder << m_includesCertificateInfo;
-    if (m_includesCertificateInfo)
-        encoder << m_certificateInfo;
+    encoder << m_certificateInfo;
     encoder.encodeEnum(m_source);
     encoder.encodeEnum(m_type);
     encoder << m_isRedirected;
@@ -274,12 +271,8 @@
         return false;
     if (!decoder.decode(response.m_httpStatusCode))
         return false;
-    if (!decoder.decode(response.m_includesCertificateInfo))
+    if (!decoder.decode(response.m_certificateInfo))
         return false;
-    if (response.m_includesCertificateInfo) {
-        if (!decoder.decode(response.m_certificateInfo))
-            return false;
-    }
     if (!decoder.decodeEnum(response.m_source))
         return false;
     if (!decoder.decodeEnum(response.m_type))

Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -62,9 +62,9 @@
 }
 #endif
 
-void SynchronousLoaderClient::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
+void SynchronousLoaderClient::didReceiveResponse(ResourceHandle*, ResourceResponse&& response)
 {
-    m_response = response;
+    m_response = WTFMove(response);
 }
 
 void SynchronousLoaderClient::didReceiveData(ResourceHandle*, const char* data, unsigned length, int /*encodedDataLength*/)

Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h (201942 => 201943)


--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -48,7 +48,7 @@
     ResourceRequest willSendRequest(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
     bool shouldUseCredentialStorage(ResourceHandle*) override;
     void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&) override;
-    void didReceiveResponse(ResourceHandle*, const ResourceResponse&) override;
+    void didReceiveResponse(ResourceHandle*, ResourceResponse&&) override;
     void didReceiveData(ResourceHandle*, const char*, unsigned, int /*encodedDataLength*/) override;
     void didFinishLoading(ResourceHandle*, double /*finishTime*/) override;
     void didFail(ResourceHandle*, const ResourceError&) override;

Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -161,7 +161,7 @@
         UNUSED_PARAM(connection);
 #endif
         
-        m_handle->client()->didReceiveResponseAsync(m_handle, resourceResponse);
+        m_handle->client()->didReceiveResponseAsync(m_handle, WTFMove(resourceResponse));
     });
     dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);
 }

Modified: trunk/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -180,7 +180,7 @@
     UNUSED_PARAM(connection);
 #endif
     
-    m_handle->client()->didReceiveResponse(m_handle, resourceResponse);
+    m_handle->client()->didReceiveResponse(m_handle, WTFMove(resourceResponse));
 }
 
 void SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData(CFDataRef data, CFIndex originalLength)

Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm (201942 => 201943)


--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsDelegate.mm	2016-06-10 22:02:55 UTC (rev 201943)
@@ -169,7 +169,7 @@
     UNUSED_PARAM(connection);
 #endif
     
-    m_handle->client()->didReceiveResponse(m_handle, resourceResponse);
+    m_handle->client()->didReceiveResponse(m_handle, WTFMove(resourceResponse));
 }
 
 #if USE(NETWORK_CFDATA_ARRAY_CALLBACK)

Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (201942 => 201943)


--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm	2016-06-10 22:02:55 UTC (rev 201943)
@@ -215,7 +215,7 @@
 #else
         UNUSED_PARAM(connection);
 #endif
-        m_handle->client()->didReceiveResponseAsync(m_handle, resourceResponse);
+        m_handle->client()->didReceiveResponseAsync(m_handle, WTFMove(resourceResponse));
     });
 
     dispatch_semaphore_wait(m_semaphore, DISPATCH_TIME_FOREVER);

Modified: trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp (201942 => 201943)


--- trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -136,7 +136,7 @@
     }
 #endif // SOUP_CHECK_VERSION(2, 49, 91)
 
-    void didReceiveResponse(ResourceHandle*, const ResourceResponse& response) override
+    void didReceiveResponse(ResourceHandle*, ResourceResponse&& response) override
     {
         m_response = response;
     }
@@ -654,9 +654,9 @@
     d->m_previousPosition = 0;
 
     if (handle->client()->usesAsyncCallbacks())
-        handle->client()->didReceiveResponseAsync(handle.get(), d->m_response);
+        handle->client()->didReceiveResponseAsync(handle.get(), ResourceResponse(d->m_response));
     else {
-        handle->client()->didReceiveResponse(handle.get(), d->m_response);
+        handle->client()->didReceiveResponse(handle.get(), ResourceResponse(d->m_response));
         continueAfterDidReceiveResponse(handle.get());
     }
 }
@@ -718,9 +718,9 @@
         d->m_inputStream = inputStream;
 
     if (d->client()->usesAsyncCallbacks())
-        handle->client()->didReceiveResponseAsync(handle.get(), d->m_response);
+        handle->client()->didReceiveResponseAsync(handle.get(), ResourceResponse(d->m_response));
     else {
-        handle->client()->didReceiveResponse(handle.get(), d->m_response);
+        handle->client()->didReceiveResponse(handle.get(), ResourceResponse(d->m_response));
         continueAfterDidReceiveResponse(handle.get());
     }
 }

Modified: trunk/Source/WebKit2/ChangeLog (201942 => 201943)


--- trunk/Source/WebKit2/ChangeLog	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/ChangeLog	2016-06-10 22:02:55 UTC (rev 201943)
@@ -1,3 +1,44 @@
+2016-06-10  Alex Christensen  <achristen...@webkit.org>
+
+        Reduce ResourceResponse copying
+        https://bugs.webkit.org/show_bug.cgi?id=158232
+
+        Reviewed by Darin Adler.
+
+        * NetworkProcess/Downloads/PendingDownload.h:
+        * NetworkProcess/NetworkDataTask.h:
+        * NetworkProcess/NetworkLoad.cpp:
+        (WebKit::NetworkLoad::continueDidReceiveResponse):
+        (WebKit::NetworkLoad::sharedDidReceiveResponse):
+        (WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
+        (WebKit::NetworkLoad::didReceiveChallenge):
+        (WebKit::NetworkLoad::didReceiveResponseNetworkSession):
+        (WebKit::NetworkLoad::didReceiveResponseAsync):
+        * NetworkProcess/NetworkLoad.h:
+        * NetworkProcess/NetworkLoadClient.h:
+        * NetworkProcess/NetworkResourceLoader.cpp:
+        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
+        (WebKit::NetworkResourceLoader::abort):
+        * NetworkProcess/NetworkResourceLoader.h:
+        * NetworkProcess/PingLoad.h:
+        * NetworkProcess/cache/NetworkCacheCoders.h:
+        (WebKit::NetworkCache::Coder<Optional<T>>::encode):
+        (WebKit::NetworkCache::Coder<Optional<T>>::decode):
+        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
+        (WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
+        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
+        * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
+        (WebKit::NetworkDataTask::didCompleteWithError):
+        (WebKit::NetworkDataTask::didReceiveResponse):
+        * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+        (-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        (WebKit::WebFrameLoaderClient::dispatchDidCommitLoad):
+        * WebProcess/WebPage/WebFrame.cpp:
+        (WebKit::WebFrame::url):
+        (WebKit::WebFrame::certificateInfo):
+        (WebKit::WebFrame::innerText):
+
 2016-06-09  Ryosuke Niwa  <rn...@webkit.org>
 
         Add SPI to disable spellchecking on auto-fillable text fields

Modified: trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/Downloads/PendingDownload.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -55,7 +55,7 @@
     void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override;
     bool isSynchronous() const override { return false; }
     void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override;
-    ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) override { return ShouldContinueDidReceiveResponse::No; };
+    ShouldContinueDidReceiveResponse didReceiveResponse(WebCore::ResourceResponse&&) override { return ShouldContinueDidReceiveResponse::No; };
     void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override { };
     void didFinishLoading(double finishTime) override { };
     void didFailLoading(const WebCore::ResourceError&) override;

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkDataTask.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -70,7 +70,7 @@
 public:
     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 didReceiveResponseNetworkSession(WebCore::ResourceResponse&&, ResponseCompletionHandler) = 0;
     virtual void didReceiveData(Ref<WebCore::SharedBuffer>&&) = 0;
     virtual void didCompleteWithError(const WebCore::ResourceError&) = 0;
     virtual void didBecomeDownload() = 0;
@@ -100,7 +100,7 @@
     void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend);
     void didReceiveChallenge(const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler);
     void didCompleteWithError(const WebCore::ResourceError&);
-    void didReceiveResponse(const WebCore::ResourceResponse&, ResponseCompletionHandler);
+    void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler);
     void didReceiveData(Ref<WebCore::SharedBuffer>&&);
     void didBecomeDownload();
     

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -153,14 +153,13 @@
         m_handle->continueDidReceiveResponse();
 }
 
-NetworkLoadClient::ShouldContinueDidReceiveResponse NetworkLoad::sharedDidReceiveResponse(const ResourceResponse& receivedResponse)
+NetworkLoadClient::ShouldContinueDidReceiveResponse NetworkLoad::sharedDidReceiveResponse(ResourceResponse&& response)
 {
-    ResourceResponse response = receivedResponse;
     response.setSource(ResourceResponse::Source::Network);
     if (m_parameters.needsCertificateInfo)
         response.includeCertificateInfo();
 
-    return m_client.didReceiveResponse(response);
+    return m_client.didReceiveResponse(WTFMove(response));
 }
 
 void NetworkLoad::sharedWillSendRedirectedRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse)
@@ -239,12 +238,12 @@
         m_client.canAuthenticateAgainstProtectionSpaceAsync(challenge.protectionSpace());
 }
 
-void NetworkLoad::didReceiveResponseNetworkSession(const ResourceResponse& response, ResponseCompletionHandler completionHandler)
+void NetworkLoad::didReceiveResponseNetworkSession(ResourceResponse&& response, ResponseCompletionHandler completionHandler)
 {
     ASSERT(isMainThread());
     if (m_task && m_task->pendingDownloadID().downloadID())
         NetworkProcess::singleton().findPendingDownloadLocation(*m_task.get(), completionHandler, m_task->currentRequest());
-    else if (sharedDidReceiveResponse(response) == NetworkLoadClient::ShouldContinueDidReceiveResponse::Yes)
+    else if (sharedDidReceiveResponse(WTFMove(response)) == NetworkLoadClient::ShouldContinueDidReceiveResponse::Yes)
         completionHandler(PolicyUse);
     else
         m_responseCompletionHandler = completionHandler;
@@ -287,10 +286,10 @@
     
 #endif
 
-void NetworkLoad::didReceiveResponseAsync(ResourceHandle* handle, const ResourceResponse& receivedResponse)
+void NetworkLoad::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& receivedResponse)
 {
     ASSERT_UNUSED(handle, handle == m_handle);
-    if (sharedDidReceiveResponse(receivedResponse) == NetworkLoadClient::ShouldContinueDidReceiveResponse::Yes)
+    if (sharedDidReceiveResponse(WTFMove(receivedResponse)) == NetworkLoadClient::ShouldContinueDidReceiveResponse::Yes)
         m_handle->continueDidReceiveResponse();
 }
 

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoad.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -67,7 +67,7 @@
     // NetworkDataTaskClient
     void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler) final;
     void didReceiveChallenge(const WebCore::AuthenticationChallenge&, ChallengeCompletionHandler) final;
-    void didReceiveResponseNetworkSession(const WebCore::ResourceResponse&, ResponseCompletionHandler) final;
+    void didReceiveResponseNetworkSession(WebCore::ResourceResponse&&, ResponseCompletionHandler) final;
     void didReceiveData(Ref<WebCore::SharedBuffer>&&) final;
     void didCompleteWithError(const WebCore::ResourceError&) final;
     void didBecomeDownload() final;
@@ -78,7 +78,7 @@
     // ResourceHandleClient
     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 didReceiveResponseAsync(WebCore::ResourceHandle*, WebCore::ResourceResponse&&) override;
     void didReceiveData(WebCore::ResourceHandle*, const char*, unsigned, int encodedDataLength) override;
     void didReceiveBuffer(WebCore::ResourceHandle*, Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
     void didFinishLoading(WebCore::ResourceHandle*, double finishTime) override;
@@ -116,7 +116,7 @@
 #endif
 
 private:
-    NetworkLoadClient::ShouldContinueDidReceiveResponse sharedDidReceiveResponse(const WebCore::ResourceResponse&);
+    NetworkLoadClient::ShouldContinueDidReceiveResponse sharedDidReceiveResponse(WebCore::ResourceResponse&&);
     void sharedWillSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceResponse&&);
 
     NetworkLoadClient& m_client;

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkLoadClient.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/NetworkLoadClient.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkLoadClient.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -23,8 +23,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef NetworkLoadClient_h
-#define NetworkLoadClient_h
+#pragma once
 
 #include <WebCore/ResourceError.h>
 #include <WebCore/ResourceRequest.h>
@@ -52,7 +51,7 @@
     virtual void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) = 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 ShouldContinueDidReceiveResponse didReceiveResponse(WebCore::ResourceResponse&&) = 0;
     virtual void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) = 0;
     virtual void didFinishLoading(double finishTime) = 0;
     virtual void didFailLoading(const WebCore::ResourceError&) = 0;
@@ -62,6 +61,3 @@
 };
 
 } // namespace WebKit
-
-#endif // NetworkLoadClient_h
-

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -178,7 +178,7 @@
             loader->dispatchWillSendRequestForCacheEntry(WTFMove(entry));
             return;
         }
-        if (loader->m_parameters.needsCertificateInfo && !entry->response().containsCertificateInfo()) {
+        if (loader->m_parameters.needsCertificateInfo && !entry->response().certificateInfo()) {
             loader->startNetworkLoad(request);
             return;
         }
@@ -274,7 +274,7 @@
     cleanup();
 }
 
-auto NetworkResourceLoader::didReceiveResponse(const ResourceResponse& receivedResponse) -> ShouldContinueDidReceiveResponse
+auto NetworkResourceLoader::didReceiveResponse(ResourceResponse&& receivedResponse) -> ShouldContinueDidReceiveResponse
 {
     NETWORKRESOURCELOADER_LOG_ALWAYS("Received network resource response: loader = %p, pageID = %llu, frameID = %llu, isMainResource = %d, isSynchronous = %d, httpStatusCode = %d", this, m_parameters.webPageID, m_parameters.webFrameID, isMainResource(), isSynchronous(), receivedResponse.httpStatusCode());
 

Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -88,7 +88,7 @@
     void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override;
     bool isSynchronous() const override;
     void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&&) override;
-    ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) override;
+    ShouldContinueDidReceiveResponse didReceiveResponse(WebCore::ResourceResponse&&) override;
     void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
     void didFinishLoading(double finishTime) override;
     void didFailLoading(const WebCore::ResourceError&) override;

Modified: trunk/Source/WebKit2/NetworkProcess/PingLoad.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/PingLoad.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/PingLoad.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -58,7 +58,7 @@
         completionHandler(AuthenticationChallengeDisposition::Cancel, { });
         delete this;
     }
-    void didReceiveResponseNetworkSession(const WebCore::ResourceResponse&, ResponseCompletionHandler completionHandler) override
+    void didReceiveResponseNetworkSession(WebCore::ResourceResponse&&, ResponseCompletionHandler completionHandler) override
     {
         completionHandler(WebCore::PolicyAction::PolicyIgnore);
         delete this;

Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -23,8 +23,7 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef NetworkCacheCoders_h
-#define NetworkCacheCoders_h
+#pragma once
 
 #if ENABLE(NETWORK_CACHE)
 
@@ -81,6 +80,38 @@
     }
 };
 
+template<typename T> struct Coder<Optional<T>> {
+    static void encode(Encoder& encoder, const Optional<T>& optional)
+    {
+        if (!optional) {
+            encoder << false;
+            return;
+        }
+        
+        encoder << true;
+        encoder << optional.value();
+    }
+    
+    static bool decode(Decoder& decoder, Optional<T>& optional)
+    {
+        bool isEngaged;
+        if (!decoder.decode(isEngaged))
+            return false;
+        
+        if (!isEngaged) {
+            optional = Nullopt;
+            return true;
+        }
+        
+        T value;
+        if (!decoder.decode(value))
+            return false;
+        
+        optional = WTFMove(value);
+        return true;
+    }
+};
+
 template<typename KeyType, typename ValueType> struct Coder<WTF::KeyValuePair<KeyType, ValueType>> {
     static void encode(Encoder& encoder, const WTF::KeyValuePair<KeyType, ValueType>& pair)
     {
@@ -267,4 +298,3 @@
 }
 }
 #endif
-#endif

Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -70,7 +70,7 @@
     abort();
 }
 
-auto SpeculativeLoad::didReceiveResponse(const ResourceResponse& receivedResponse) -> ShouldContinueDidReceiveResponse
+auto SpeculativeLoad::didReceiveResponse(ResourceResponse&& receivedResponse) -> ShouldContinueDidReceiveResponse
 {
     m_response = receivedResponse;
 

Modified: trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h	2016-06-10 22:02:55 UTC (rev 201943)
@@ -57,7 +57,7 @@
     void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override { }
     bool isSynchronous() const override { return false; }
     void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override;
-    ShouldContinueDidReceiveResponse didReceiveResponse(const WebCore::ResourceResponse&) override;
+    ShouldContinueDidReceiveResponse didReceiveResponse(WebCore::ResourceResponse&&) override;
     void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
     void didFinishLoading(double finishTime) override;
     void didFailLoading(const WebCore::ResourceError&) override;

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm	2016-06-10 22:02:55 UTC (rev 201943)
@@ -165,10 +165,10 @@
         m_client->didCompleteWithError(error);
 }
 
-void NetworkDataTask::didReceiveResponse(const WebCore::ResourceResponse& response, ResponseCompletionHandler completionHandler)
+void NetworkDataTask::didReceiveResponse(WebCore::ResourceResponse&& response, ResponseCompletionHandler completionHandler)
 {
     if (m_client)
-        m_client->didReceiveResponseNetworkSession(response, completionHandler);
+        m_client->didReceiveResponseNetworkSession(WTFMove(response), completionHandler);
     else {
         ASSERT_NOT_REACHED();
         completionHandler(WebCore::PolicyAction::PolicyIgnore);

Modified: trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm (201942 => 201943)


--- trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/NetworkProcess/cocoa/NetworkSessionCocoa.mm	2016-06-10 22:02:55 UTC (rev 201943)
@@ -247,7 +247,7 @@
         WebCore::ResourceResponse resourceResponse(response);
         copyTimingData([dataTask _timingData], resourceResponse.resourceLoadTiming());
         auto completionHandlerCopy = Block_copy(completionHandler);
-        networkDataTask->didReceiveResponse(resourceResponse, [completionHandlerCopy, taskIdentifier](WebCore::PolicyAction policyAction) {
+        networkDataTask->didReceiveResponse(WTFMove(resourceResponse), [completionHandlerCopy, taskIdentifier](WebCore::PolicyAction policyAction) {
             LOG(NetworkSession, "%llu didReceiveResponse completionHandler (cancel)", taskIdentifier);
             completionHandlerCopy(toNSURLSessionResponseDisposition(policyAction));
             Block_release(completionHandlerCopy);

Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (201942 => 201943)


--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -468,7 +468,7 @@
 
     // Notify the UIProcess.
 
-    webPage->send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), documentLoader.response().mimeType(), m_frameHasCustomContentProvider, static_cast<uint32_t>(m_frame->coreFrame()->loader().loadType()), documentLoader.response().certificateInfo(), m_frame->coreFrame()->document()->isPluginDocument(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
+    webPage->send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame->frameID(), documentLoader.navigationID(), documentLoader.response().mimeType(), m_frameHasCustomContentProvider, static_cast<uint32_t>(m_frame->coreFrame()->loader().loadType()), documentLoader.response().certificateInfo().valueOrCompute([] { return CertificateInfo(); }), m_frame->coreFrame()->document()->isPluginDocument(), UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())));
     webPage->didCommitLoad(m_frame);
 }
 

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp (201942 => 201943)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp	2016-06-10 22:00:23 UTC (rev 201942)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp	2016-06-10 22:02:55 UTC (rev 201943)
@@ -397,16 +397,16 @@
     return documentLoader->url().string();
 }
 
-WebCore::CertificateInfo WebFrame::certificateInfo() const
+CertificateInfo WebFrame::certificateInfo() const
 {
     if (!m_coreFrame)
-        return CertificateInfo();
+        return { };
 
     DocumentLoader* documentLoader = m_coreFrame->loader().documentLoader();
     if (!documentLoader)
-        return CertificateInfo();
+        return { };
 
-    return documentLoader->response().certificateInfo();
+    return documentLoader->response().certificateInfo().valueOrCompute([] { return CertificateInfo(); });
 }
 
 String WebFrame::innerText() const
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to