#ifndef ResourceRequest_h
#define ResourceRequest_h
#include "ResourceRequestBase.h"
#include <wtf/RetainPtr.h>
#if USE(CFNETWORK)
typedef const struct _CFURLRequest* CFURLRequestRef;
#else
#ifdef __OBJC__
@class NSURLRequest;
#else
class NSURLRequest;
#endif
#endif
#if USE(CFURLSTORAGESESSIONS) && (defined(BUILDING_ON_SNOW_LEOPARD) || defined(BUILDING_ON_LEOPARD))
typedef struct __CFURLStorageSession* CFURLStorageSessionRef;
#elif USE(CFURLSTORAGESESSIONS)
typedef const struct __CFURLStorageSession* CFURLStorageSessionRef;
#endif
namespace WebCore {
class ResourceRequest : public ResourceRequestBase {
public:
ResourceRequest(const String& url)
: ResourceRequestBase(KURL(ParsedURLString, url), UseProtocolCachePolicy)
{
}
ResourceRequest(const KURL& url)
: ResourceRequestBase(url, UseProtocolCachePolicy)
{
}
ResourceRequest(const KURL& url, const String& referrer, ResourceRequestCachePolicy policy = UseProtocolCachePolicy)
: ResourceRequestBase(url, policy)
{
setHTTPReferrer(referrer);
}
ResourceRequest()
: ResourceRequestBase(KURL(), UseProtocolCachePolicy)
{
}
#if USE(CFNETWORK)
ResourceRequest(CFURLRequestRef cfRequest)
: ResourceRequestBase()
, m_cfRequest(cfRequest) { }
CFURLRequestRef cfURLRequest() const;
#else
ResourceRequest(NSURLRequest* nsRequest)
: ResourceRequestBase()
, m_nsRequest(nsRequest) { }
void applyWebArchiveHackForMail();
NSURLRequest* nsURLRequest() const;
#endif
#if USE(CFURLSTORAGESESSIONS)
void setStorageSession(CFURLStorageSessionRef);
#endif
static bool httpPipeliningEnabled();
static void setHTTPPipeliningEnabled(bool);
#if PLATFORM(MAC)
static bool useQuickLookResourceCachingQuirks();
#endif
private:
friend class ResourceRequestBase;
void doUpdatePlatformRequest();
void doUpdateResourceRequest();
PassOwnPtr<CrossThreadResourceRequestData> doPlatformCopyData(PassOwnPtr<CrossThreadResourceRequestData> data) const { return data; }
void doPlatformAdopt(PassOwnPtr<CrossThreadResourceRequestData>) { }
#if USE(CFNETWORK)
RetainPtr<CFURLRequestRef> m_cfRequest;
#else
RetainPtr<NSURLRequest> m_nsRequest;
#endif
static bool s_httpPipeliningEnabled;
};
struct CrossThreadResourceRequestData : public CrossThreadResourceRequestDataBase {
};
}
#endif // ResourceRequest_h