SchedulableLoader.h [plain text]
#ifndef SchedulableLoader_h
#define SchedulableLoader_h
#include "HostRecord.h"
#include <WebCore/ResourceLoaderOptions.h>
#include <WebCore/ResourceRequest.h>
#include <wtf/MainThread.h>
#include <wtf/RefCounted.h>
#if ENABLE(NETWORK_PROCESS)
namespace WebKit {
class NetworkConnectionToWebProcess;
class NetworkResourceLoadParameters;
class SandboxExtension;
class SchedulableLoader : public RefCounted<SchedulableLoader> {
public:
virtual ~SchedulableLoader();
ResourceLoadIdentifier identifier() const { return m_identifier; }
uint64_t webPageID() const { return m_webPageID; }
uint64_t webFrameID() const { return m_webFrameID; }
const WebCore::ResourceRequest& request() const { return m_request; }
WebCore::ResourceLoadPriority priority() const { return m_priority; }
WebCore::ContentSniffingPolicy contentSniffingPolicy() const { return m_contentSniffingPolicy; }
WebCore::StoredCredentials allowStoredCredentials() const { return m_allowStoredCredentials; }
WebCore::ClientCredentialPolicy clientCredentialPolicy() const { return m_clientCredentialPolicy; }
bool inPrivateBrowsingMode() const { return m_inPrivateBrowsingMode; }
bool isLoadingMainResource() const { return m_isLoadingMainResource; }
NetworkConnectionToWebProcess* connectionToWebProcess() const { return m_connection.get(); }
virtual void start() = 0;
virtual void abort() = 0;
virtual bool isSynchronous() { return false; }
void setHostRecord(HostRecord* hostRecord) { ASSERT(isMainThread()); m_hostRecord = hostRecord; }
HostRecord* hostRecord() const { ASSERT(isMainThread()); return m_hostRecord.get(); }
protected:
SchedulableLoader(const NetworkResourceLoadParameters&, NetworkConnectionToWebProcess*);
void consumeSandboxExtensions();
void invalidateSandboxExtensions();
bool shouldClearReferrerOnHTTPSToHTTPRedirect() const { return m_shouldClearReferrerOnHTTPSToHTTPRedirect; }
private:
ResourceLoadIdentifier m_identifier;
uint64_t m_webPageID;
uint64_t m_webFrameID;
WebCore::ResourceRequest m_request;
WebCore::ResourceLoadPriority m_priority;
WebCore::ContentSniffingPolicy m_contentSniffingPolicy;
WebCore::StoredCredentials m_allowStoredCredentials;
WebCore::ClientCredentialPolicy m_clientCredentialPolicy;
bool m_inPrivateBrowsingMode;
bool m_shouldClearReferrerOnHTTPSToHTTPRedirect;
bool m_isLoadingMainResource;
Vector<RefPtr<SandboxExtension>> m_requestBodySandboxExtensions;
Vector<RefPtr<SandboxExtension>> m_resourceSandboxExtensions;
bool m_sandboxExtensionsAreConsumed;
RefPtr<NetworkConnectionToWebProcess> m_connection;
RefPtr<HostRecord> m_hostRecord;
};
}
#endif // ENABLE(NETWORK_PROCESS)
#endif // SchedulableLoader_h