Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp (191847 => 191848)
--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2015-10-31 23:17:43 UTC (rev 191847)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp 2015-11-01 00:14:49 UTC (rev 191848)
@@ -271,51 +271,8 @@
cleanup();
}
-#if USE(NETWORK_SESSION)
-
-void NetworkResourceLoader::willPerformHTTPRedirection(const WebCore::ResourceResponse&, const WebCore::ResourceRequest& request, std::function<void(const WebCore::ResourceRequest&)> completionHandler)
+NetworkResourceLoader::ShouldContinueDidReceiveResponse NetworkResourceLoader::sharedDidReceiveResponse(const WebCore::ResourceResponse& receivedResponse)
{
- notImplemented();
- completionHandler(request);
-}
-
-void NetworkResourceLoader::didReceiveChallenge(const WebCore::AuthenticationChallenge& challenge, std::function<void(AuthenticationChallengeDisposition, const WebCore::Credential&)> completionHandler)
-{
- notImplemented();
- completionHandler(AuthenticationChallengeDisposition::PerformDefaultHandling, WebCore::Credential());
-}
-
-void NetworkResourceLoader::didReceiveResponse(WebCore::ResourceResponse& response, std::function<void(ResponseDisposition)> completionHandler)
-{
- ASSERT(isMainThread());
- m_response = response;
- m_response.setSource(ResourceResponse::Source::Network);
- if (m_parameters.needsCertificateInfo)
- m_response.includeCertificateInfo();
-
- bool shouldWaitContinueDidReceiveResponse = originalRequest().requester() == ResourceRequest::Requester::Main;
- if (!sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveResponse(m_response, shouldWaitContinueDidReceiveResponse)))
- return;
- completionHandler(ResponseDisposition::Allow);
-}
-
-void NetworkResourceLoader::didReceiveData(RefPtr<WebCore::SharedBuffer> buffer)
-{
- ASSERT(buffer);
- sendBufferMaybeAborting(*buffer, buffer->size());
-}
-
-void NetworkResourceLoader::didCompleteWithError(const WebCore::ResourceError&)
-{
- send(Messages::WebResourceLoader::DidFinishResourceLoad(WTF::monotonicallyIncreasingTime()));
-}
-
-#else
-
-void NetworkResourceLoader::didReceiveResponseAsync(ResourceHandle* handle, const ResourceResponse& receivedResponse)
-{
- ASSERT_UNUSED(handle, handle == m_handle);
-
m_response = receivedResponse;
m_response.setSource(ResourceResponse::Source::Network);
@@ -350,7 +307,7 @@
m_synchronousLoadData->response = m_response;
else {
if (!sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveResponse(m_response, shouldWaitContinueDidReceiveResponse)))
- return;
+ return ShouldContinueDidReceiveResponse::No;
}
}
@@ -360,21 +317,12 @@
shouldContinueDidReceiveResponse = shouldContinueDidReceiveResponse || m_cacheEntryForValidation;
#endif
if (!shouldContinueDidReceiveResponse)
- return;
-
- m_handle->continueDidReceiveResponse();
+ return ShouldContinueDidReceiveResponse::No;
+ return ShouldContinueDidReceiveResponse::Yes;
}
-void NetworkResourceLoader::didReceiveData(ResourceHandle*, const char* /* data */, unsigned /* length */, int /* encodedDataLength */)
+void NetworkResourceLoader::sharedDidReceiveBuffer(RefPtr<WebCore::SharedBuffer>&& buffer, int reportedEncodedDataLength)
{
- // The NetworkProcess should never get a didReceiveData callback.
- // We should always be using didReceiveBuffer.
- ASSERT_NOT_REACHED();
-}
-
-void NetworkResourceLoader::didReceiveBuffer(ResourceHandle* handle, PassRefPtr<SharedBuffer> buffer, int reportedEncodedDataLength)
-{
- ASSERT_UNUSED(handle, handle == m_handle);
#if ENABLE(NETWORK_CACHE)
ASSERT(!m_cacheEntryForValidation);
@@ -400,10 +348,8 @@
sendBufferMaybeAborting(*buffer, encodedDataLength);
}
-void NetworkResourceLoader::didFinishLoading(ResourceHandle* handle, double finishTime)
+void NetworkResourceLoader::sharedDidFinishLoading(double finishTime)
{
- ASSERT_UNUSED(handle, handle == m_handle);
-
#if ENABLE(NETWORK_CACHE)
if (NetworkCache::singleton().isEnabled()) {
if (m_cacheEntryForValidation) {
@@ -457,9 +403,9 @@
cleanup();
}
-void NetworkResourceLoader::didFail(ResourceHandle* handle, const ResourceError& error)
+void NetworkResourceLoader::sharedDidFail(const WebCore::ResourceError& error)
{
- ASSERT_UNUSED(handle, !handle || handle == m_handle);
+ ASSERT(!error.isNull());
#if ENABLE(NETWORK_CACHE)
m_cacheEntryForValidation = nullptr;
@@ -474,10 +420,8 @@
cleanup();
}
-void NetworkResourceLoader::willSendRequestAsync(ResourceHandle* handle, const ResourceRequest& request, const ResourceResponse& redirectResponse)
+void NetworkResourceLoader::sharedWillSendRedirectedRequest(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& redirectResponse)
{
- ASSERT_UNUSED(handle, handle == m_handle);
-
// We only expect to get the willSendRequest callback from ResourceHandle as the result of a redirect.
ASSERT(!redirectResponse.isNull());
ASSERT(RunLoop::isMain());
@@ -501,7 +445,82 @@
}
sendAbortingOnFailure(Messages::WebResourceLoader::WillSendRequest(m_currentRequest, redirectResponse));
}
+
+#if USE(NETWORK_SESSION)
+void NetworkResourceLoader::willPerformHTTPRedirection(const WebCore::ResourceResponse& response, const WebCore::ResourceRequest& request, std::function<void(const WebCore::ResourceRequest&)> completionHandler)
+{
+ sharedWillSendRedirectedRequest(request, response);
+ completionHandler(request);
+}
+
+void NetworkResourceLoader::didReceiveChallenge(const WebCore::AuthenticationChallenge& challenge, std::function<void(AuthenticationChallengeDisposition, const WebCore::Credential&)> completionHandler)
+{
+ notImplemented();
+ completionHandler(AuthenticationChallengeDisposition::PerformDefaultHandling, WebCore::Credential());
+}
+
+void NetworkResourceLoader::didReceiveResponse(const WebCore::ResourceResponse& response, std::function<void(ResponseDisposition)> completionHandler)
+{
+ ASSERT(isMainThread());
+ sharedDidReceiveResponse(response);
+ completionHandler(ResponseDisposition::Allow);
+}
+
+void NetworkResourceLoader::didReceiveData(RefPtr<WebCore::SharedBuffer>&& buffer)
+{
+ ASSERT(buffer);
+ sharedDidReceiveBuffer(WTF::move(buffer), buffer->size());
+}
+
+void NetworkResourceLoader::didCompleteWithError(const WebCore::ResourceError& error)
+{
+ if (error.isNull())
+ sharedDidFinishLoading(WTF::monotonicallyIncreasingTime());
+ else
+ sharedDidFail(error);
+}
+
+#else
+
+void NetworkResourceLoader::didReceiveResponseAsync(ResourceHandle* handle, const ResourceResponse& receivedResponse)
+{
+ ASSERT_UNUSED(handle, handle == m_handle);
+ if (sharedDidReceiveResponse(receivedResponse) == ShouldContinueDidReceiveResponse::Yes)
+ m_handle->continueDidReceiveResponse();
+}
+
+void NetworkResourceLoader::didReceiveData(ResourceHandle*, const char* /* data */, unsigned /* length */, int /* encodedDataLength */)
+{
+ // The NetworkProcess should never get a didReceiveData callback.
+ // We should always be using didReceiveBuffer.
+ ASSERT_NOT_REACHED();
+}
+
+void NetworkResourceLoader::didReceiveBuffer(ResourceHandle* handle, PassRefPtr<WebCore::SharedBuffer> buffer, int reportedEncodedDataLength)
+{
+ ASSERT_UNUSED(handle, handle == m_handle);
+ sharedDidReceiveBuffer(WTF::move(buffer), reportedEncodedDataLength);
+}
+
+void NetworkResourceLoader::didFinishLoading(ResourceHandle* handle, double finishTime)
+{
+ ASSERT_UNUSED(handle, handle == m_handle);
+ sharedDidFinishLoading(finishTime);
+}
+
+void NetworkResourceLoader::didFail(ResourceHandle* handle, const ResourceError& error)
+{
+ ASSERT_UNUSED(handle, !handle || handle == m_handle);
+ sharedDidFail(error);
+}
+
+void NetworkResourceLoader::willSendRequestAsync(ResourceHandle* handle, const ResourceRequest& request, const ResourceResponse& redirectResponse)
+{
+ ASSERT_UNUSED(handle, handle == m_handle);
+ sharedWillSendRedirectedRequest(request, redirectResponse);
+}
+
#endif // USE(NETWORK_SESSION)
void NetworkResourceLoader::continueWillSendRequest(const ResourceRequest& newRequest)
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h (191847 => 191848)
--- trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h 2015-10-31 23:17:43 UTC (rev 191847)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.h 2015-11-01 00:14:49 UTC (rev 191848)
@@ -133,12 +133,22 @@
virtual IPC::Connection* messageSenderConnection() override;
virtual uint64_t messageSenderDestinationID() override { return m_parameters.identifier; }
+ enum ShouldContinueDidReceiveResponse {
+ Yes,
+ No
+ };
+ ShouldContinueDidReceiveResponse sharedDidReceiveResponse(const WebCore::ResourceResponse&);
+ void sharedWillSendRedirectedRequest(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
+ void sharedDidReceiveBuffer(RefPtr<WebCore::SharedBuffer>&&, int reportedEncodedDataLength);
+ void sharedDidFail(const WebCore::ResourceError&);
+ void sharedDidFinishLoading(double finishTime);
+
#if USE(NETWORK_SESSION)
// NetworkSessionTaskClient.
virtual void willPerformHTTPRedirection(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, std::function<void(const WebCore::ResourceRequest&)>) final override;
virtual void didReceiveChallenge(const WebCore::AuthenticationChallenge&, std::function<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>) final override;
- virtual void didReceiveResponse(WebCore::ResourceResponse&, std::function<void(ResponseDisposition)>) final override;
- virtual void didReceiveData(RefPtr<WebCore::SharedBuffer>) final override;
+ virtual void didReceiveResponse(const WebCore::ResourceResponse&, std::function<void(ResponseDisposition)>) final override;
+ virtual void didReceiveData(RefPtr<WebCore::SharedBuffer>&&) final override;
virtual void didCompleteWithError(const WebCore::ResourceError&) final override;
#else
// ResourceHandleClient
Modified: trunk/Source/WebKit2/NetworkProcess/NetworkSession.h (191847 => 191848)
--- trunk/Source/WebKit2/NetworkProcess/NetworkSession.h 2015-10-31 23:17:43 UTC (rev 191847)
+++ trunk/Source/WebKit2/NetworkProcess/NetworkSession.h 2015-11-01 00:14:49 UTC (rev 191848)
@@ -67,8 +67,8 @@
public:
virtual void willPerformHTTPRedirection(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, std::function<void(const WebCore::ResourceRequest&)>) = 0;
virtual void didReceiveChallenge(const WebCore::AuthenticationChallenge&, std::function<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>) = 0;
- virtual void didReceiveResponse(WebCore::ResourceResponse&, std::function<void(ResponseDisposition)>) = 0;
- virtual void didReceiveData(RefPtr<WebCore::SharedBuffer>) = 0;
+ virtual void didReceiveResponse(const WebCore::ResourceResponse&, std::function<void(ResponseDisposition)>) = 0;
+ virtual void didReceiveData(RefPtr<WebCore::SharedBuffer>&&) = 0;
virtual void didCompleteWithError(const WebCore::ResourceError&) = 0;
virtual ~NetworkSessionTaskClient() { }