#pragma once
#include <pal/SessionID.h>
#include <wtf/EnumTraits.h>
#include <wtf/Forward.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class NetworkStorageSession;
class URL;
struct Cookie;
enum class IncludeSecureCookies { No, Yes };
class CookiesStrategy {
public:
virtual std::pair<String, bool> cookiesForDOM(const NetworkStorageSession&, const URL& firstParty, const URL&, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies) = 0;
virtual void setCookiesFromDOM(const NetworkStorageSession&, const URL& firstParty, const URL&, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, const String& cookieString) = 0;
virtual bool cookiesEnabled(const NetworkStorageSession&) = 0;
virtual std::pair<String, bool> cookieRequestHeaderFieldValue(const NetworkStorageSession&, const URL& firstParty, const URL&, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies) = 0;
virtual std::pair<String, bool> cookieRequestHeaderFieldValue(PAL::SessionID, const URL& firstParty, const URL&, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies) = 0;
virtual bool getRawCookies(const NetworkStorageSession&, const URL& firstParty, const URL&, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, Vector<Cookie>&) = 0;
virtual void deleteCookie(const NetworkStorageSession&, const URL&, const String& cookieName) = 0;
protected:
virtual ~CookiesStrategy() = default;
};
}
namespace WTF {
template<> struct EnumTraits<WebCore::IncludeSecureCookies> {
using values = EnumValues<
WebCore::IncludeSecureCookies,
WebCore::IncludeSecureCookies::No,
WebCore::IncludeSecureCookies::Yes
>;
};
}