Diff
Modified: trunk/Source/WebCore/ChangeLog (233276 => 233277)
--- trunk/Source/WebCore/ChangeLog 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebCore/ChangeLog 2018-06-27 21:15:23 UTC (rev 233277)
@@ -1,3 +1,16 @@
+2018-06-27 Youenn Fablet <[email protected]>
+
+ NetworkLoadChecker should not need to hard ref NetworkConnectionToWebProcess
+ https://bugs.webkit.org/show_bug.cgi?id=186551
+
+ Reviewed by Daniel Bates.
+
+ No change of behavior.
+ Add a way to set the client receiving any CSP warning/error notification.
+
+ * page/csp/ContentSecurityPolicy.h:
+ (WebCore::ContentSecurityPolicy::setClient):
+
2018-06-27 Zalan Bujtas <[email protected]>
[LFC] Do not collapse margin with the parent when element has border/padding.
Modified: trunk/Source/WebCore/page/csp/ContentSecurityPolicy.h (233276 => 233277)
--- trunk/Source/WebCore/page/csp/ContentSecurityPolicy.h 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebCore/page/csp/ContentSecurityPolicy.h 2018-06-27 21:15:23 UTC (rev 233277)
@@ -169,6 +169,8 @@
void inheritInsecureNavigationRequestsToUpgradeFromOpener(const ContentSecurityPolicy&);
void setInsecureNavigationRequestsToUpgrade(HashSet<SecurityOriginData>&&);
+ void setClient(ContentSecurityPolicyClient* client) { m_client = client; }
+
private:
void logToConsole(const String& message, const String& contextURL = String(), const WTF::OrdinalNumber& contextLine = WTF::OrdinalNumber::beforeFirst(), JSC::ExecState* = nullptr) const;
void updateSourceSelf(const SecurityOrigin&);
Modified: trunk/Source/WebKit/ChangeLog (233276 => 233277)
--- trunk/Source/WebKit/ChangeLog 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/ChangeLog 2018-06-27 21:15:23 UTC (rev 233277)
@@ -1,3 +1,33 @@
+2018-06-27 Youenn Fablet <[email protected]>
+
+ NetworkLoadChecker should not need to hard ref NetworkConnectionToWebProcess
+ https://bugs.webkit.org/show_bug.cgi?id=186551
+
+ Reviewed by Daniel Bates.
+
+ Removed the need for NetworkLoadChecker to reference a NetworkConnectionToWebProcess.
+ Instead a CSP client is given to NetworkLoadChecker when needed.
+
+ * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+ (WebKit::NetworkConnectionToWebProcess::loadPing):
+ * NetworkProcess/NetworkLoadChecker.cpp:
+ (WebKit::NetworkLoadChecker::NetworkLoadChecker):
+ (WebKit::NetworkLoadChecker::check):
+ (WebKit::NetworkLoadChecker::checkRedirection):
+ (WebKit::NetworkLoadChecker::checkRequest):
+ (WebKit::NetworkLoadChecker::contentSecurityPolicy):
+ (WebKit::NetworkLoadChecker::addConsoleMessage): Deleted.
+ (WebKit::NetworkLoadChecker::sendCSPViolationReport): Deleted.
+ (WebKit::NetworkLoadChecker::enqueueSecurityPolicyViolationEvent): Deleted.
+ * NetworkProcess/NetworkLoadChecker.h:
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::start):
+ (WebKit::NetworkResourceLoader::willSendRedirectedRequest):
+ * NetworkProcess/PingLoad.cpp:
+ (WebKit::PingLoad::PingLoad):
+ (WebKit::PingLoad::willPerformHTTPRedirection):
+ * NetworkProcess/PingLoad.h:
+
2018-06-27 Stephan Szabo <[email protected]>
[Wincairo] Add support for context menus to non-legacy minibrowser
Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (233276 => 233277)
--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp 2018-06-27 21:15:23 UTC (rev 233277)
@@ -262,7 +262,7 @@
};
// PingLoad manages its own lifetime, deleting itself when its purpose has been fulfilled.
- new PingLoad(WTFMove(loadParameters), *this, WTFMove(completionHandler));
+ new PingLoad(WTFMove(loadParameters), WTFMove(completionHandler));
}
void NetworkConnectionToWebProcess::didFinishPingLoad(uint64_t pingLoadIdentifier, const ResourceError& error, const ResourceResponse& response)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp (233276 => 233277)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp 2018-06-27 21:15:23 UTC (rev 233277)
@@ -40,6 +40,7 @@
#include <WebCore/CrossOriginPreflightResultCache.h>
#include <WebCore/HTTPParsers.h>
#include <WebCore/SchemeRegistry.h>
+#include <wtf/Scope.h>
#define RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(m_sessionID.isAlwaysOnLoggingAllowed(), Network, "%p - NetworkLoadChecker::" fmt, this, ##__VA_ARGS__)
@@ -52,12 +53,8 @@
return url.protocolIsData() || url.protocolIsBlob() || !origin || origin->canRequest(url);
}
-NetworkLoadChecker::NetworkLoadChecker(NetworkConnectionToWebProcess& connection, uint64_t webPageID, uint64_t webFrameID, ResourceLoadIdentifier loadIdentifier, FetchOptions&& options, PAL::SessionID sessionID, HTTPHeaderMap&& originalRequestHeaders, URL&& url, RefPtr<SecurityOrigin>&& sourceOrigin, PreflightPolicy preflightPolicy, String&& referrer, bool shouldCaptureExtraNetworkLoadMetrics)
- : m_connection(connection)
- , m_webPageID(webPageID)
- , m_webFrameID(webFrameID)
- , m_loadIdentifier(loadIdentifier)
- , m_options(WTFMove(options))
+NetworkLoadChecker::NetworkLoadChecker(FetchOptions&& options, PAL::SessionID sessionID, HTTPHeaderMap&& originalRequestHeaders, URL&& url, RefPtr<SecurityOrigin>&& sourceOrigin, PreflightPolicy preflightPolicy, String&& referrer, bool shouldCaptureExtraNetworkLoadMetrics)
+ : m_options(WTFMove(options))
, m_sessionID(sessionID)
, m_originalRequestHeaders(WTFMove(originalRequestHeaders))
, m_url(WTFMove(url))
@@ -82,7 +79,7 @@
NetworkLoadChecker::~NetworkLoadChecker() = default;
-void NetworkLoadChecker::check(ResourceRequest&& request, ValidationHandler&& handler)
+void NetworkLoadChecker::check(ResourceRequest&& request, ContentSecurityPolicyClient* client, ValidationHandler&& handler)
{
ASSERT(!isChecking());
@@ -96,7 +93,7 @@
m_dntHeaderValue = "1";
request.setHTTPHeaderField(HTTPHeaderName::DNT, m_dntHeaderValue);
}
- checkRequest(WTFMove(request), WTFMove(handler));
+ checkRequest(WTFMove(request), client, WTFMove(handler));
}
void NetworkLoadChecker::prepareRedirectedRequest(ResourceRequest& request)
@@ -105,7 +102,7 @@
request.setHTTPHeaderField(HTTPHeaderName::DNT, m_dntHeaderValue);
}
-void NetworkLoadChecker::checkRedirection(ResourceResponse& redirectResponse, ResourceRequest&& request, ValidationHandler&& handler)
+void NetworkLoadChecker::checkRedirection(ResourceResponse& redirectResponse, ResourceRequest&& request, ContentSecurityPolicyClient* client, ValidationHandler&& handler)
{
ASSERT(!isChecking());
@@ -132,7 +129,7 @@
m_previousURL = WTFMove(m_url);
m_url = request.url();
- checkRequest(WTFMove(request), WTFMove(handler));
+ checkRequest(WTFMove(request), client, WTFMove(handler));
}
ResourceError NetworkLoadChecker::validateResponse(ResourceResponse& response)
@@ -177,7 +174,7 @@
return makeUnexpected(ResourceError { String { }, 0, m_url, WTFMove(message), ResourceError::Type::AccessControl });
}
-void NetworkLoadChecker::checkRequest(ResourceRequest&& request, ValidationHandler&& handler)
+void NetworkLoadChecker::checkRequest(ResourceRequest&& request, ContentSecurityPolicyClient* client, ValidationHandler&& handler)
{
if (auto* contentSecurityPolicy = this->contentSecurityPolicy()) {
if (isRedirected()) {
@@ -184,7 +181,7 @@
auto type = m_options.mode == FetchOptions::Mode::Navigate ? ContentSecurityPolicy::InsecureRequestType::Navigation : ContentSecurityPolicy::InsecureRequestType::Load;
contentSecurityPolicy->upgradeInsecureRequestIfNeeded(request, type);
}
- if (!isAllowedByContentSecurityPolicy(request)) {
+ if (!isAllowedByContentSecurityPolicy(request, client)) {
handler(accessControlErrorForValidationHandler("Blocked by Content Security Policy."_s));
return;
}
@@ -208,22 +205,27 @@
#endif
}
-bool NetworkLoadChecker::isAllowedByContentSecurityPolicy(const ResourceRequest& request)
+bool NetworkLoadChecker::isAllowedByContentSecurityPolicy(const ResourceRequest& request, WebCore::ContentSecurityPolicyClient* client)
{
- ASSERT(contentSecurityPolicy());
+ auto* contentSecurityPolicy = this->contentSecurityPolicy();
+ contentSecurityPolicy->setClient(client);
+ auto clearContentSecurityPolicyClient = makeScopeExit([&] {
+ contentSecurityPolicy->setClient(nullptr);
+ });
+
auto redirectResponseReceived = isRedirected() ? ContentSecurityPolicy::RedirectResponseReceived::Yes : ContentSecurityPolicy::RedirectResponseReceived::No;
switch (m_options.destination) {
case FetchOptions::Destination::Worker:
case FetchOptions::Destination::Serviceworker:
case FetchOptions::Destination::Sharedworker:
- return contentSecurityPolicy()->allowChildContextFromSource(request.url(), redirectResponseReceived);
+ return contentSecurityPolicy->allowChildContextFromSource(request.url(), redirectResponseReceived);
case FetchOptions::Destination::Script:
- if (request.requester() == ResourceRequest::Requester::ImportScripts && !contentSecurityPolicy()->allowScriptFromSource(request.url(), redirectResponseReceived))
+ if (request.requester() == ResourceRequest::Requester::ImportScripts && !contentSecurityPolicy->allowScriptFromSource(request.url(), redirectResponseReceived))
return false;
// FIXME: Check CSP for non-importScripts() initiated loads.
return true;
case FetchOptions::Destination::EmptyString:
- return contentSecurityPolicy()->allowConnectToSource(request.url(), redirectResponseReceived);
+ return contentSecurityPolicy->allowConnectToSource(request.url(), redirectResponseReceived);
case FetchOptions::Destination::Audio:
case FetchOptions::Destination::Document:
case FetchOptions::Destination::Embed:
@@ -374,7 +376,7 @@
{
if (!m_contentSecurityPolicy && m_cspResponseHeaders) {
// FIXME: Pass the URL of the protected resource instead of its origin.
- m_contentSecurityPolicy = std::make_unique<ContentSecurityPolicy>(URL { URL { }, m_origin->toString() }, this);
+ m_contentSecurityPolicy = std::make_unique<ContentSecurityPolicy>(URL { URL { }, m_origin->toString() });
m_contentSecurityPolicy->didReceiveHeaders(*m_cspResponseHeaders, String { m_referrer }, ContentSecurityPolicy::ReportParsingErrors::No);
}
return m_contentSecurityPolicy.get();
@@ -403,24 +405,6 @@
}
#endif // ENABLE(CONTENT_EXTENSIONS)
-void NetworkLoadChecker::addConsoleMessage(MessageSource messageSource, MessageLevel messageLevel, const String& message, unsigned long)
-{
- if (m_webPageID && m_webFrameID)
- m_connection->connection().send(Messages::WebPage::AddConsoleMessage { m_webFrameID, messageSource, messageLevel, message, m_loadIdentifier }, m_webPageID);
-}
-
-void NetworkLoadChecker::sendCSPViolationReport(URL&& reportURL, Ref<FormData>&& report)
-{
- if (m_webPageID && m_webFrameID)
- m_connection->connection().send(Messages::WebPage::SendCSPViolationReport { m_webFrameID, WTFMove(reportURL), IPC::FormDataReference { WTFMove(report) } }, m_webPageID);
-}
-
-void NetworkLoadChecker::enqueueSecurityPolicyViolationEvent(SecurityPolicyViolationEvent::Init&& eventInit)
-{
- if (m_webPageID && m_webFrameID)
- m_connection->connection().send(Messages::WebPage::EnqueueSecurityPolicyViolationEvent { m_webFrameID, WTFMove(eventInit) }, m_webPageID);
-}
-
void NetworkLoadChecker::storeRedirectionIfNeeded(const ResourceRequest& request, const ResourceResponse& response)
{
if (!m_shouldCaptureExtraNetworkLoadMetrics)
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h (233276 => 233277)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadChecker.h 2018-06-27 21:15:23 UTC (rev 233277)
@@ -37,6 +37,7 @@
namespace WebCore {
class ContentSecurityPolicy;
+struct ContentSecurityPolicyClient;
}
namespace WebKit {
@@ -44,15 +45,15 @@
class NetworkConnectionToWebProcess;
class NetworkCORSPreflightChecker;
-class NetworkLoadChecker : public WebCore::ContentSecurityPolicyClient, public CanMakeWeakPtr<NetworkLoadChecker> {
+class NetworkLoadChecker : public CanMakeWeakPtr<NetworkLoadChecker> {
public:
- NetworkLoadChecker(NetworkConnectionToWebProcess&, uint64_t webPageID, uint64_t webFrameID, ResourceLoadIdentifier, WebCore::FetchOptions&&, PAL::SessionID, WebCore::HTTPHeaderMap&&, WebCore::URL&&, RefPtr<WebCore::SecurityOrigin>&&, WebCore::PreflightPolicy, String&& referrer, bool shouldCaptureExtraNetworkLoadMetrics = false);
+ NetworkLoadChecker(WebCore::FetchOptions&&, PAL::SessionID, WebCore::HTTPHeaderMap&&, WebCore::URL&&, RefPtr<WebCore::SecurityOrigin>&&, WebCore::PreflightPolicy, String&& referrer, bool shouldCaptureExtraNetworkLoadMetrics = false);
~NetworkLoadChecker();
using RequestOrError = Expected<WebCore::ResourceRequest, WebCore::ResourceError>;
using ValidationHandler = CompletionHandler<void(RequestOrError&&)>;
- void check(WebCore::ResourceRequest&&, ValidationHandler&&);
- void checkRedirection(WebCore::ResourceResponse&, WebCore::ResourceRequest&&, ValidationHandler&&);
+ void check(WebCore::ResourceRequest&&, WebCore::ContentSecurityPolicyClient*, ValidationHandler&&);
+ void checkRedirection(WebCore::ResourceResponse&, WebCore::ResourceRequest&&, WebCore::ContentSecurityPolicyClient*, ValidationHandler&&);
void prepareRedirectedRequest(WebCore::ResourceRequest&);
WebCore::ResourceError validateResponse(WebCore::ResourceResponse&);
@@ -79,9 +80,9 @@
bool isChecking() const { return !!m_corsPreflightChecker; }
bool isRedirected() const { return m_redirectCount; }
- void checkRequest(WebCore::ResourceRequest&&, ValidationHandler&&);
+ void checkRequest(WebCore::ResourceRequest&&, WebCore::ContentSecurityPolicyClient*, ValidationHandler&&);
- bool isAllowedByContentSecurityPolicy(const WebCore::ResourceRequest&);
+ bool isAllowedByContentSecurityPolicy(const WebCore::ResourceRequest&, WebCore::ContentSecurityPolicyClient*);
void continueCheckingRequest(WebCore::ResourceRequest&&, ValidationHandler&&);
@@ -101,18 +102,6 @@
using ContentExtensionCallback = CompletionHandler<void(ContentExtensionResultOrError)>;
void processContentExtensionRulesForLoad(WebCore::ResourceRequest&&, ContentExtensionCallback&&);
#endif
-
- // ContentSecurityPolicyClient
- void addConsoleMessage(MessageSource, MessageLevel, const String&, unsigned long) final;
- void sendCSPViolationReport(WebCore::URL&&, Ref<WebCore::FormData>&&) final;
- void enqueueSecurityPolicyViolationEvent(WebCore::SecurityPolicyViolationEvent::Init&&) final;
-
- // The connection, web page ID, web frame ID and load identifier are used for CSP reporting.
- Ref<NetworkConnectionToWebProcess> m_connection;
- uint64_t m_webPageID;
- uint64_t m_webFrameID;
- ResourceLoadIdentifier m_loadIdentifier;
-
WebCore::FetchOptions m_options;
WebCore::StoredCredentialsPolicy m_storedCredentialsPolicy;
PAL::SessionID m_sessionID;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (233276 => 233277)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2018-06-27 21:15:23 UTC (rev 233277)
@@ -119,7 +119,7 @@
}
if (synchronousReply || parameters.shouldRestrictHTTPResponseAccess) {
- m_networkLoadChecker = std::make_unique<NetworkLoadChecker>(m_connection, m_parameters.webPageID, m_parameters.webFrameID, identifier(), FetchOptions { m_parameters.options }, m_parameters.sessionID, HTTPHeaderMap { m_parameters.originalRequestHeaders }, URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.preflightPolicy, originalRequest().httpReferrer(), shouldCaptureExtraNetworkLoadMetrics());
+ m_networkLoadChecker = std::make_unique<NetworkLoadChecker>(FetchOptions { m_parameters.options }, m_parameters.sessionID, HTTPHeaderMap { m_parameters.originalRequestHeaders }, URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.preflightPolicy, originalRequest().httpReferrer(), shouldCaptureExtraNetworkLoadMetrics());
if (m_parameters.cspResponseHeaders)
m_networkLoadChecker->setCSPResponseHeaders(ContentSecurityPolicyResponseHeaders { m_parameters.cspResponseHeaders.value() });
#if ENABLE(CONTENT_EXTENSIONS)
@@ -184,7 +184,7 @@
m_wasStarted = true;
if (m_networkLoadChecker) {
- m_networkLoadChecker->check(ResourceRequest { originalRequest() }, [this] (auto&& result) {
+ m_networkLoadChecker->check(ResourceRequest { originalRequest() }, this, [this] (auto&& result) {
if (!result.has_value()) {
if (!result.error().isCancellation())
this->didFailLoading(result.error());
@@ -581,7 +581,7 @@
if (m_networkLoadChecker) {
m_networkLoadChecker->storeRedirectionIfNeeded(request, redirectResponse);
- m_networkLoadChecker->checkRedirection(redirectResponse, WTFMove(redirectRequest), [protectedThis = makeRef(*this), this, storedCredentialsPolicy = m_networkLoadChecker->storedCredentialsPolicy(), request = WTFMove(request), redirectResponse](auto&& result) mutable {
+ m_networkLoadChecker->checkRedirection(redirectResponse, WTFMove(redirectRequest), this, [protectedThis = makeRef(*this), this, storedCredentialsPolicy = m_networkLoadChecker->storedCredentialsPolicy(), request = WTFMove(request), redirectResponse](auto&& result) mutable {
if (!result.has_value()) {
if (result.error().isCancellation())
return;
Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.cpp (233276 => 233277)
--- trunk/Source/WebKit/NetworkProcess/PingLoad.cpp 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.cpp 2018-06-27 21:15:23 UTC (rev 233277)
@@ -38,11 +38,11 @@
using namespace WebCore;
-PingLoad::PingLoad(NetworkResourceLoadParameters&& parameters, NetworkConnectionToWebProcess& connection, WTF::CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
+PingLoad::PingLoad(NetworkResourceLoadParameters&& parameters, WTF::CompletionHandler<void(const ResourceError&, const ResourceResponse&)>&& completionHandler)
: m_parameters(WTFMove(parameters))
, m_completionHandler(WTFMove(completionHandler))
, m_timeoutTimer(*this, &PingLoad::timeoutTimerFired)
- , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(connection, m_parameters.webPageID, m_parameters.webFrameID, m_parameters.identifier, FetchOptions { m_parameters.options}, m_parameters.sessionID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
+ , m_networkLoadChecker(makeUniqueRef<NetworkLoadChecker>(FetchOptions { m_parameters.options}, m_parameters.sessionID, WTFMove(m_parameters.originalRequestHeaders), URL { m_parameters.request.url() }, m_parameters.sourceOrigin.copyRef(), m_parameters.preflightPolicy, m_parameters.request.httpReferrer()))
{
m_networkLoadChecker->enableContentExtensionsCheck();
if (m_parameters.cspResponseHeaders)
@@ -55,7 +55,7 @@
// Set a very generous timeout, just in case.
m_timeoutTimer.startOneShot(60000_s);
- m_networkLoadChecker->check(ResourceRequest { m_parameters.request }, [this] (auto&& result) {
+ m_networkLoadChecker->check(ResourceRequest { m_parameters.request }, nullptr, [this] (auto&& result) {
if (!result.has_value()) {
this->didFinish(result.error());
return;
@@ -93,7 +93,7 @@
void PingLoad::willPerformHTTPRedirection(ResourceResponse&& redirectResponse, ResourceRequest&& request, RedirectCompletionHandler&& completionHandler)
{
- m_networkLoadChecker->checkRedirection(redirectResponse, WTFMove(request), [this, completionHandler = WTFMove(completionHandler)](auto&& result) {
+ m_networkLoadChecker->checkRedirection(redirectResponse, WTFMove(request), nullptr, [this, completionHandler = WTFMove(completionHandler)](auto&& result) {
if (!result.has_value()) {
completionHandler({ });
this->didFinish(result.error());
Modified: trunk/Source/WebKit/NetworkProcess/PingLoad.h (233276 => 233277)
--- trunk/Source/WebKit/NetworkProcess/PingLoad.h 2018-06-27 21:10:20 UTC (rev 233276)
+++ trunk/Source/WebKit/NetworkProcess/PingLoad.h 2018-06-27 21:15:23 UTC (rev 233277)
@@ -45,7 +45,7 @@
class PingLoad final : private NetworkDataTaskClient {
public:
- PingLoad(NetworkResourceLoadParameters&&, NetworkConnectionToWebProcess&, WTF::CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
+ PingLoad(NetworkResourceLoadParameters&&, CompletionHandler<void(const WebCore::ResourceError&, const WebCore::ResourceResponse&)>&&);
private:
~PingLoad();