ServiceWorkerSoftUpdateLoader.h [plain text]
#pragma once
#if ENABLE(SERVICE_WORKER)
#include "NetworkCacheEntry.h"
#include "NetworkLoadClient.h"
#include <WebCore/ContentSecurityPolicyResponseHeaders.h>
#include <WebCore/FetchOptions.h>
#include <WebCore/ServiceWorkerJobData.h>
#include <wtf/CompletionHandler.h>
#include <wtf/WeakPtr.h>
namespace WebCore {
struct ServiceWorkerFetchResult;
struct ServiceWorkerJobData;
class TextResourceDecoder;
}
namespace WebKit {
class NetworkLoad;
class NetworkSession;
class ServiceWorkerSoftUpdateLoader final : public NetworkLoadClient, public CanMakeWeakPtr<ServiceWorkerSoftUpdateLoader> {
WTF_MAKE_FAST_ALLOCATED;
public:
using Handler = CompletionHandler<void(const WebCore::ServiceWorkerFetchResult&)>;
static void start(NetworkSession*, WebCore::ServiceWorkerJobData&&, bool shouldRefreshCache, WebCore::ResourceRequest&&, Handler&&);
~ServiceWorkerSoftUpdateLoader();
private:
ServiceWorkerSoftUpdateLoader(NetworkSession&, WebCore::ServiceWorkerJobData&&, bool shouldRefreshCache, WebCore::ResourceRequest&&, Handler&&);
void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) final { }
bool isSynchronous() const final { return false; }
bool isAllowedToAskUserForCredentials() const final { return false; }
void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) final;
void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) final;
void didReceiveBuffer(Ref<WebCore::SharedBuffer>&&, int reportedEncodedDataLength) final;
void didFinishLoading(const WebCore::NetworkLoadMetrics&) final;
void didFailLoading(const WebCore::ResourceError&) final;
void loadWithCacheEntry(NetworkCache::Entry&);
void loadFromNetwork(NetworkSession&, WebCore::ResourceRequest&&);
void fail(WebCore::ResourceError&&);
void didComplete();
WebCore::ResourceError processResponse(const WebCore::ResourceResponse&);
Handler m_completionHandler;
WebCore::ServiceWorkerJobData m_jobData;
std::unique_ptr<NetworkLoad> m_networkLoad;
WeakPtr<NetworkSession> m_session;
String m_responseEncoding;
String m_referrerPolicy;
WebCore::ContentSecurityPolicyResponseHeaders m_contentSecurityPolicy;
std::unique_ptr<NetworkCache::Entry> m_cacheEntry;
RefPtr<WebCore::TextResourceDecoder> m_decoder;
StringBuilder m_script;
WebCore::CertificateInfo m_certificateInfo;
};
}
#endif // ENABLE(SERVICE_WORKER)