Title: [222570] trunk/Source
Revision
222570
Author
[email protected]
Date
2017-09-27 13:01:25 -0700 (Wed, 27 Sep 2017)

Log Message

Have PingLoad take a CompletionHandler
https://bugs.webkit.org/show_bug.cgi?id=177549

Reviewed by Youenn Fablet.

Have PingLoad take a CompletionHandler instead of relying on it calling on method on the
NetworkConnectionToWebProcess when it is done.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::loadPing):
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::PingLoad):
(WebKit::PingLoad::didFinish):
* NetworkProcess/PingLoad.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/platform/network/PingHandle.h (222569 => 222570)


--- trunk/Source/WebCore/platform/network/PingHandle.h	2017-09-27 19:47:34 UTC (rev 222569)
+++ trunk/Source/WebCore/platform/network/PingHandle.h	2017-09-27 20:01:25 UTC (rev 222570)
@@ -28,6 +28,7 @@
 #include "ResourceHandle.h"
 #include "ResourceHandleClient.h"
 #include "Timer.h"
+#include <wtf/CompletionHandler.h>
 
 namespace WebCore {
 
@@ -43,7 +44,7 @@
         No,
     };
     
-    PingHandle(NetworkingContext* networkingContext, const ResourceRequest& request, bool shouldUseCredentialStorage, UsesAsyncCallbacks useAsyncCallbacks, bool shouldFollowRedirects, WTF::Function<void(const ResourceError&)>&& completionHandler)
+    PingHandle(NetworkingContext* networkingContext, const ResourceRequest& request, bool shouldUseCredentialStorage, UsesAsyncCallbacks useAsyncCallbacks, bool shouldFollowRedirects, WTF::CompletionHandler<void(const ResourceError&)>&& completionHandler)
         : m_currentRequest(request)
         , m_timeoutTimer(*this, &PingHandle::timeoutTimerFired)
         , m_shouldUseCredentialStorage(shouldUseCredentialStorage)
@@ -103,7 +104,7 @@
     bool m_shouldUseCredentialStorage;
     bool m_shouldFollowRedirects;
     UsesAsyncCallbacks m_usesAsyncCallbacks;
-    WTF::Function<void(const ResourceError&)> m_completionHandler;
+    WTF::CompletionHandler<void(const ResourceError&)> m_completionHandler;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebKit/ChangeLog (222569 => 222570)


