CookieJarCurlDatabase.cpp [plain text]
#include "config.h"
#include "CookieJarCurlDatabase.h"
#if USE(CURL)
#include "Cookie.h"
#include "CookieJarDB.h"
#include "CookieRequestHeaderFieldProxy.h"
#include "NetworkStorageSession.h"
#include "NotImplemented.h"
#include "URL.h"
#include <wtf/Optional.h>
#include <wtf/text/StringBuilder.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
static String cookiesForSession(const NetworkStorageSession& session, const URL&, const URL& url, bool forHTTPHeader)
{
StringBuilder cookies;
CookieJarDB& cookieJarDB = session.cookieDatabase();
auto searchHTTPOnly = (forHTTPHeader ? std::nullopt : std::optional<bool> {false});
auto secure = url.protocolIs("https") ? std::nullopt : std::optional<bool> {false};
Vector<Cookie> results;
if (cookieJarDB.searchCookies(url.string(), searchHTTPOnly, secure, std::nullopt, results)) {
for (auto result : results) {
if (!cookies.isEmpty())
cookies.append("; ");
cookies.append(result.name);
cookies.append("=");
cookies.append(result.value);
}
}
return cookies.toString();
}
void CookieJarCurlDatabase::setCookiesFromDOM(const NetworkStorageSession& session, const URL& firstParty, const SameSiteInfo&, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, const String& value) const
{
UNUSED_PARAM(frameID);
UNUSED_PARAM(pageID);
UNUSED_PARAM(firstParty);
CookieJarDB& cookieJarDB = session.cookieDatabase();
cookieJarDB.setCookie(url.string(), value, true);
}
void CookieJarCurlDatabase::setCookiesFromHTTPResponse(const NetworkStorageSession& session, const URL& url, const String& value) const
{
CookieJarDB& cookieJarDB = session.cookieDatabase();
cookieJarDB.setCookie(url.string(), value, false);
}
std::pair<String, bool> CookieJarCurlDatabase::cookiesForDOM(const NetworkStorageSession& session, const URL& firstParty, const SameSiteInfo&, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies) const
{
UNUSED_PARAM(frameID);
UNUSED_PARAM(pageID);
return { cookiesForSession(session, firstParty, url, false), false };
}
std::pair<String, bool> CookieJarCurlDatabase::cookieRequestHeaderFieldValue(const NetworkStorageSession& session, const URL& firstParty, const SameSiteInfo&, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies) const
{
UNUSED_PARAM(frameID);
UNUSED_PARAM(pageID);
return { cookiesForSession(session, firstParty, url, true), false };
}
std::pair<String, bool> CookieJarCurlDatabase::cookieRequestHeaderFieldValue(const NetworkStorageSession& session, const CookieRequestHeaderFieldProxy& headerFieldProxy) const
{
return cookieRequestHeaderFieldValue(session, headerFieldProxy.firstParty, headerFieldProxy.sameSiteInfo, headerFieldProxy.url, headerFieldProxy.frameID, headerFieldProxy.pageID, headerFieldProxy.includeSecureCookies);
}
bool CookieJarCurlDatabase::cookiesEnabled(const NetworkStorageSession& session) const
{
return session.cookieDatabase().isEnabled();
}
bool CookieJarCurlDatabase::getRawCookies(const NetworkStorageSession& session, const URL& firstParty, const SameSiteInfo&, const URL&, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, Vector<Cookie>& rawCookies) const
{
UNUSED_PARAM(frameID);
UNUSED_PARAM(pageID);
CookieJarDB& cookieJarDB = session.cookieDatabase();
return cookieJarDB.searchCookies(firstParty.string(), std::nullopt, std::nullopt, std::nullopt, rawCookies);
}
void CookieJarCurlDatabase::deleteCookie(const NetworkStorageSession&, const URL&, const String&) const
{
}
void CookieJarCurlDatabase::getHostnamesWithCookies(const NetworkStorageSession&, HashSet<String>&) const
{
}
void CookieJarCurlDatabase::deleteCookiesForHostnames(const NetworkStorageSession&, const Vector<String>&) const
{
}
void CookieJarCurlDatabase::deleteAllCookies(const NetworkStorageSession&) const
{
}
void CookieJarCurlDatabase::deleteAllCookiesModifiedSince(const NetworkStorageSession&, WallTime) const
{
}
}
#endif // USE(CURL)