Diff
Modified: trunk/Source/WebCore/ChangeLog (227454 => 227455)
--- trunk/Source/WebCore/ChangeLog 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/ChangeLog 2018-01-23 23:22:19 UTC (rev 227455)
@@ -1,3 +1,49 @@
+2018-01-23 Alex Christensen <achristen...@webkit.org>
+
+ Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
+ https://bugs.webkit.org/show_bug.cgi?id=181961
+
+ Reviewed by Michael Catanzaro.
+
+ No change in behavior.
+
+ * loader/ResourceLoader.cpp:
+ (WebCore::ResourceLoader::didReceiveResponseAsync):
+ * loader/ResourceLoader.h:
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::didReceiveResponseAsync):
+ * loader/appcache/ApplicationCacheGroup.h:
+ * platform/network/BlobResourceHandle.cpp:
+ (WebCore::BlobResourceHandle::notifyResponseOnSuccess):
+ (WebCore::BlobResourceHandle::notifyResponseOnError):
+ (WebCore::BlobResourceHandle::continueDidReceiveResponse): Deleted.
+ * platform/network/BlobResourceHandle.h:
+ * platform/network/PingHandle.h:
+ * platform/network/ResourceHandle.cpp:
+ (WebCore::ResourceHandle::didReceiveResponse):
+ * platform/network/ResourceHandle.h:
+ * platform/network/ResourceHandleClient.h:
+ * platform/network/SynchronousLoaderClient.cpp:
+ (WebCore::SynchronousLoaderClient::didReceiveResponseAsync):
+ * platform/network/SynchronousLoaderClient.h:
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse): Deleted.
+ * platform/network/curl/ResourceHandleCurlDelegate.cpp:
+ (WebCore::ResourceHandleCurlDelegate::curlDidReceiveResponse):
+ (WebCore::ResourceHandleCurlDelegate::handleDataURL):
+ (WebCore::ResourceHandleCurlDelegate::continueDidReceiveResponse): Deleted.
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::continueDidReceiveResponse): Deleted.
+ * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
+ * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
+ (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
+ (-[WebCoreResourceHandleAsOperationQueueDelegate continueDidReceiveResponse]): Deleted.
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::nextMultipartResponsePartCallback):
+ (WebCore::sendRequestCallback):
+ (WebCore::ResourceHandle::continueDidReceiveResponse): Deleted.
+
2018-01-23 Chris Dumez <cdu...@apple.com>
Unreviewed, rollout r227216 as it seems to be causing deadlocks
Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (227454 => 227455)
--- trunk/Source/WebCore/loader/ResourceLoader.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -657,14 +657,14 @@
didSendData(bytesSent, totalBytesToBeSent);
}
-void ResourceLoader::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& response)
+void ResourceLoader::didReceiveResponseAsync(ResourceHandle*, ResourceResponse&& response, CompletionHandler<void()>&& completionHandler)
{
if (documentLoader()->applicationCacheHost().maybeLoadFallbackForResponse(this, response)) {
- handle->continueDidReceiveResponse();
+ completionHandler();
return;
}
didReceiveResponse(response);
- handle->continueDidReceiveResponse();
+ completionHandler();
}
void ResourceLoader::didReceiveData(ResourceHandle*, const char* data, unsigned length, int encodedDataLength)
Modified: trunk/Source/WebCore/loader/ResourceLoader.h (227454 => 227455)
--- trunk/Source/WebCore/loader/ResourceLoader.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/loader/ResourceLoader.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -182,7 +182,7 @@
// ResourceHandleClient
void didSendData(ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
- void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) override;
+ void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) override;
void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) override;
void didReceiveData(ResourceHandle*, const char*, unsigned, int encodedDataLength) override;
void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int encodedDataLength) override;
Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (227454 => 227455)
--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -489,7 +489,7 @@
return handle;
}
-void ApplicationCacheGroup::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& response)
+void ApplicationCacheGroup::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& response, CompletionHandler<void()>&& completionHandler)
{
ASSERT(m_frame);
InspectorInstrumentation::didReceiveResourceResponse(*m_frame, m_currentResourceIdentifier, m_frame->loader().documentLoader(), response, nullptr);
@@ -496,7 +496,7 @@
if (handle == m_manifestHandle) {
didReceiveManifestResponse(response);
- handle->continueDidReceiveResponse();
+ completionHandler();
return;
}
@@ -523,7 +523,7 @@
m_currentHandle = nullptr;
// Load the next resource, if any.
startLoadingEntry();
- handle->continueDidReceiveResponse();
+ completionHandler();
return;
}
// The server could return 304 for an unconditional request - in this case, we handle the response as a normal error.
@@ -555,12 +555,12 @@
// Load the next resource, if any.
startLoadingEntry();
}
- handle->continueDidReceiveResponse();
+ completionHandler();
return;
}
m_currentResource = ApplicationCacheResource::create(url, response, type);
- handle->continueDidReceiveResponse();
+ completionHandler();
}
void ApplicationCacheGroup::willSendRequestAsync(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h (227454 => 227455)
--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -109,7 +109,7 @@
bool shouldUseCredentialStorage(ResourceHandle*) override { return true; }
// ResourceHandleClient
- void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) final;
+ void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) final;
void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) final;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void canAuthenticateAgainstProtectionSpaceAsync(ResourceHandle*, const ProtectionSpace&) final;
Modified: trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -75,7 +75,7 @@
public:
BlobResourceSynchronousLoader(ResourceError&, ResourceResponse&, Vector<char>&);
- void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) final;
+ void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) final;
void didFail(ResourceHandle*, const ResourceError&) final;
void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) final;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
@@ -109,12 +109,12 @@
}
#endif
-void BlobResourceSynchronousLoader::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& response)
+void BlobResourceSynchronousLoader::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& response, CompletionHandler<void()>&& completionHandler)
{
// We cannot handle the size that is more than maximum integer.
if (response.expectedContentLength() > INT_MAX) {
m_error = ResourceError(webKitBlobResourceDomain, static_cast<int>(BlobResourceHandle::Error::NotReadableError), response.url(), "File is too large");
- handle->continueDidReceiveResponse();
+ completionHandler();
return;
}
@@ -123,7 +123,7 @@
// Read all the data.
m_data.resize(static_cast<size_t>(response.expectedContentLength()));
static_cast<BlobResourceHandle*>(handle)->readSync(m_data.data(), static_cast<int>(m_data.size()));
- handle->continueDidReceiveResponse();
+ completionHandler();
}
void BlobResourceSynchronousLoader::didFail(ResourceHandle*, const ResourceError& error)
@@ -176,12 +176,6 @@
ResourceHandle::cancel();
}
-void BlobResourceHandle::continueDidReceiveResponse()
-{
- m_buffer.resize(bufferSize);
- readAsync();
-}
-
void BlobResourceHandle::start()
{
if (!m_async) {
@@ -584,7 +578,10 @@
// as if the response had a Content-Disposition header with the filename parameter set to the File's name attribute.
// Notably, this will affect a name suggested in "File Save As".
- client()->didReceiveResponseAsync(this, WTFMove(response));
+ client()->didReceiveResponseAsync(this, WTFMove(response), [this, protectedThis = makeRef(*this)] {
+ m_buffer.resize(bufferSize);
+ readAsync();
+ });
}
void BlobResourceHandle::notifyResponseOnError()
@@ -607,7 +604,10 @@
break;
}
- client()->didReceiveResponseAsync(this, WTFMove(response));
+ client()->didReceiveResponseAsync(this, WTFMove(response), [this, protectedThis = makeRef(*this)] {
+ m_buffer.resize(bufferSize);
+ readAsync();
+ });
}
void BlobResourceHandle::notifyReceiveData(const char* data, int bytesRead)
Modified: trunk/Source/WebCore/platform/network/BlobResourceHandle.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/BlobResourceHandle.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/BlobResourceHandle.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -75,7 +75,6 @@
// ResourceHandle methods.
void cancel() override;
- void continueDidReceiveResponse() override;
void doStart();
void getSizeForNext();
Modified: trunk/Source/WebCore/platform/network/PingHandle.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/PingHandle.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/PingHandle.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -67,9 +67,9 @@
completionHandler({ });
pingLoadComplete(ResourceError { String(), 0, m_currentRequest.url(), ASCIILiteral("Not allowed to follow redirects"), ResourceError::Type::AccessControl });
}
- void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&& response) final
+ void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&& response, CompletionHandler<void()>&& completionHandler) final
{
- m_handle->continueDidReceiveResponse();
+ completionHandler();
pingLoadComplete({ }, response);
}
void didReceiveBuffer(ResourceHandle*, Ref<SharedBuffer>&&, int) final { pingLoadComplete(); }
Modified: trunk/Source/WebCore/platform/network/ResourceHandle.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/ResourceHandle.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/ResourceHandle.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -33,6 +33,7 @@
#include "ResourceHandleClient.h"
#include "Timer.h"
#include <algorithm>
+#include <wtf/CompletionHandler.h>
#include <wtf/MainThread.h>
#include <wtf/NeverDestroyed.h>
#include <wtf/text/AtomicStringHash.h>
@@ -150,7 +151,7 @@
d->m_client = nullptr;
}
-void ResourceHandle::didReceiveResponse(ResourceResponse&& response)
+void ResourceHandle::didReceiveResponse(ResourceResponse&& response, CompletionHandler<void()>&& completionHandler)
{
if (response.isHTTP09()) {
auto url = ""
@@ -159,11 +160,11 @@
cancel();
String message = "Cancelled load from '" + url.stringCenterEllipsizedToLength() + "' because it is using HTTP/0.9.";
d->m_client->didFail(this, { String(), 0, url, message });
- continueDidReceiveResponse();
+ completionHandler();
return;
}
}
- client()->didReceiveResponseAsync(this, WTFMove(response));
+ client()->didReceiveResponseAsync(this, WTFMove(response), WTFMove(completionHandler));
}
#if !USE(SOUP) && !USE(CURL)
Modified: trunk/Source/WebCore/platform/network/ResourceHandle.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/ResourceHandle.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/ResourceHandle.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -107,7 +107,7 @@
void willSendRequest(ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&);
#endif
- void didReceiveResponse(ResourceResponse&&);
+ void didReceiveResponse(ResourceResponse&&, CompletionHandler<void()>&&);
bool shouldUseCredentialStorage();
void didReceiveAuthenticationChallenge(const AuthenticationChallenge&);
@@ -193,9 +193,6 @@
WEBCORE_EXPORT ResourceHandleClient* client() const;
WEBCORE_EXPORT void clearClient();
- // Called in response to ResourceHandleClient::didReceiveResponseAsync().
- WEBCORE_EXPORT virtual void continueDidReceiveResponse();
-
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
// Called in response to ResourceHandleClient::canAuthenticateAgainstProtectionSpaceAsync().
WEBCORE_EXPORT void continueCanAuthenticateAgainstProtectionSpace(bool);
Modified: trunk/Source/WebCore/platform/network/ResourceHandleClient.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/ResourceHandleClient.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/ResourceHandleClient.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -77,8 +77,7 @@
WEBCORE_EXPORT virtual void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) = 0;
- // Client will call ResourceHandle::continueDidReceiveResponse() when ready.
- WEBCORE_EXPORT virtual void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) = 0;
+ WEBCORE_EXPORT virtual void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) = 0;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
// Client will pass an updated request using ResourceHandle::continueCanAuthenticateAgainstProtectionSpace() when ready.
Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -62,10 +62,10 @@
}
#endif
-void SynchronousLoaderClient::didReceiveResponseAsync(ResourceHandle* handle, ResourceResponse&& response)
+void SynchronousLoaderClient::didReceiveResponseAsync(ResourceHandle*, ResourceResponse&& response, CompletionHandler<void()>&& completionHandler)
{
m_response = WTFMove(response);
- handle->continueDidReceiveResponse();
+ completionHandler();
}
void SynchronousLoaderClient::didReceiveData(ResourceHandle*, const char* data, unsigned length, int /*encodedDataLength*/)
Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -49,7 +49,7 @@
void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) override;
bool shouldUseCredentialStorage(ResourceHandle*) override;
void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&) override;
- void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) override;
+ void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) override;
void didReceiveData(ResourceHandle*, const char*, unsigned, int /*encodedDataLength*/) override;
void didFinishLoading(ResourceHandle*) override;
void didFail(ResourceHandle*, const ResourceError&) override;
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -657,11 +657,6 @@
return d->m_currentRequest;
}
-void ResourceHandle::continueDidReceiveResponse()
-{
- d->m_connectionDelegate->continueDidReceiveResponse();
-}
-
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void ResourceHandle::continueCanAuthenticateAgainstProtectionSpace(bool canAuthenticate)
{
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -46,7 +46,6 @@
virtual void setupConnectionScheduling(CFURLConnectionRef) = 0;
virtual void releaseHandle();
- virtual void continueDidReceiveResponse() = 0;
virtual void continueWillCacheResponse(CFCachedURLResponseRef) = 0;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
virtual void continueCanAuthenticateAgainstProtectionSpace(bool) = 0;
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -180,15 +180,13 @@
void ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse(CFURLConnectionRef connection, CFURLResponseRef cfResponse)
{
auto protectedThis = makeRef(*this);
- auto work = [protectedThis = makeRef(*this), cfResponse = RetainPtr<CFURLResponseRef>(cfResponse), connection = RetainPtr<CFURLConnectionRef>(connection)] () {
- auto& handle = protectedThis->m_handle;
-
- if (!protectedThis->hasHandle() || !handle->client() || !handle->connection()) {
- protectedThis->continueDidReceiveResponse();
+ auto work = [this, protectedThis = makeRef(*this), cfResponse = RetainPtr<CFURLResponseRef>(cfResponse), connection = RetainPtr<CFURLConnectionRef>(connection)] () mutable {
+ if (!hasHandle() || !m_handle->client() || !m_handle->connection()) {
+ m_semaphore.signal();
return;
}
- LOG(Network, "CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse(handle=%p) (%s)", handle, handle->firstRequest().url().string().utf8().data());
+ LOG(Network, "CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse(handle=%p) (%s)", m_handle, m_handle->firstRequest().url().string().utf8().data());
// Avoid MIME type sniffing if the response comes back as 304 Not Modified.
auto msg = CFURLResponseGetHTTPResponse(cfResponse.get());
@@ -195,15 +193,17 @@
int statusCode = msg ? CFHTTPMessageGetResponseStatusCode(msg) : 0;
if (statusCode != 304) {
- bool isMainResourceLoad = handle->firstRequest().requester() == ResourceRequest::Requester::Main;
+ bool isMainResourceLoad = m_handle->firstRequest().requester() == ResourceRequest::Requester::Main;
}
- if (_CFURLRequestCopyProtocolPropertyForKey(handle->firstRequest().cfURLRequest(DoNotUpdateHTTPBody), CFSTR("ForceHTMLMIMEType")))
+ if (_CFURLRequestCopyProtocolPropertyForKey(m_handle->firstRequest().cfURLRequest(DoNotUpdateHTTPBody), CFSTR("ForceHTMLMIMEType")))
CFURLResponseSetMIMEType(cfResponse.get(), CFSTR("text/html"));
ResourceResponse resourceResponse(cfResponse.get());
resourceResponse.setSource(ResourceResponse::Source::Network);
- handle->didReceiveResponse(WTFMove(resourceResponse));
+ m_handle->didReceiveResponse(WTFMove(resourceResponse), [this, protectedThis = WTFMove(protectedThis)] {
+ m_semaphore.signal();
+ });
};
if (m_messageQueue)
@@ -389,11 +389,6 @@
}
#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
-void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse()
-{
- m_semaphore.signal();
-}
-
void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillCacheResponse(CFCachedURLResponseRef response)
{
m_cachedResponseResult = response;
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -58,7 +58,6 @@
void didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite) override;
Boolean shouldUseCredentialStorage() override;
- void continueDidReceiveResponse() override;
void continueWillCacheResponse(CFCachedURLResponseRef) override;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Boolean canRespondToProtectionSpace(CFURLProtectionSpaceRef) override;
Modified: trunk/Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/curl/ResourceHandleCurl.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -38,6 +38,7 @@
#include "Logging.h"
#include "ResourceHandleInternal.h"
#include "SynchronousLoaderClient.h"
+#include <wtf/CompletionHandler.h>
namespace WebCore {
@@ -214,8 +215,12 @@
clearAuthentication();
- auto protectedThis = makeRef(*this);
- didReceiveResponse(ResourceResponse(d->m_response));
+ didReceiveResponse(ResourceResponse(d->m_response), [this, protectedThis = makeRef(*this)] {
+ ASSERT(isMainThread());
+
+ if (d->m_delegate)
+ d->m_delegate->continueDidReceiveResponse();
+ });
}
void ResourceHandle::receivedCancellation(const AuthenticationChallenge& challenge)
@@ -259,14 +264,6 @@
response = client.response();
}
-void ResourceHandle::continueDidReceiveResponse()
-{
- ASSERT(isMainThread());
-
- if (d->m_delegate)
- d->m_delegate->continueDidReceiveResponse();
-}
-
void ResourceHandle::platformContinueSynchronousDidReceiveResponse()
{
ASSERT(isMainThread());
Modified: trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -221,7 +221,9 @@
CurlCacheManager::singleton().didReceiveResponse(*m_handle, response());
auto protectedThis = makeRef(*m_handle);
- m_handle->didReceiveResponse(ResourceResponse(response()));
+ m_handle->didReceiveResponse(ResourceResponse(response()), [this, protectedThis = makeRef(*this)] {
+ continueAfterDidReceiveResponse();
+ });
}
}
@@ -426,7 +428,9 @@
if (base64) {
data = ""
- m_handle->didReceiveResponse(WTFMove(response));
+ m_handle->didReceiveResponse(WTFMove(response), [this, protectedThis = makeRef(*this)] {
+ continueAfterDidReceiveResponse();
+ });
// didReceiveResponse might cause the client to be deleted.
if (m_handle->client()) {
@@ -437,7 +441,9 @@
} else {
TextEncoding encoding(charset);
data = "" encoding);
- m_handle->didReceiveResponse(WTFMove(response));
+ m_handle->didReceiveResponse(WTFMove(response), [this, protectedThis = makeRef(*this)] {
+ continueAfterDidReceiveResponse();
+ });
// didReceiveResponse might cause the client to be deleted.
if (m_handle->client()) {
Modified: trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm (227454 => 227455)
--- trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm 2018-01-23 23:22:19 UTC (rev 227455)
@@ -471,11 +471,6 @@
});
}
-void ResourceHandle::continueDidReceiveResponse()
-{
- [delegate() continueDidReceiveResponse];
-}
-
void ResourceHandle::didReceiveAuthenticationChallenge(const AuthenticationChallenge& challenge)
{
ASSERT(!d->m_currentMacChallenge);
Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h (227454 => 227455)
--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -47,7 +47,6 @@
- (void)detachHandle;
- (id)initWithHandle:(WebCore::ResourceHandle*)handle messageQueue:(MessageQueue<Function<void()>>*)messageQueue;
-- (void)continueDidReceiveResponse;
- (void)continueCanAuthenticateAgainstProtectionSpace:(BOOL)canAuthenticate;
- (void)continueWillCacheResponse:(NSCachedURLResponse *)response;
@end
Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (227454 => 227455)
--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm 2018-01-23 23:22:19 UTC (rev 227455)
@@ -108,11 +108,6 @@
[super dealloc];
}
-- (void)continueDidReceiveResponse
-{
- dispatch_semaphore_signal(m_semaphore);
-}
-
- (void)continueCanAuthenticateAgainstProtectionSpace:(BOOL)canAuthenticate
{
m_boolResult = canAuthenticate;
@@ -230,7 +225,9 @@
resourceResponse.setSource(ResourceResponse::Source::Network);
ResourceHandle::getConnectionTimingData(connection.get(), resourceResponse.deprecatedNetworkLoadMetrics());
- m_handle->didReceiveResponse(WTFMove(resourceResponse));
+ m_handle->didReceiveResponse(WTFMove(resourceResponse), [self, protectedSelf = WTFMove(protectedSelf)] {
+ dispatch_semaphore_signal(m_semaphore);
+ });
};
[self callFunctionOnMainThread:WTFMove(work)];
Modified: trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp (227454 => 227455)
--- trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -463,7 +463,9 @@
d->m_previousPosition = 0;
- handle->didReceiveResponse(ResourceResponse(d->m_response));
+ handle->didReceiveResponse(ResourceResponse(d->m_response), [handle = makeRef(*handle)] {
+ continueAfterDidReceiveResponse(handle.ptr());
+ });
}
static void sendRequestCallback(GObject*, GAsyncResult* result, gpointer data)
@@ -520,7 +522,9 @@
else
d->m_inputStream = inputStream;
- handle->didReceiveResponse(ResourceResponse(d->m_response));
+ handle->didReceiveResponse(ResourceResponse(d->m_response), [handle = makeRef(*handle)] {
+ continueAfterDidReceiveResponse(handle.ptr());
+ });
}
void ResourceHandle::platformContinueSynchronousDidReceiveResponse()
@@ -1019,11 +1023,6 @@
d->m_cancellable.get(), readCallback, handle.get());
}
-void ResourceHandle::continueDidReceiveResponse()
-{
- continueAfterDidReceiveResponse(this);
}
-}
-
#endif
Modified: trunk/Source/WebKit/ChangeLog (227454 => 227455)
--- trunk/Source/WebKit/ChangeLog 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/ChangeLog 2018-01-23 23:22:19 UTC (rev 227455)
@@ -1,3 +1,19 @@
+2018-01-23 Alex Christensen <achristen...@webkit.org>
+
+ Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
+ https://bugs.webkit.org/show_bug.cgi?id=181961
+
+ Reviewed by Michael Catanzaro.
+
+ * NetworkProcess/Downloads/Download.h:
+ * NetworkProcess/NetworkLoad.cpp:
+ * NetworkProcess/NetworkLoad.h:
+ * NetworkProcess/NetworkResourceLoadParameters.h:
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ * WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
+ * WebProcess/WebPage/mac/WebPageMac.mm:
+ * WebProcess/WebProcess.cpp:
+
2018-01-23 Chris Dumez <cdu...@apple.com>
Unreviewed, rollout r227216 as it seems to be causing deadlocks
Modified: trunk/Source/WebKit/NetworkProcess/Downloads/Download.h (227454 => 227455)
--- trunk/Source/WebKit/NetworkProcess/Downloads/Download.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/Download.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -30,8 +30,6 @@
#include "NetworkDataTask.h"
#include "SandboxExtension.h"
#include <WebCore/AuthenticationChallenge.h>
-#include <WebCore/ResourceHandle.h>
-#include <WebCore/ResourceHandleClient.h>
#include <WebCore/ResourceRequest.h>
#include <memory>
#include <pal/SessionID.h>
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp (227454 => 227455)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -34,7 +34,6 @@
#include "WebCoreArgumentCoders.h"
#include "WebErrors.h"
#include <WebCore/NotImplemented.h>
-#include <WebCore/ResourceHandle.h>
#include <WebCore/ResourceRequest.h>
#include <WebCore/SharedBuffer.h>
#include <pal/SessionID.h>
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoad.h (227454 => 227455)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoad.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoad.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -31,7 +31,6 @@
#include "NetworkLoadParameters.h"
#include "RemoteNetworkingContext.h"
#include <WebCore/AuthenticationChallenge.h>
-#include <WebCore/ResourceHandleClient.h>
#include <wtf/CompletionHandler.h>
#include <wtf/Optional.h>
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h (227454 => 227455)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h 2018-01-23 23:22:19 UTC (rev 227455)
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef NetworkResourceLoadParameters_h
-#define NetworkResourceLoadParameters_h
+#pragma once
#include "NetworkLoadParameters.h"
#include "SandboxExtension.h"
@@ -31,7 +30,6 @@
#include "WebCompiledContentRuleListData.h"
#include <WebCore/ContentSecurityPolicyResponseHeaders.h>
#include <WebCore/FetchOptions.h>
-#include <WebCore/ResourceHandle.h>
#include <WebCore/ResourceLoaderOptions.h>
#include <WebCore/ResourceRequest.h>
#include <WebCore/SecurityOrigin.h>
@@ -68,5 +66,3 @@
};
} // namespace WebKit
-
-#endif // NetworkResourceLoadParameters_h
Modified: trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp (227454 => 227455)
--- trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -68,7 +68,6 @@
#include <WebCore/Page.h>
#include <WebCore/PageGroup.h>
#include <WebCore/PrintContext.h>
-#include <WebCore/ResourceHandle.h>
#include <WebCore/RuntimeEnabledFeatures.h>
#include <WebCore/SWContextManager.h>
#include <WebCore/ScriptController.h>
Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm (227454 => 227455)
--- trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm 2018-01-23 23:22:19 UTC (rev 227455)
@@ -48,7 +48,6 @@
#import <WebCore/Page.h>
#import <WebCore/Pasteboard.h>
#import <WebCore/RenderImage.h>
-#import <WebCore/ResourceHandle.h>
#import <WebCore/StringTruncator.h>
#import <WebCore/WebCoreNSURLExtras.h>
#import <wtf/StdLibExtras.h>
Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm (227454 => 227455)
--- trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm 2018-01-23 23:22:19 UTC (rev 227455)
@@ -83,7 +83,6 @@
#import <WebCore/RenderObject.h>
#import <WebCore/RenderStyle.h>
#import <WebCore/RenderView.h>
-#import <WebCore/ResourceHandle.h>
#import <WebCore/RuntimeApplicationChecks.h>
#import <WebCore/ScrollView.h>
#import <WebCore/StyleInheritedData.h>
Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (227454 => 227455)
--- trunk/Source/WebKit/WebProcess/WebProcess.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -108,7 +108,6 @@
#include <WebCore/PageCache.h>
#include <WebCore/PageGroup.h>
#include <WebCore/PlatformMediaSessionManager.h>
-#include <WebCore/ResourceHandle.h>
#include <WebCore/ResourceLoadObserver.h>
#include <WebCore/ResourceLoadStatistics.h>
#include <WebCore/RuntimeApplicationChecks.h>
Modified: trunk/Source/WebKitLegacy/ChangeLog (227454 => 227455)
--- trunk/Source/WebKitLegacy/ChangeLog 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKitLegacy/ChangeLog 2018-01-23 23:22:19 UTC (rev 227455)
@@ -1,3 +1,12 @@
+2018-01-23 Alex Christensen <achristen...@webkit.org>
+
+ Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
+ https://bugs.webkit.org/show_bug.cgi?id=181961
+
+ Reviewed by Michael Catanzaro.
+
+ * WebCoreSupport/WebResourceLoadScheduler.cpp:
+
2018-01-16 Fujii Hironori <hironori.fu...@sony.com>
[CMake] Remove WebCoreDerivedSources library target
Modified: trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp (227454 => 227455)
--- trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKitLegacy/WebCoreSupport/WebResourceLoadScheduler.cpp 2018-01-23 23:22:19 UTC (rev 227455)
@@ -32,7 +32,6 @@
#include <WebCore/NetscapePlugInStreamLoader.h>
#include <WebCore/PingHandle.h>
#include <WebCore/PlatformStrategies.h>
-#include <WebCore/ResourceHandle.h>
#include <WebCore/ResourceRequest.h>
#include <WebCore/SubresourceLoader.h>
#include <WebCore/URL.h>
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (227454 => 227455)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2018-01-23 23:22:19 UTC (rev 227455)
@@ -1,3 +1,12 @@
+2018-01-23 Alex Christensen <achristen...@webkit.org>
+
+ Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
+ https://bugs.webkit.org/show_bug.cgi?id=181961
+
+ Reviewed by Michael Catanzaro.
+
+ * WebView/WebPreferences.mm:
+
2018-01-23 Commit Queue <commit-qu...@webkit.org>
Unreviewed, rolling out r227437.
Modified: trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm (227454 => 227455)
--- trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm 2018-01-23 23:21:32 UTC (rev 227454)
+++ trunk/Source/WebKitLegacy/mac/WebView/WebPreferences.mm 2018-01-23 23:22:19 UTC (rev 227455)
@@ -42,7 +42,6 @@
#import <WebCore/DeprecatedGlobalSettings.h>
#import <WebCore/NetworkStorageSession.h>
#import <WebCore/PlatformCookieJar.h>
-#import <WebCore/ResourceHandle.h>
#import <WebCore/RuntimeApplicationChecks.h>
#import <WebCore/Settings.h>
#import <WebCore/TextEncodingRegistry.h>