SubresourceLoader.h [plain text]
#ifndef SubresourceLoader_h
#define SubresourceLoader_h
#include "FrameLoaderTypes.h"
#include "ResourceLoader.h"
#include <wtf/text/WTFString.h>
namespace WebCore {
class CachedResource;
class CachedResourceLoader;
class Document;
class ResourceRequest;
class SubresourceLoader : public ResourceLoader {
public:
static PassRefPtr<SubresourceLoader> create(Frame*, CachedResource*, const ResourceRequest&, const ResourceLoaderOptions&);
void cancelIfNotFinishing();
private:
SubresourceLoader(Frame*, CachedResource*, const ResourceLoaderOptions&);
virtual ~SubresourceLoader();
virtual bool init(const ResourceRequest&);
virtual void willSendRequest(ResourceRequest&, const ResourceResponse& redirectResponse);
virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent);
virtual void didReceiveResponse(const ResourceResponse&);
virtual void didReceiveData(const char*, int, long long encodedDataLength, bool allAtOnce);
virtual void didReceiveCachedMetadata(const char*, int);
virtual void didFinishLoading(double finishTime);
virtual void didFail(const ResourceError&);
virtual void willCancel(const ResourceError&);
virtual void didCancel(const ResourceError&) { }
#if HAVE(NETWORK_CFDATA_ARRAY_CALLBACK)
virtual bool supportsDataArray() { return true; }
virtual void didReceiveDataArray(CFArrayRef);
#endif
#if PLATFORM(CHROMIUM)
virtual void didDownloadData(int);
#endif
virtual void releaseResources();
bool errorLoadingResource();
void sendDataToResource(const char*, int);
enum SubresourceLoaderState {
Uninitialized,
Initialized,
Finishing
};
class RequestCountTracker {
public:
RequestCountTracker(CachedResourceLoader*, CachedResource*);
~RequestCountTracker();
private:
CachedResourceLoader* m_cachedResourceLoader;
CachedResource* m_resource;
};
CachedResource* m_resource;
RefPtr<Document> m_document;
bool m_loadingMultipartContent;
SubresourceLoaderState m_state;
OwnPtr<RequestCountTracker> m_requestCountTracker;
};
}
#endif // SubresourceLoader_h