#pragma once
#include "FrameIdentifier.h"
#include "PageIdentifier.h"
#include <wtf/Forward.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
enum class IncludeSecureCookies : bool { No, Yes };
enum class IncludeHttpOnlyCookies : bool { No, Yes };
enum class SecureCookiesAccessed : bool { No, Yes };
class Document;
struct Cookie;
struct CookieRequestHeaderFieldProxy;
class NetworkStorageSession;
class StorageSessionProvider;
struct SameSiteInfo;
class WEBCORE_EXPORT CookieJar : public RefCounted<CookieJar> {
public:
static Ref<CookieJar> create(Ref<StorageSessionProvider>&&);
static CookieRequestHeaderFieldProxy cookieRequestHeaderFieldProxy(const Document&, const URL&);
String cookieRequestHeaderFieldValue(Document&, const URL&) const;
virtual String cookies(Document&, const URL&) const;
virtual void setCookies(Document&, const URL&, const String& cookieString);
virtual bool cookiesEnabled(const Document&) const;
virtual std::pair<String, SecureCookiesAccessed> cookieRequestHeaderFieldValue(const URL& firstParty, const SameSiteInfo&, const URL&, Optional<FrameIdentifier>, Optional<PageIdentifier>, IncludeSecureCookies) const;
virtual bool getRawCookies(const Document&, const URL&, Vector<Cookie>&) const;
virtual void setRawCookie(const Document&, const Cookie&);
virtual void deleteCookie(const Document&, const URL&, const String& cookieName);
virtual void clearCache() { }
virtual void clearCacheForHost(const String&) { }
virtual ~CookieJar();
protected:
static SameSiteInfo sameSiteInfo(const Document&);
static IncludeSecureCookies shouldIncludeSecureCookies(const Document&, const URL&);
CookieJar(Ref<StorageSessionProvider>&&);
private:
Ref<StorageSessionProvider> m_storageSessionProvider;
};
}