NetworkCacheSpeculativeLoad.h [plain text]
#ifndef NetworkCacheSpeculativeLoad_h
#define NetworkCacheSpeculativeLoad_h
#if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
#include "NetworkCache.h"
#include "NetworkCacheEntry.h"
#include "NetworkLoadClient.h"
#include <WebCore/ResourceRequest.h>
#include <WebCore/ResourceResponse.h>
#include <WebCore/SharedBuffer.h>
namespace WebKit {
class NetworkLoad;
namespace NetworkCache {
class SpeculativeLoad final : public NetworkLoadClient {
WTF_MAKE_FAST_ALLOCATED;
public:
typedef std::function<void (std::unique_ptr<NetworkCache::Entry>)> RevalidationCompletionHandler;
SpeculativeLoad(const GlobalFrameID&, const WebCore::ResourceRequest&, std::unique_ptr<NetworkCache::Entry>, RevalidationCompletionHandler&&);
virtual ~SpeculativeLoad();
const WebCore::ResourceRequest& originalRequest() const { return m_originalRequest; }
private:
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override { }
#if USE(PROTECTION_SPACE_AUTH_CALLBACK)
void canAuthenticateAgainstProtectionSpaceAsync(const WebCore::ProtectionSpace&) override;
#endif
bool isSynchronous() const override { return false; }
void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override;
ShouldContinueDidReceiveResponse didReceiveResponse(WebCore::ResourceResponse&&) override;
void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) override;
void didFinishLoading(double finishTime) override;
void didFailLoading(const WebCore::ResourceError&) override;
void abort();
void didComplete();
GlobalFrameID m_frameID;
RevalidationCompletionHandler m_completionHandler;
WebCore::ResourceRequest m_originalRequest;
std::unique_ptr<NetworkLoad> m_networkLoad;
WebCore::ResourceResponse m_response;
RefPtr<WebCore::SharedBuffer> m_bufferedDataForCache;
std::unique_ptr<NetworkCache::Entry> m_cacheEntryForValidation;
};
} }
#endif // ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
#endif // NetworkCacheSpeculativeLoad_h