Title: [227455] trunk/Source
Revision
227455
Author
achristen...@apple.com
Date
2018-01-23 15:22:19 -0800 (Tue, 23 Jan 2018)

Log Message

Use CompletionHandlers for ResourceHandleClient::didReceiveResponseAsync
https://bugs.webkit.org/show_bug.cgi?id=181961

Reviewed by Michael Catanzaro.

Source/WebCore:

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.

Source/WebKit:

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

Source/WebKitLegacy:

* WebCoreSupport/WebResourceLoadScheduler.cpp:

Source/WebKitLegacy/mac:

* WebView/WebPreferences.mm:

Modified Paths

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>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to