#ifndef PendingDownload_h
#define PendingDownload_h
#if USE(NETWORK_SESSION)
#include "MessageSender.h"
#include "NetworkLoadClient.h"
namespace WebCore {
class ResourceResponse;
}
namespace WebKit {
class DownloadID;
class NetworkLoad;
class NetworkLoadParameters;
class NetworkSession;
class PendingDownload : public NetworkLoadClient, public IPC::MessageSender {
WTF_MAKE_FAST_ALLOCATED;
public:
PendingDownload(NetworkLoadParameters&&, DownloadID, NetworkSession&);
void continueWillSendRequest(WebCore::ResourceRequest&&);
void continueCanAuthenticateAgainstProtectionSpace(bool canAuthenticate);
private:
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override { }
void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override;
bool isSynchronous() const override { return false; }
void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override;
ShouldContinueDidReceiveResponse didReceiveResponse(WebCore::ResourceResponse&&) override { return ShouldContinueDidReceiveResponse::No; };
void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override { };
void didFinishLoading(double finishTime) override { };
void didFailLoading(const WebCore::ResourceError&) override;
void didBecomeDownload() override;
IPC::Connection* messageSenderConnection() override;
uint64_t messageSenderDestinationID() override;
private:
std::unique_ptr<NetworkLoad> m_networkLoad;
};
}
#endif
#endif