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;