--- trunk/Source/WebKit/ChangeLog	2017-09-27 19:47:34 UTC (rev 222569)
+++ trunk/Source/WebKit/ChangeLog	2017-09-27 20:01:25 UTC (rev 222570)
@@ -1,3 +1,20 @@
+2017-09-27  Chris Dumez  <[email protected]>
+
+        Have PingLoad take a CompletionHandler
+        https://bugs.webkit.org/show_bug.cgi?id=177549
+
+        Reviewed by Youenn Fablet.
+
+        Have PingLoad take a CompletionHandler instead of relying on it calling on method on the
+        NetworkConnectionToWebProcess when it is done.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        (WebKit::NetworkConnectionToWebProcess::loadPing):
+        * NetworkProcess/PingLoad.cpp:
+        (WebKit::PingLoad::PingLoad):
+        (WebKit::PingLoad::didFinish):
+        * NetworkProcess/PingLoad.h:
+
 2017-09-26  Alex Christensen  <[email protected]>
 
         Pass a completion handler instead of a WebFramePolicyListenerProxy during policy decisions

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (222569 => 222570)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2017-09-27 19:47:34 UTC (rev 222569)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2017-09-27 20:01:25 UTC (rev 222570)
@@ -237,17 +237,19 @@
 
 void NetworkConnectionToWebProcess::loadPing(NetworkResourceLoadParameters&& loadParameters, HTTPHeaderMap&& originalRequestHeaders)
 {
+    auto completionHandler = [this, protectedThis = makeRef(*this), identifier = loadParameters.identifier] (const ResourceError& error) {
+        didFinishPingLoad(identifier, error);
+    };
+
 #if USE(NETWORK_SESSION)
     // PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled.
-    new PingLoad(WTFMove(loadParameters), WTFMove(originalRequestHeaders), *this);
+    new PingLoad(WTFMove(loadParameters), WTFMove(originalRequestHeaders), WTFMove(completionHandler));
 #else
     UNUSED_PARAM(originalRequestHeaders);
-    RefPtr<NetworkingContext> context = RemoteNetworkingContext::create(loadParameters.sessionID, loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
+    auto context = RemoteNetworkingContext::create(loadParameters.sessionID, loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect);
 
     // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled.
-    new PingHandle(context.get(), loadParameters.request, loadParameters.storedCredentialsPolicy == StoredCredentialsPolicy::Use, PingHandle::UsesAsyncCallbacks::Yes, loadParameters.shouldFollowRedirects, [this, protectedThis = makeRef(*this), identifier = loadParameters.identifier] (const ResourceError& error) {
-        didFinishPingLoad(identifier, error);
-    });
+    new PingHandle(context.ptr(), loadParameters.request, loadParameters.storedCredentialsPolicy == StoredCredentialsPolicy::Use, PingHandle::UsesAsyncCallbacks::Yes, loadParameters.shouldFollowRedirects, WTFMove(completionHandler));
 #endif
 }
 

Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.cpp (222569 => 222570)


--- trunk/Source/WebKit/NetworkProcess/PingLoad.cpp	2017-09-27 19:47:34 UTC (rev 222569)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.cpp	2017-09-27 20:01:25 UTC (rev 222570)
@@ -31,7 +31,6 @@
 #include "AuthenticationManager.h"
 #include "Logging.h"
 #include "NetworkCORSPreflightChecker.h"
-#include "NetworkConnectionToWebProcess.h"
 #include "SessionTracker.h"
 #include "WebCompiledContentRuleList.h"
 #include "WebErrors.h"
@@ -45,10 +44,10 @@
 
 using namespace WebCore;
 
-PingLoad::PingLoad(NetworkResourceLoadParameters&& parameters, HTTPHeaderMap&& originalRequestHeaders, Ref<NetworkConnectionToWebProcess>&& connection)
+PingLoad::PingLoad(NetworkResourceLoadParameters&& parameters, HTTPHeaderMap&& originalRequestHeaders, WTF::CompletionHandler<void(const ResourceError&)>&& completionHandler)
     : m_parameters(WTFMove(parameters))
     , m_originalRequestHeaders(WTFMove(originalRequestHeaders))
-    , m_connection(WTFMove(connection))
+    , m_completionHandler(WTFMove(completionHandler))
     , m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
     , m_isSameOriginRequest(securityOrigin().canRequest(m_parameters.request.url()))
 {
@@ -80,7 +79,7 @@
 
 void PingLoad::didFinish(const ResourceError& error)
 {
-    m_connection->didFinishPingLoad(m_parameters.identifier, error);
+    m_completionHandler(error);
     delete this;
 }
 

Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.h (222569 => 222570)


--- trunk/Source/WebKit/NetworkProcess/PingLoad.h	2017-09-27 19:47:34 UTC (rev 222569)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.h	2017-09-27 20:01:25 UTC (rev 222570)
@@ -31,6 +31,7 @@
 #include "NetworkResourceLoadParameters.h"
 #include <WebCore/ContentExtensionsBackend.h>
 #include <WebCore/ResourceError.h>
+#include <wtf/CompletionHandler.h>
 
 namespace WebCore {
 class ContentSecurityPolicy;
@@ -41,11 +42,10 @@
 namespace WebKit {
 
 class NetworkCORSPreflightChecker;
-class NetworkConnectionToWebProcess;
 
 class PingLoad final : private NetworkDataTaskClient {
 public:
-    PingLoad(NetworkResourceLoadParameters&&, WebCore::HTTPHeaderMap&& originalRequestHeaders, Ref<NetworkConnectionToWebProcess>&&);
+    PingLoad(NetworkResourceLoadParameters&&, WebCore::HTTPHeaderMap&& originalRequestHeaders, WTF::CompletionHandler<void(const WebCore::ResourceError&)>&&);
     
 private:
     ~PingLoad();
@@ -81,7 +81,7 @@
     
     NetworkResourceLoadParameters m_parameters;
     WebCore::HTTPHeaderMap m_originalRequestHeaders; // Needed for CORS checks.
-    Ref<NetworkConnectionToWebProcess> m_connection;
+    WTF::CompletionHandler<void(const WebCore::ResourceError&)> m_completionHandler;
     RefPtr<NetworkDataTask> m_task;
     WebCore::Timer m_timeoutTimer;
     std::unique_ptr<NetworkCORSPreflightChecker> m_corsPreflightChecker;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to