#ifndef FetchRequest_h
#define FetchRequest_h
#if ENABLE(FETCH_API)
#include "FetchBodyOwner.h"
#include "FetchHeaders.h"
#include "FetchOptions.h"
#include "ResourceRequest.h"
namespace WebCore {
class Dictionary;
class ScriptExecutionContext;
typedef int ExceptionCode;
class FetchRequest final : public FetchBodyOwner {
public:
static RefPtr<FetchRequest> create(ScriptExecutionContext&, FetchRequest&, const Dictionary&, ExceptionCode&);
static RefPtr<FetchRequest> create(ScriptExecutionContext&, const String&, const Dictionary&, ExceptionCode&);
const String& method() const { return m_internalRequest.request.httpMethod(); }
const String& url() const;
FetchHeaders& headers() { return m_headers.get(); }
using Type = FetchOptions::Type;
Type type() const;
using Destination = FetchOptions::Destination;
Destination destination() const;
String referrer() const;
using ReferrerPolicy = FetchOptions::ReferrerPolicy;
ReferrerPolicy referrerPolicy() const;
using Mode = FetchOptions::Mode;
Mode mode() const;
using Credentials = FetchOptions::Credentials;
Credentials credentials() const;
using Cache = FetchOptions::Cache;
Cache cache() const;
using Redirect = FetchOptions::Redirect;
Redirect redirect() const;
const String& integrity() const { return m_internalRequest.integrity; }
RefPtr<FetchRequest> clone(ScriptExecutionContext&, ExceptionCode&);
struct InternalRequest {
ResourceRequest request;
FetchOptions options;
String referrer;
String integrity;
};
const FetchOptions& fetchOptions() const { return m_internalRequest.options; }
ResourceRequest internalRequest() const;
private:
FetchRequest(ScriptExecutionContext&, FetchBody&&, Ref<FetchHeaders>&&, InternalRequest&&);
const char* activeDOMObjectName() const final;
bool canSuspendForDocumentSuspension() const final;
Ref<FetchHeaders> m_headers;
InternalRequest m_internalRequest;
mutable String m_requestURL;
};
inline FetchRequest::FetchRequest(ScriptExecutionContext& context, FetchBody&& body, Ref<FetchHeaders>&& headers, InternalRequest&& internalRequest)
: FetchBodyOwner(context, WTFMove(body))
, m_headers(WTFMove(headers))
, m_internalRequest(WTFMove(internalRequest))
{
}
inline auto FetchRequest::cache() const -> Cache
{
return m_internalRequest.options.cache;
}
inline auto FetchRequest::credentials() const -> Credentials
{
return m_internalRequest.options.credentials;
}
inline auto FetchRequest::destination() const -> Destination
{
return m_internalRequest.options.destination;
}
inline auto FetchRequest::mode() const -> Mode
{
return m_internalRequest.options.mode;
}
inline auto FetchRequest::redirect() const -> Redirect
{
return m_internalRequest.options.redirect;
}
inline auto FetchRequest::referrerPolicy() const -> ReferrerPolicy
{
return m_internalRequest.options.referrerPolicy;
}
inline auto FetchRequest::type() const -> Type
{
return m_internalRequest.options.type;
}
}
#endif // ENABLE(FETCH_API)
#endif // FetchRequest_h