Diff
Modified: trunk/Source/WebCore/ChangeLog (224372 => 224373)
--- trunk/Source/WebCore/ChangeLog 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/ChangeLog 2017-11-03 02:54:36 UTC (rev 224373)
@@ -1,3 +1,54 @@
+2017-11-02 Alex Christensen <[email protected]>
+
+ Use CompletionHandlers for redirects
+ https://bugs.webkit.org/show_bug.cgi?id=179163
+
+ Reviewed by Tim Horton.
+
+ Having functions sometimes have to remember to call client->continueWillSendRequest is fragile.
+ CompletionHandler asserts if it's not called once before destruction, and that's what we need here.
+ This will prevent future bugs, and make ResourceHandle look more like NetworkDataTask.
+
+ No change in behavior.
+
+ * loader/NetscapePlugInStreamLoader.cpp:
+ (WebCore::NetscapePlugInStreamLoader::willSendRequest):
+ * loader/NetscapePlugInStreamLoader.h:
+ * loader/ResourceLoader.cpp:
+ (WebCore::ResourceLoader::willSendRequest):
+ (WebCore::ResourceLoader::willSendRequestAsync):
+ * loader/ResourceLoader.h:
+ * loader/appcache/ApplicationCacheGroup.cpp:
+ (WebCore::ApplicationCacheGroup::willSendRequestAsync):
+ * loader/appcache/ApplicationCacheGroup.h:
+ * platform/network/BlobResourceHandle.cpp:
+ * platform/network/PingHandle.h:
+ * platform/network/ResourceHandle.h:
+ * platform/network/ResourceHandleClient.h:
+ * platform/network/SynchronousLoaderClient.cpp:
+ (WebCore::SynchronousLoaderClient::willSendRequestAsync):
+ * platform/network/SynchronousLoaderClient.h:
+ * platform/network/cf/ResourceHandleCFNet.cpp:
+ (WebCore::ResourceHandle::willSendRequest):
+ (WebCore::ResourceHandle::continueWillSendRequest): Deleted.
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest):
+ (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillSendRequest): Deleted.
+ * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:
+ * platform/network/curl/ResourceHandleCurlDelegate.cpp:
+ (WebCore::ResourceHandleCurlDelegate::willSendRequest):
+ * platform/network/mac/ResourceHandleMac.mm:
+ (WebCore::ResourceHandle::willSendRequest):
+ (WebCore::ResourceHandle::continueWillSendRequest): Deleted.
+ * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h:
+ * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
+ (-[WebCoreResourceHandleAsOperationQueueDelegate connection:willSendRequest:redirectResponse:]):
+ (-[WebCoreResourceHandleAsOperationQueueDelegate continueWillSendRequest:]): Deleted.
+ * platform/network/soup/ResourceHandleSoup.cpp:
+ (WebCore::doRedirect):
+ (WebCore::ResourceHandle::continueWillSendRequest): Deleted.
+
2017-11-02 Christopher Reid <[email protected]>
Add a FileSystem namespace to FileSystem.cpp
Modified: trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.cpp (224372 => 224373)
--- trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -32,6 +32,7 @@
#include "DocumentLoader.h"
#include "FrameLoader.h"
#include "FrameLoaderClient.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/Ref.h>
#if ENABLE(CONTENT_EXTENSIONS)
@@ -86,11 +87,9 @@
return true;
}
-void NetscapePlugInStreamLoader::willSendRequest(ResourceRequest&& request, const ResourceResponse& redirectResponse, WTF::Function<void(ResourceRequest&&)>&& callback)
+void NetscapePlugInStreamLoader::willSendRequest(ResourceRequest&& request, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& callback)
{
- RefPtr<NetscapePlugInStreamLoader> protectedThis(this);
-
- m_client->willSendRequest(this, WTFMove(request), redirectResponse, [protectedThis, redirectResponse, callback = WTFMove(callback)](ResourceRequest request) {
+ m_client->willSendRequest(this, WTFMove(request), redirectResponse, [protectedThis = makeRef(*this), redirectResponse, callback = WTFMove(callback)](ResourceRequest request) mutable {
if (!request.isNull())
protectedThis->willSendRequestInternal(request, redirectResponse);
Modified: trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.h (224372 => 224373)
--- trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -38,7 +38,7 @@
class NetscapePlugInStreamLoaderClient {
public:
- virtual void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, WTF::Function<void (ResourceRequest&&)>&&) = 0;
+ virtual void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&&) = 0;
virtual void didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse&) = 0;
virtual void didReceiveData(NetscapePlugInStreamLoader*, const char*, int) = 0;
virtual void didFail(NetscapePlugInStreamLoader*, const ResourceError&) = 0;
@@ -59,7 +59,7 @@
private:
bool init(const ResourceRequest&) override;
- void willSendRequest(ResourceRequest&&, const ResourceResponse& redirectResponse, WTF::Function<void(ResourceRequest&&)>&& callback) override;
+ void willSendRequest(ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& callback) override;
void didReceiveResponse(const ResourceResponse&) override;
void didReceiveData(const char*, unsigned, long long encodedDataLength, DataPayloadType) override;
void didReceiveBuffer(Ref<SharedBuffer>&&, long long encodedDataLength, DataPayloadType) override;
Modified: trunk/Source/WebCore/loader/ResourceLoader.cpp (224372 => 224373)
--- trunk/Source/WebCore/loader/ResourceLoader.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/loader/ResourceLoader.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -50,6 +50,7 @@
#include "ResourceHandle.h"
#include "SecurityOrigin.h"
#include "SharedBuffer.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/Ref.h>
#if ENABLE(CONTENT_EXTENSIONS)
@@ -420,7 +421,7 @@
}
}
-void ResourceLoader::willSendRequest(ResourceRequest&& request, const ResourceResponse& redirectResponse, WTF::Function<void(ResourceRequest&&)>&& callback)
+void ResourceLoader::willSendRequest(ResourceRequest&& request, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& callback)
{
willSendRequestInternal(request, redirectResponse);
callback(WTFMove(request));
@@ -638,15 +639,15 @@
return frameLoader()->client().cannotShowURLError(m_request);
}
-void ResourceLoader::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&& redirectResponse)
+void ResourceLoader::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
RefPtr<ResourceHandle> protectedHandle(handle);
if (documentLoader()->applicationCacheHost().maybeLoadFallbackForRedirect(this, request, redirectResponse)) {
- handle->continueWillSendRequest(WTFMove(request));
+ completionHandler(WTFMove(request));
return;
}
willSendRequestInternal(request, redirectResponse);
- handle->continueWillSendRequest(WTFMove(request));
+ completionHandler(WTFMove(request));
}
void ResourceLoader::didSendData(ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
Modified: trunk/Source/WebCore/loader/ResourceLoader.h (224372 => 224373)
--- trunk/Source/WebCore/loader/ResourceLoader.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/loader/ResourceLoader.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -98,7 +98,7 @@
virtual bool isSubresourceLoader();
- virtual void willSendRequest(ResourceRequest&&, const ResourceResponse& redirectResponse, WTF::Function<void(ResourceRequest&&)>&& callback);
+ virtual void willSendRequest(ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& callback);
virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
virtual void didReceiveResponse(const ResourceResponse&);
virtual void didReceiveData(const char*, unsigned, long long encodedDataLength, DataPayloadType);
@@ -187,7 +187,7 @@
// ResourceHandleClient
void didSendData(ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override;
void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) override;
- void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) 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;
void didFinishLoading(ResourceHandle*) override;
Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp (224372 => 224373)
--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -48,6 +48,7 @@
#include "ResourceHandle.h"
#include "SecurityOrigin.h"
#include "Settings.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/HashMap.h>
#include <wtf/MainThread.h>
@@ -562,9 +563,9 @@
handle->continueDidReceiveResponse();
}
-void ApplicationCacheGroup::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&&)
+void ApplicationCacheGroup::willSendRequestAsync(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
- handle->continueWillSendRequest(WTFMove(request));
+ completionHandler(WTFMove(request));
}
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Modified: trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h (224372 => 224373)
--- trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/loader/appcache/ApplicationCacheGroup.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -110,7 +110,7 @@
// ResourceHandleClient
void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) final;
- void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) final;
+ void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) final;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void canAuthenticateAgainstProtectionSpaceAsync(ResourceHandle*, const ProtectionSpace&) final;
#endif
Modified: trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp (224372 => 224373)
--- trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/BlobResourceHandle.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -45,6 +45,7 @@
#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "SharedBuffer.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/MainThread.h>
#include <wtf/Ref.h>
@@ -76,7 +77,7 @@
void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) final;
void didFail(ResourceHandle*, const ResourceError&) final;
- void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) final;
+ void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) final;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void canAuthenticateAgainstProtectionSpaceAsync(ResourceHandle*, const ProtectionSpace&) final;
#endif
@@ -94,10 +95,10 @@
{
}
-void BlobResourceSynchronousLoader::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&&)
+void BlobResourceSynchronousLoader::willSendRequestAsync(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
ASSERT_NOT_REACHED();
- handle->continueWillSendRequest(WTFMove(request));
+ completionHandler(WTFMove(request));
}
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Modified: trunk/Source/WebCore/platform/network/PingHandle.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/PingHandle.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/PingHandle.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -57,14 +57,14 @@
}
private:
- void willSendRequestAsync(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&) final
+ void willSendRequestAsync(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler) final
{
m_currentRequest = WTFMove(request);
if (m_shouldFollowRedirects) {
- m_handle->continueWillSendRequest(ResourceRequest { m_currentRequest });
+ completionHandler(ResourceRequest { m_currentRequest });
return;
}
- m_handle->continueWillSendRequest({ });
+ completionHandler({ });
pingLoadComplete(ResourceError { String(), 0, m_currentRequest.url(), ASCIILiteral("Not allowed to follow redirects"), ResourceError::Type::AccessControl });
}
void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&& response) final
Modified: trunk/Source/WebCore/platform/network/ResourceHandle.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/ResourceHandle.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/ResourceHandle.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -104,7 +104,7 @@
WEBCORE_EXPORT virtual ~ResourceHandle();
#if PLATFORM(COCOA) || USE(CFURLCONNECTION)
- ResourceRequest willSendRequest(ResourceRequest&&, ResourceResponse&&);
+ void willSendRequest(ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&);
#endif
void didReceiveResponse(ResourceResponse&&);
@@ -193,9 +193,6 @@
WEBCORE_EXPORT ResourceHandleClient* client() const;
WEBCORE_EXPORT void clearClient();
- // Called in response to ResourceHandleClient::willSendRequestAsync().
- WEBCORE_EXPORT void continueWillSendRequest(ResourceRequest&&);
-
// Called in response to ResourceHandleClient::didReceiveResponseAsync().
WEBCORE_EXPORT virtual void continueDidReceiveResponse();
Modified: trunk/Source/WebCore/platform/network/ResourceHandleClient.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/ResourceHandleClient.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/ResourceHandleClient.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -26,6 +26,7 @@
#pragma once
#include "PlatformExportMacros.h"
+#include <wtf/Forward.h>
#include <wtf/Ref.h>
#if USE(CFURLCONNECTION)
@@ -75,8 +76,7 @@
virtual bool loadingSynchronousXHR() { return false; }
- // Client will pass an updated request using ResourceHandle::continueWillSendRequest() when ready.
- WEBCORE_EXPORT virtual void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) = 0;
+ 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;
Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp (224372 => 224373)
--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -29,22 +29,23 @@
#include "AuthenticationChallenge.h"
#include "ResourceHandle.h"
#include "ResourceRequest.h"
+#include <wtf/CompletionHandler.h>
namespace WebCore {
SynchronousLoaderClient::~SynchronousLoaderClient() = default;
-void SynchronousLoaderClient::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&&)
+void SynchronousLoaderClient::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
// FIXME: This needs to be fixed to follow the redirect correctly even for cross-domain requests.
if (protocolHostAndPortAreEqual(handle->firstRequest().url(), request.url())) {
- handle->continueWillSendRequest(WTFMove(request));
+ completionHandler(WTFMove(request));
return;
}
ASSERT(m_error.isNull());
m_error = platformBadResponseError();
- handle->continueWillSendRequest({ });
+ completionHandler({ });
}
bool SynchronousLoaderClient::shouldUseCredentialStorage(ResourceHandle*)
Modified: trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -46,7 +46,7 @@
WEBCORE_EXPORT static ResourceError platformBadResponseError();
private:
- void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&) override;
+ void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) override;
bool shouldUseCredentialStorage(ResourceHandle*) override;
void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&) override;
void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&) override;
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp (224372 => 224373)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -48,6 +48,7 @@
#include <pal/spi/cf/CFNetworkSPI.h>
#include <sys/stat.h>
#include <sys/types.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/HashMap.h>
#include <wtf/NeverDestroyed.h>
#include <wtf/Ref.h>
@@ -285,7 +286,7 @@
}
}
-ResourceRequest ResourceHandle::willSendRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse)
+void ResourceHandle::willSendRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
const URL& url = ""
d->m_user = url.user();
@@ -314,9 +315,11 @@
}
}
- Ref<ResourceHandle> protectedThis(*this);
- client()->willSendRequestAsync(this, WTFMove(request), WTFMove(redirectResponse));
- return { };
+ client()->willSendRequestAsync(this, WTFMove(request), WTFMove(redirectResponse), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (ResourceRequest&& request) mutable {
+ if (!request.isNull())
+ request.setStorageSession(d->m_storageSession.get());
+ completionHandler(WTFMove(request));
+ });
}
bool ResourceHandle::shouldUseCredentialStorage()
@@ -663,13 +666,6 @@
return d->m_currentRequest;
}
-void ResourceHandle::continueWillSendRequest(ResourceRequest&& request)
-{
- if (!request.isNull())
- request.setStorageSession(d->m_storageSession.get());
- d->m_connectionDelegate->continueWillSendRequest(request.cfURLRequest(UpdateHTTPBody));
-}
-
void ResourceHandle::continueDidReceiveResponse()
{
d->m_connectionDelegate->continueDidReceiveResponse();
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegate.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -46,7 +46,6 @@
virtual void setupConnectionScheduling(CFURLConnectionRef) = 0;
virtual void releaseHandle();
- virtual void continueWillSendRequest(CFURLRequestRef) = 0;
virtual void continueDidReceiveResponse() = 0;
virtual void continueWillCacheResponse(CFCachedURLResponseRef) = 0;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp (224372 => 224373)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -40,6 +40,7 @@
#include "WebCoreURLResponse.h"
#endif
#include <pal/spi/cf/CFNetworkSPI.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/MainThread.h>
#include <wtf/Threading.h>
#include <wtf/text/CString.h>
@@ -152,23 +153,27 @@
ASSERT(!isMainThread());
- auto work = [protectedThis = makeRef(*this), cfRequest = RetainPtr<CFURLRequestRef>(cfRequest), originalRedirectResponse = RetainPtr<CFURLResponseRef>(originalRedirectResponse)] () {
+ auto work = [this, protectedThis = makeRef(*this), cfRequest = RetainPtr<CFURLRequestRef>(cfRequest), originalRedirectResponse = RetainPtr<CFURLResponseRef>(originalRedirectResponse)] () mutable {
auto& handle = protectedThis->m_handle;
-
- if (!protectedThis->hasHandle()) {
- protectedThis->continueWillSendRequest(nullptr);
+ auto completionHandler = [this, protectedThis = WTFMove(protectedThis)] (ResourceRequest&& request) {
+ m_requestResult = request.cfURLRequest(UpdateHTTPBody);
+ m_semaphore.signal();
+ };
+
+ if (!hasHandle()) {
+ completionHandler({ });
return;
}
LOG(Network, "CFNet - ResourceHandleCFURLConnectionDelegateWithOperationQueue::willSendRequest(handle=%p) (%s)", handle, handle->firstRequest().url().string().utf8().data());
- RetainPtr<CFURLResponseRef> redirectResponse = protectedThis->synthesizeRedirectResponseIfNecessary(cfRequest.get(), originalRedirectResponse.get());
+ RetainPtr<CFURLResponseRef> redirectResponse = synthesizeRedirectResponseIfNecessary(cfRequest.get(), originalRedirectResponse.get());
ASSERT(redirectResponse);
- ResourceRequest request = protectedThis->createResourceRequest(cfRequest.get(), redirectResponse.get());
- handle->willSendRequest(WTFMove(request), redirectResponse.get());
+ ResourceRequest request = createResourceRequest(cfRequest.get(), redirectResponse.get());
+ handle->willSendRequest(WTFMove(request), redirectResponse.get(), WTFMove(completionHandler));
};
-
+
if (m_messageQueue)
m_messageQueue->append(std::make_unique<Function<void()>>(WTFMove(work)));
else
@@ -405,12 +410,6 @@
}
#endif // USE(PROTECTION_SPACE_AUTH_CALLBACK)
-void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueWillSendRequest(CFURLRequestRef request)
-{
- m_requestResult = request;
- m_semaphore.signal();
-}
-
void ResourceHandleCFURLConnectionDelegateWithOperationQueue::continueDidReceiveResponse()
{
m_semaphore.signal();
Modified: trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -58,7 +58,6 @@
void didSendBodyData(CFIndex totalBytesWritten, CFIndex totalBytesExpectedToWrite) override;
Boolean shouldUseCredentialStorage() override;
- void continueWillSendRequest(CFURLRequestRef) override;
void continueDidReceiveResponse() override;
void continueWillCacheResponse(CFCachedURLResponseRef) override;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Modified: trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp (224372 => 224373)
--- trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/curl/ResourceHandleCurlDelegate.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -41,6 +41,7 @@
#include "ResourceHandleInternal.h"
#include "SharedBuffer.h"
#include "TextEncoding.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/text/Base64.h>
namespace WebCore {
@@ -363,7 +364,9 @@
}
ResourceResponse responseCopy = response();
- m_handle->client()->willSendRequestAsync(m_handle, WTFMove(newRequest), WTFMove(responseCopy));
+ m_handle->client()->willSendRequestAsync(m_handle, WTFMove(newRequest), WTFMove(responseCopy), [this, protectedThis = makeRef(*this)] (ResourceRequest&& request) {
+ continueWillSendRequest(WTFMove(request));
+ });
}
void ResourceHandleCurlDelegate::continueWillSendRequest(ResourceRequest&& request)
Modified: trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm (224372 => 224373)
--- trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/mac/ResourceHandleMac.mm 2017-11-03 02:54:36 UTC (rev 224373)
@@ -49,6 +49,7 @@
#import <pal/spi/cf/CFNetworkSPI.h>
#import <pal/spi/cocoa/NSURLConnectionSPI.h>
#import <wtf/BlockObjCExceptions.h>
+#import <wtf/CompletionHandler.h>
#import <wtf/Ref.h>
#import <wtf/SchedulePair.h>
#import <wtf/text/Base64.h>
@@ -435,7 +436,7 @@
data.swap(client.mutableData());
}
-ResourceRequest ResourceHandle::willSendRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse)
+void ResourceHandle::willSendRequest(ResourceRequest&& request, ResourceResponse&& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
ASSERT(!redirectResponse.isNull());
@@ -483,18 +484,14 @@
}
}
- client()->willSendRequestAsync(this, WTFMove(request), WTFMove(redirectResponse));
- return { };
+ client()->willSendRequestAsync(this, WTFMove(request), WTFMove(redirectResponse), [this, protectedThis = makeRef(*this), completionHandler = WTFMove(completionHandler)] (ResourceRequest&& request) mutable {
+ // Client call may not preserve the session, especially if the request is sent over IPC.
+ if (!request.isNull())
+ request.setStorageSession(d->m_storageSession.get());
+ completionHandler(WTFMove(request));
+ });
}
-void ResourceHandle::continueWillSendRequest(ResourceRequest&& newRequest)
-{
- // Client call may not preserve the session, especially if the request is sent over IPC.
- if (!newRequest.isNull())
- newRequest.setStorageSession(d->m_storageSession.get());
- [(id)delegate() continueWillSendRequest:newRequest.nsURLRequest(UpdateHTTPBody)];
-}
-
void ResourceHandle::continueDidReceiveResponse()
{
[delegate() continueDidReceiveResponse];
Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h (224372 => 224373)
--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -49,7 +49,6 @@
- (void)detachHandle;
- (id)initWithHandle:(WebCore::ResourceHandle*)handle messageQueue:(MessageQueue<Function<void()>>*)messageQueue;
-- (void)continueWillSendRequest:(NSURLRequest *)newRequest;
- (void)continueDidReceiveResponse;
- (void)continueCanAuthenticateAgainstProtectionSpace:(BOOL)canAuthenticate;
- (void)continueWillCacheResponse:(NSCachedURLResponse *)response;
Modified: trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (224372 => 224373)
--- trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm 2017-11-03 02:54:36 UTC (rev 224373)
@@ -74,12 +74,6 @@
[super dealloc];
}
-- (void)continueWillSendRequest:(NSURLRequest *)newRequest
-{
- m_requestResult = newRequest;
- dispatch_semaphore_signal(m_semaphore);
-}
-
- (void)continueDidReceiveResponse
{
dispatch_semaphore_signal(m_semaphore);
@@ -122,10 +116,12 @@
return;
}
- m_handle->willSendRequest(newRequest.get(), redirectResponse.get());
+ m_handle->willSendRequest(newRequest.get(), redirectResponse.get(), [self, protectedSelf = WTFMove(protectedSelf)](ResourceRequest&& request) {
+ m_requestResult = request.nsURLRequest(UpdateHTTPBody);
+ dispatch_semaphore_signal(m_semaphore);
+ });
};
-
if (m_messageQueue)
m_messageQueue->append(std::make_unique<Function<void()>>(WTFMove(work)));
else
Modified: trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp (224372 => 224373)
--- trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -56,6 +56,7 @@
#if !COMPILER(MSVC)
#include <unistd.h>
#endif
+#include <wtf/CompletionHandler.h>
#include <wtf/CurrentTime.h>
#include <wtf/glib/GRefPtr.h>
#include <wtf/glib/RunLoopSourcePriority.h>
@@ -353,7 +354,9 @@
cleanupSoupRequestOperation(handle);
ResourceResponse responseCopy = d->m_response;
- d->client()->willSendRequestAsync(handle, WTFMove(newRequest), WTFMove(responseCopy));
+ d->client()->willSendRequestAsync(handle, WTFMove(newRequest), WTFMove(responseCopy), [handle = makeRef(*handle)] (ResourceRequest&& request) {
+ continueAfterWillSendRequest(handle.ptr(), WTFMove(request));
+ });
}
static void redirectSkipCallback(GObject*, GAsyncResult* asyncResult, gpointer data)
@@ -1024,11 +1027,6 @@
d->m_cancellable.get(), readCallback, handle.get());
}
-void ResourceHandle::continueWillSendRequest(ResourceRequest&& request)
-{
- continueAfterWillSendRequest(this, WTFMove(request));
-}
-
void ResourceHandle::continueDidReceiveResponse()
{
continueAfterDidReceiveResponse(this);
Modified: trunk/Source/WebKit/ChangeLog (224372 => 224373)
--- trunk/Source/WebKit/ChangeLog 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/ChangeLog 2017-11-03 02:54:36 UTC (rev 224373)
@@ -1,3 +1,38 @@
+2017-11-02 Alex Christensen <[email protected]>
+
+ Use CompletionHandlers for redirects
+ https://bugs.webkit.org/show_bug.cgi?id=179163
+
+ Reviewed by Tim Horton.
+
+ * NetworkProcess/Downloads/BlobDownloadClient.cpp:
+ (WebKit::BlobDownloadClient::willSendRequestAsync):
+ * NetworkProcess/Downloads/BlobDownloadClient.h:
+ * NetworkProcess/NetworkDataTask.h:
+ * NetworkProcess/NetworkLoad.cpp:
+ (WebKit::NetworkLoad::~NetworkLoad):
+ (WebKit::NetworkLoad::continueWillSendRequest):
+ (WebKit::NetworkLoad::willSendRequestAsync):
+ * NetworkProcess/NetworkLoad.h:
+ * NetworkProcess/NetworkLoadClient.h:
+ * NetworkProcess/cocoa/NetworkSessionCocoa.mm:
+ (-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
+ (-[WKNetworkSessionDelegate URLSession:task:_schemeUpgraded:completionHandler:]):
+ * UIProcess/API/APIDownloadClient.h:
+ (API::DownloadClient::willSendRequest):
+ * UIProcess/API/C/WKContext.cpp:
+ (WKContextSetDownloadClient):
+ * UIProcess/Cocoa/DownloadClient.h:
+ * UIProcess/Cocoa/DownloadClient.mm:
+ (WebKit::DownloadClient::willSendRequest):
+ * WebProcess/Network/WebResourceLoader.cpp:
+ (WebKit::WebResourceLoader::willSendRequest):
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::Stream::~Stream):
+ (WebKit::PluginView::Stream::continueLoad):
+ (WebKit::PluginView::Stream::willSendRequest):
+ * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
+
2017-11-02 Christopher Reid <[email protected]>
Add a FileSystem namespace to FileSystem.cpp
Modified: trunk/Source/WebKit/NetworkProcess/Downloads/BlobDownloadClient.cpp (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/Downloads/BlobDownloadClient.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/BlobDownloadClient.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -35,6 +35,7 @@
#include <WebCore/ResourceError.h>
#include <WebCore/ResourceResponse.h>
#include <WebCore/SharedBuffer.h>
+#include <wtf/CompletionHandler.h>
namespace WebKit {
@@ -71,9 +72,10 @@
m_download.continueDidReceiveResponse();
}
-void BlobDownloadClient::willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&)
+void BlobDownloadClient::willSendRequestAsync(ResourceHandle*, ResourceRequest&& request, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
ASSERT_NOT_REACHED();
+ completionHandler(WTFMove(request));
}
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
Modified: trunk/Source/WebKit/NetworkProcess/Downloads/BlobDownloadClient.h (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/Downloads/BlobDownloadClient.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/Downloads/BlobDownloadClient.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -49,7 +49,7 @@
void didReceiveBuffer(WebCore::ResourceHandle*, Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) final;
void didFinishLoading(WebCore::ResourceHandle*) final;
void didFail(WebCore::ResourceHandle*, const WebCore::ResourceError&) final;
- void willSendRequestAsync(WebCore::ResourceHandle*, WebCore::ResourceRequest&&, WebCore::ResourceResponse&&) final;
+ void willSendRequestAsync(WebCore::ResourceHandle*, WebCore::ResourceRequest&&, WebCore::ResourceResponse&&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) final;
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void canAuthenticateAgainstProtectionSpaceAsync(WebCore::ResourceHandle*, const WebCore::ProtectionSpace&) final;
#endif
Modified: trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -54,7 +54,7 @@
class PendingDownload;
enum class AuthenticationChallengeDisposition;
-using RedirectCompletionHandler = CompletionHandler<void(const WebCore::ResourceRequest&)>;
+using RedirectCompletionHandler = CompletionHandler<void(WebCore::ResourceRequest&&)>;
using ChallengeCompletionHandler = CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>;
using ResponseCompletionHandler = CompletionHandler<void(WebCore::PolicyAction)>;
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -133,11 +133,11 @@
NetworkLoad::~NetworkLoad()
{
ASSERT(RunLoop::isMain());
+ if (m_redirectCompletionHandler)
+ m_redirectCompletionHandler({ });
#if USE(NETWORK_SESSION)
if (m_responseCompletionHandler)
m_responseCompletionHandler(PolicyAction::Ignore);
- if (m_redirectCompletionHandler)
- m_redirectCompletionHandler({ });
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
if (m_challengeCompletionHandler)
m_challengeCompletionHandler(AuthenticationChallengeDisposition::Cancel, { });
@@ -211,7 +211,7 @@
}
if (redirectCompletionHandler)
- redirectCompletionHandler(m_currentRequest);
+ redirectCompletionHandler(ResourceRequest(m_currentRequest));
#else
if (m_currentRequest.isNull()) {
if (m_handle)
@@ -219,7 +219,9 @@
didFail(m_handle.get(), cancelledError(m_currentRequest));
} else if (m_handle) {
auto currentRequestCopy = m_currentRequest;
- m_handle->continueWillSendRequest(WTFMove(currentRequestCopy));
+ auto redirectCompletionHandler = std::exchange(m_redirectCompletionHandler, nullptr);
+ ASSERT(redirectCompletionHandler);
+ redirectCompletionHandler(WTFMove(currentRequestCopy));
}
#endif
}
@@ -490,8 +492,10 @@
m_client.get().didFailLoading(error);
}
-void NetworkLoad::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&& redirectResponse)
+void NetworkLoad::willSendRequestAsync(ResourceHandle* handle, ResourceRequest&& request, ResourceResponse&& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& completionHandler)
{
+ ASSERT(!m_redirectCompletionHandler);
+ m_redirectCompletionHandler = WTFMove(completionHandler);
ASSERT_UNUSED(handle, handle == m_handle);
sharedWillSendRedirectedRequest(WTFMove(request), WTFMove(redirectResponse));
}
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoad.h (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoad.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoad.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -23,13 +23,13 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef NetworkLoad_h
-#define NetworkLoad_h
+#pragma once
#include "NetworkLoadClient.h"
#include "NetworkLoadParameters.h"
#include "RemoteNetworkingContext.h"
#include <WebCore/ResourceHandleClient.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/Optional.h>
#if USE(NETWORK_SESSION)
@@ -115,7 +115,7 @@
#if !USE(NETWORK_SESSION)
// ResourceHandleClient
- void willSendRequestAsync(WebCore::ResourceHandle*, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse) final;
+ void willSendRequestAsync(WebCore::ResourceHandle*, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) final;
void didSendData(WebCore::ResourceHandle*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) final;
void didReceiveResponseAsync(WebCore::ResourceHandle*, WebCore::ResourceResponse&&) final;
void didReceiveData(WebCore::ResourceHandle*, const char*, unsigned, int encodedDataLength) final;
@@ -147,6 +147,7 @@
std::reference_wrapper<NetworkLoadClient> m_client;
const NetworkLoadParameters m_parameters;
+ CompletionHandler<void(WebCore::ResourceRequest&&)> m_redirectCompletionHandler;
#if USE(NETWORK_SESSION)
RefPtr<NetworkDataTask> m_task;
std::optional<WebCore::AuthenticationChallenge> m_challenge;
@@ -154,7 +155,6 @@
ChallengeCompletionHandler m_challengeCompletionHandler;
#endif
ResponseCompletionHandler m_responseCompletionHandler;
- RedirectCompletionHandler m_redirectCompletionHandler;
struct Throttle;
std::unique_ptr<Throttle> m_throttle;
@@ -173,5 +173,3 @@
};
} // namespace WebKit
-
-#endif // NetworkLoad_h
Modified: trunk/Source/WebKit/NetworkProcess/NetworkLoadClient.h (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/NetworkLoadClient.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/NetworkLoadClient.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -30,10 +30,6 @@
#include <WebCore/ResourceResponse.h>
#include <wtf/Forward.h>
-#if PLATFORM(COCOA)
-typedef const struct _CFCachedURLResponse* CFCachedURLResponseRef;
-#endif
-
namespace WebCore {
class NetworkLoadMetrics;
class ProtectionSpace;
Modified: trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm (224372 => 224373)
--- trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm 2017-11-03 02:54:36 UTC (rev 224373)
@@ -172,7 +172,7 @@
if (auto* networkDataTask = [self existingTask:task]) {
auto completionHandlerCopy = Block_copy(completionHandler);
- networkDataTask->willPerformHTTPRedirection(response, request, [completionHandlerCopy, taskIdentifier](auto& request) {
+ networkDataTask->willPerformHTTPRedirection(response, request, [completionHandlerCopy, taskIdentifier](auto&& request) {
#if !LOG_DISABLED
LOG(NetworkSession, "%llu willPerformHTTPRedirection completionHandler (%s)", taskIdentifier, request.url().string().utf8().data());
#else
@@ -194,7 +194,7 @@
if (auto* networkDataTask = [self existingTask:task]) {
auto completionHandlerCopy = Block_copy(completionHandler);
- networkDataTask->willPerformHTTPRedirection(WebCore::synthesizeRedirectResponseIfNecessary([task currentRequest], request, nil), request, [completionHandlerCopy, taskIdentifier](auto& request) {
+ networkDataTask->willPerformHTTPRedirection(WebCore::synthesizeRedirectResponseIfNecessary([task currentRequest], request, nil), request, [completionHandlerCopy, taskIdentifier](auto&& request) {
#if !LOG_DISABLED
LOG(NetworkSession, "%llu _schemeUpgraded completionHandler (%s)", taskIdentifier, request.url().string().utf8().data());
#else
Modified: trunk/Source/WebKit/UIProcess/API/APIDownloadClient.h (224372 => 224373)
--- trunk/Source/WebKit/UIProcess/API/APIDownloadClient.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/UIProcess/API/APIDownloadClient.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -25,7 +25,7 @@
#pragma once
-#include <wtf/Function.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
@@ -62,7 +62,7 @@
virtual void didFail(WebKit::WebProcessPool&, WebKit::DownloadProxy&, const WebCore::ResourceError&) { }
virtual void didCancel(WebKit::WebProcessPool&, WebKit::DownloadProxy&) { }
virtual void processDidCrash(WebKit::WebProcessPool&, WebKit::DownloadProxy&) { }
- virtual void willSendRequest(WebKit::WebProcessPool&, WebKit::DownloadProxy&, WebCore::ResourceRequest&& request, const WebCore::ResourceResponse&, Function<void(WebCore::ResourceRequest&&)>&& completionHandler) { completionHandler(WTFMove(request)); }
+ virtual void willSendRequest(WebKit::WebProcessPool&, WebKit::DownloadProxy&, WebCore::ResourceRequest&& request, const WebCore::ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&& completionHandler) { completionHandler(WTFMove(request)); }
};
} // namespace API
Modified: trunk/Source/WebKit/UIProcess/API/C/WKContext.cpp (224372 => 224373)
--- trunk/Source/WebKit/UIProcess/API/C/WKContext.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/UIProcess/API/C/WKContext.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -264,12 +264,12 @@
m_client.processDidCrash(toAPI(&processPool), toAPI(&downloadProxy), m_client.base.clientInfo);
}
- void willSendRequest(WebProcessPool& processPool, DownloadProxy& downloadProxy, ResourceRequest&& request, const ResourceResponse&, Function<void(ResourceRequest&&)>&& callback) final
+ void willSendRequest(WebProcessPool& processPool, DownloadProxy& downloadProxy, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler) final
{
if (m_client.didReceiveServerRedirect)
m_client.didReceiveServerRedirect(toAPI(&processPool), toAPI(&downloadProxy), toURLRef(request.url().string().impl()), m_client.base.clientInfo);
- callback(WTFMove(request));
+ completionHandler(WTFMove(request));
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.h (224372 => 224373)
--- trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -54,7 +54,7 @@
void didFinish(WebProcessPool&, DownloadProxy&) final;
void didFail(WebProcessPool&, DownloadProxy&, const WebCore::ResourceError&) final;
void didCancel(WebProcessPool&, DownloadProxy&) final;
- void willSendRequest(WebProcessPool&, DownloadProxy&, WebCore::ResourceRequest&&, const WebCore::ResourceResponse&, Function<void(WebCore::ResourceRequest&&)>&&) final;
+ void willSendRequest(WebProcessPool&, DownloadProxy&, WebCore::ResourceRequest&&, const WebCore::ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) final;
void didReceiveAuthenticationChallenge(WebProcessPool&, DownloadProxy&, AuthenticationChallengeProxy&) final;
#if !USE(NETWORK_SESSION)
bool shouldDecodeSourceDataOfMIMEType(WebProcessPool&, DownloadProxy&, const String&) final;
Modified: trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm (224372 => 224373)
--- trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm 2017-11-03 02:54:36 UTC (rev 224373)
@@ -185,12 +185,12 @@
[m_delegate _downloadDidCancel:wrapper(downloadProxy)];
}
-void DownloadClient::willSendRequest(WebProcessPool&, DownloadProxy& downloadProxy, WebCore::ResourceRequest&& request, const WebCore::ResourceResponse&, Function<void(WebCore::ResourceRequest&&)>&& callback)
+void DownloadClient::willSendRequest(WebProcessPool&, DownloadProxy& downloadProxy, WebCore::ResourceRequest&& request, const WebCore::ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&& completionHandler)
{
if (m_delegateMethods.downloadDidReceiveServerRedirectToURL)
[m_delegate _download:wrapper(downloadProxy) didReceiveServerRedirectToURL:[NSURL _web_URLWithWTFString:request.url().string()]];
- callback(WTFMove(request));
+ completionHandler(WTFMove(request));
}
} // namespace WebKit
Modified: trunk/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp (224372 => 224373)
--- trunk/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -43,6 +43,7 @@
#include <WebCore/ResourceError.h>
#include <WebCore/ResourceLoader.h>
#include <WebCore/SubresourceLoader.h>
+#include <wtf/CompletionHandler.h>
using namespace WebCore;
@@ -85,12 +86,10 @@
LOG(Network, "(WebProcess) WebResourceLoader::willSendRequest to '%s'", proposedRequest.url().string().latin1().data());
RELEASE_LOG_IF_ALLOWED("willSendRequest: (pageID = %" PRIu64 ", frameID = %" PRIu64 ", resourceID = %" PRIu64 ")", m_trackingParameters.pageID, m_trackingParameters.frameID, m_trackingParameters.resourceID);
- RefPtr<WebResourceLoader> protectedThis(this);
-
if (m_coreLoader->documentLoader()->applicationCacheHost().maybeLoadFallbackForRedirect(m_coreLoader.get(), proposedRequest, redirectResponse))
return;
- m_coreLoader->willSendRequest(WTFMove(proposedRequest), redirectResponse, [protectedThis](ResourceRequest&& request) {
+ m_coreLoader->willSendRequest(WTFMove(proposedRequest), redirectResponse, [protectedThis = makeRef(*this)](ResourceRequest&& request) {
if (!protectedThis->m_coreLoader)
return;
Modified: trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp (224372 => 224373)
--- trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -70,6 +70,7 @@
#include <WebCore/Settings.h>
#include <WebCore/UserGestureIndicator.h>
#include <bindings/ScriptValue.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/text/StringBuilder.h>
#if PLATFORM(X11)
@@ -133,7 +134,7 @@
}
// NetscapePluginStreamLoaderClient
- void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, WTF::Function<void (ResourceRequest&&)>&&) override;
+ void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&&) override;
void didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse&) override;
void didReceiveData(NetscapePlugInStreamLoader*, const char*, int) override;
void didFail(NetscapePlugInStreamLoader*, const ResourceError&) override;
@@ -142,7 +143,7 @@
PluginView* m_pluginView;
uint64_t m_streamID;
ResourceRequest m_request;
- WTF::Function<void (ResourceRequest)> m_loadCallback;
+ CompletionHandler<void(ResourceRequest&&)> m_loadCallback;
// True if the stream was explicitly cancelled by calling cancel().
// (As opposed to being cancelled by the user hitting the stop button for example.
@@ -153,6 +154,8 @@
PluginView::Stream::~Stream()
{
+ if (m_loadCallback)
+ m_loadCallback({ });
ASSERT(!m_pluginView);
}
@@ -181,7 +184,7 @@
ASSERT(m_pluginView->m_plugin);
ASSERT(m_loadCallback);
- m_loadCallback(m_request);
+ m_loadCallback(ResourceRequest(m_request));
}
static String buildHTTPHeaders(const ResourceResponse& response, long long& expectedContentLength)
@@ -221,7 +224,7 @@
return std::chrono::duration_cast<std::chrono::milliseconds>(lastModified.value().time_since_epoch()).count();
}
-void PluginView::Stream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse& redirectResponse, WTF::Function<void (ResourceRequest&&)>&& decisionHandler)
+void PluginView::Stream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& decisionHandler)
{
const URL& requestURL = request.url();
const URL& redirectResponseURL = redirectResponse.url();
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.cpp (224372 => 224373)
--- trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -33,6 +33,7 @@
#include <WebCore/NetworkLoadMetrics.h>
#include <WebCore/ResourceError.h>
#include <WebCore/ResourceLoader.h>
+#include <wtf/CompletionHandler.h>
#include <wtf/CurrentTime.h>
using namespace WebCore;
Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (224372 => 224373)
--- trunk/Source/WebKitLegacy/mac/ChangeLog 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog 2017-11-03 02:54:36 UTC (rev 224373)
@@ -1,3 +1,17 @@
+2017-11-02 Alex Christensen <[email protected]>
+
+ Use CompletionHandlers for redirects
+ https://bugs.webkit.org/show_bug.cgi?id=179163
+
+ Reviewed by Tim Horton.
+
+ * Plugins/Hosted/HostedNetscapePluginStream.h:
+ * Plugins/Hosted/HostedNetscapePluginStream.mm:
+ (WebKit::HostedNetscapePluginStream::willSendRequest):
+ * Plugins/WebNetscapePluginStream.h:
+ * Plugins/WebNetscapePluginStream.mm:
+ (WebNetscapePluginStream::willSendRequest):
+
2017-11-02 Christopher Reid <[email protected]>
Add a FileSystem namespace to FileSystem.cpp
Modified: trunk/Source/WebKitLegacy/mac/Plugins/Hosted/HostedNetscapePluginStream.h (224372 => 224373)
--- trunk/Source/WebKitLegacy/mac/Plugins/Hosted/HostedNetscapePluginStream.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/mac/Plugins/Hosted/HostedNetscapePluginStream.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -86,7 +86,7 @@
NSError *pluginCancelledConnectionError() const;
// NetscapePlugInStreamLoaderClient methods.
- void willSendRequest(WebCore::NetscapePlugInStreamLoader*, WebCore::ResourceRequest&&, const WebCore::ResourceResponse& redirectResponse, WTF::Function<void (WebCore::ResourceRequest&&)>&&) override;
+ void willSendRequest(WebCore::NetscapePlugInStreamLoader*, WebCore::ResourceRequest&&, const WebCore::ResourceResponse& redirectResponse, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) override;
void didReceiveResponse(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceResponse&) override;
bool wantsAllStreams() const override;
Modified: trunk/Source/WebKitLegacy/mac/Plugins/Hosted/HostedNetscapePluginStream.mm (224372 => 224373)
--- trunk/Source/WebKitLegacy/mac/Plugins/Hosted/HostedNetscapePluginStream.mm 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/mac/Plugins/Hosted/HostedNetscapePluginStream.mm 2017-11-03 02:54:36 UTC (rev 224373)
@@ -45,6 +45,7 @@
#import <WebCore/SecurityPolicy.h>
#import <WebCore/WebCoreURLResponse.h>
#import <pal/spi/cf/CFNetworkSPI.h>
+#import <wtf/CompletionHandler.h>
#import <wtf/RefCountedLeakCounter.h>
using namespace WebCore;
@@ -130,7 +131,7 @@
m_instance->disconnectStream(this);
}
-void HostedNetscapePluginStream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse&, WTF::Function<void (WebCore::ResourceRequest&&)>&& callback)
+void HostedNetscapePluginStream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&& callback)
{
// FIXME: We should notify the plug-in with NPP_URLRedirectNotify here.
callback(WTFMove(request));
Modified: trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.h (224372 => 224373)
--- trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -97,7 +97,7 @@
NSError *pluginCancelledConnectionError() const;
// NetscapePlugInStreamLoaderClient methods.
- void willSendRequest(WebCore::NetscapePlugInStreamLoader*, WebCore::ResourceRequest&&, const WebCore::ResourceResponse& redirectResponse, WTF::Function<void (WebCore::ResourceRequest&&)>&&) override;
+ void willSendRequest(WebCore::NetscapePlugInStreamLoader*, WebCore::ResourceRequest&&, const WebCore::ResourceResponse& redirectResponse, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) override;
void didReceiveResponse(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceResponse&) override;
void didFail(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceError&) override;
bool wantsAllStreams() const override;
Modified: trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.mm (224372 => 224373)
--- trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.mm 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/mac/Plugins/WebNetscapePluginStream.mm 2017-11-03 02:54:36 UTC (rev 224373)
@@ -53,6 +53,7 @@
#import <WebCore/WebCoreURLResponse.h>
#import <pal/spi/cf/CFNetworkSPI.h>
#import <runtime/JSLock.h>
+#import <wtf/CompletionHandler.h>
#import <wtf/HashMap.h>
#import <wtf/NeverDestroyed.h>
#import <wtf/StdLibExtras.h>
@@ -301,7 +302,7 @@
cancelLoadAndDestroyStreamWithError(m_loader->cancelledError());
}
-void WebNetscapePluginStream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse&, WTF::Function<void (WebCore::ResourceRequest&&)>&& callback)
+void WebNetscapePluginStream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&& callback)
{
// FIXME: We should notify the plug-in with NPP_URLRedirectNotify here.
callback(WTFMove(request));
Modified: trunk/Source/WebKitLegacy/win/ChangeLog (224372 => 224373)
--- trunk/Source/WebKitLegacy/win/ChangeLog 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/win/ChangeLog 2017-11-03 02:54:36 UTC (rev 224373)
@@ -1,3 +1,18 @@
+2017-11-02 Alex Christensen <[email protected]>
+
+ Use CompletionHandlers for redirects
+ https://bugs.webkit.org/show_bug.cgi?id=179163
+
+ Reviewed by Tim Horton.
+
+ * Plugins/PluginStream.cpp:
+ (WebCore::PluginStream::willSendRequest):
+ * Plugins/PluginStream.h:
+ (WebCore::PluginStreamClient::~PluginStreamClient):
+ (WebCore::PluginStreamClient::streamDidFinishLoading):
+ (WebCore::PluginStream::create):
+ (WebCore::PluginStream::setLoadManually):
+
2017-11-02 Christopher Reid <[email protected]>
Add a FileSystem namespace to FileSystem.cpp
Modified: trunk/Source/WebKitLegacy/win/Plugins/PluginStream.cpp (224372 => 224373)
--- trunk/Source/WebKitLegacy/win/Plugins/PluginStream.cpp 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/win/Plugins/PluginStream.cpp 2017-11-03 02:54:36 UTC (rev 224373)
@@ -35,6 +35,7 @@
#include "SharedBuffer.h"
#include "SubresourceLoader.h"
#include "WebResourceLoadScheduler.h"
+#include <wtf/CompletionHandler.h>
#include <wtf/StringExtras.h>
#include <wtf/text/CString.h>
#include <wtf/text/StringBuilder.h>
@@ -404,7 +405,7 @@
destroyStream(resultString.isNull() ? NPRES_NETWORK_ERR : NPRES_DONE);
}
-void PluginStream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse&, WTF::Function<void (WebCore::ResourceRequest&&)>&& callback)
+void PluginStream::willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&& callback)
{
// FIXME: We should notify the plug-in with NPP_URLRedirectNotify here.
callback(WTFMove(request));
Modified: trunk/Source/WebKitLegacy/win/Plugins/PluginStream.h (224372 => 224373)
--- trunk/Source/WebKitLegacy/win/Plugins/PluginStream.h 2017-11-03 02:50:59 UTC (rev 224372)
+++ trunk/Source/WebKitLegacy/win/Plugins/PluginStream.h 2017-11-03 02:54:36 UTC (rev 224373)
@@ -24,8 +24,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef PluginStream_h
-#define PluginStream_h
+#pragma once
#include "FileSystem.h"
#include "URL.h"
@@ -43,83 +42,81 @@
#include <wtf/text/WTFString.h>
namespace WebCore {
- class Frame;
- class PluginStream;
+class Frame;
+class PluginStream;
- enum PluginStreamState { StreamBeforeStarted, StreamStarted, StreamStopped };
+enum PluginStreamState { StreamBeforeStarted, StreamStarted, StreamStopped };
- class PluginStreamClient {
- public:
- virtual ~PluginStreamClient() {}
- virtual void streamDidFinishLoading(PluginStream*) {}
- };
+class PluginStreamClient {
+public:
+ virtual ~PluginStreamClient() { }
+ virtual void streamDidFinishLoading(PluginStream*) { }
+};
- class PluginStream : public RefCounted<PluginStream>, private NetscapePlugInStreamLoaderClient {
- public:
- static Ref<PluginStream> create(PluginStreamClient* client, Frame* frame, const ResourceRequest& request, bool sendNotification, void* notifyData, const NPPluginFuncs* functions, NPP instance, const PluginQuirkSet& quirks)
- {
- return adoptRef(*new PluginStream(client, frame, request, sendNotification, notifyData, functions, instance, quirks));
- }
- virtual ~PluginStream();
-
- void start();
- void stop();
+class PluginStream : public RefCounted<PluginStream>, private NetscapePlugInStreamLoaderClient {
+public:
+ static Ref<PluginStream> create(PluginStreamClient* client, Frame* frame, const ResourceRequest& request, bool sendNotification, void* notifyData, const NPPluginFuncs* functions, NPP instance, const PluginQuirkSet& quirks)
+ {
+ return adoptRef(*new PluginStream(client, frame, request, sendNotification, notifyData, functions, instance, quirks));
+ }
+ virtual ~PluginStream();
+
+ void start();
+ void stop();
- void startStream();
+ void startStream();
- void setLoadManually(bool loadManually) { m_loadManually = loadManually; }
+ void setLoadManually(bool loadManually) { m_loadManually = loadManually; }
- void sendJavaScriptStream(const URL& requestURL, const WTF::CString& resultString);
- void cancelAndDestroyStream(NPReason);
+ void sendJavaScriptStream(const URL& requestURL, const WTF::CString& resultString);
+ void cancelAndDestroyStream(NPReason);
- static NPP ownerForStream(NPStream*);
+ static NPP ownerForStream(NPStream*);
- private:
- PluginStream(PluginStreamClient*, Frame*, const ResourceRequest&, bool sendNotification, void* notifyData, const NPPluginFuncs*, NPP instance, const PluginQuirkSet&);
+private:
+ PluginStream(PluginStreamClient*, Frame*, const ResourceRequest&, bool sendNotification, void* notifyData, const NPPluginFuncs*, NPP instance, const PluginQuirkSet&);
- void deliverData();
- void destroyStream(NPReason);
- void destroyStream();
+ void deliverData();
+ void destroyStream(NPReason);
+ void destroyStream();
- // NetscapePlugInStreamLoaderClient
- void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, WTF::Function<void (ResourceRequest&&)>&&) override;
- void didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse&) override;
- void didReceiveData(NetscapePlugInStreamLoader*, const char*, int) override;
- void didFail(NetscapePlugInStreamLoader*, const ResourceError&) override;
- void didFinishLoading(NetscapePlugInStreamLoader*) override;
- bool wantsAllStreams() const override;
+ // NetscapePlugInStreamLoaderClient
+ void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&&) override;
+ void didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse&) override;
+ void didReceiveData(NetscapePlugInStreamLoader*, const char*, int) override;
+ void didFail(NetscapePlugInStreamLoader*, const ResourceError&) override;
+ void didFinishLoading(NetscapePlugInStreamLoader*) override;
+ bool wantsAllStreams() const override;
- ResourceRequest m_resourceRequest;
- ResourceResponse m_resourceResponse;
+ ResourceRequest m_resourceRequest;
+ ResourceResponse m_resourceResponse;
- PluginStreamClient* m_client;
- Frame* m_frame;
- RefPtr<NetscapePlugInStreamLoader> m_loader;
- void* m_notifyData;
- bool m_sendNotification;
- PluginStreamState m_streamState;
- bool m_loadManually;
+ PluginStreamClient* m_client;
+ Frame* m_frame;
+ RefPtr<NetscapePlugInStreamLoader> m_loader;
+ void* m_notifyData;
+ bool m_sendNotification;
+ PluginStreamState m_streamState;
+ bool m_loadManually;
- Timer m_delayDeliveryTimer;
- void delayDeliveryTimerFired();
+ Timer m_delayDeliveryTimer;
+ void delayDeliveryTimerFired();
- std::unique_ptr<Vector<char>> m_deliveryData;
+ std::unique_ptr<Vector<char>> m_deliveryData;
- FileSystem::PlatformFileHandle m_tempFileHandle;
+ FileSystem::PlatformFileHandle m_tempFileHandle;
- const NPPluginFuncs* m_pluginFuncs;
- NPP m_instance;
- uint16_t m_transferMode;
- int32_t m_offset;
- CString m_headers;
- String m_path;
- NPReason m_reason;
- NPStream m_stream;
- PluginQuirkSet m_quirks;
+ const NPPluginFuncs* m_pluginFuncs;
+ NPP m_instance;
+ uint16_t m_transferMode;
+ int32_t m_offset;
+ CString m_headers;
+ String m_path;
+ NPReason m_reason;
+ NPStream m_stream;
+ PluginQuirkSet m_quirks;
- friend class PluginView;
- };
+ friend class PluginView;
+};
} // namespace WebCore
-
-#endif