Move URL from WebCore to WTF
[WebKit-https.git] / Source / WebCore / platform / network / curl / NetworkStorageSessionCurl.cpp
index b88036a..247a527 100644 (file)
@@ -29,8 +29,9 @@
 #if USE(CURL)
 
 #include "Cookie.h"
-#include "CookieJarCurlDatabase.h"
+#include "CookieJarCurl.h"
 #include "CookieJarDB.h"
+#include "CookieRequestHeaderFieldProxy.h"
 #include "CurlContext.h"
 #include "FileSystem.h"
 #include "NetworkingContext.h"
@@ -38,6 +39,8 @@
 
 #include <wtf/MainThread.h>
 #include <wtf/NeverDestroyed.h>
+#include <wtf/URL.h>
+#include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
@@ -48,19 +51,14 @@ static String defaultCookieJarPath()
     if (cookieJarPath)
         return cookieJarPath;
 
-    String cookieJarDirectory = FileSystem::localUserSpecificStorageDirectory();
-
-    if (!FileSystem::makeAllDirectories(cookieJarDirectory))
-        return defaultFileName;
-
-    return FileSystem::pathByAppendingComponent(cookieJarDirectory, defaultFileName);
+    return FileSystem::pathByAppendingComponent(FileSystem::localUserSpecificStorageDirectory(), defaultFileName);
 }
 
 NetworkStorageSession::NetworkStorageSession(PAL::SessionID sessionID, NetworkingContext* context)
     : m_sessionID(sessionID)
     , m_context(context)
-    , m_cookieDatabase(defaultCookieJarPath())
-    , m_cookieStorage(makeUniqueRef<CookieJarCurlDatabase>())
+    , m_cookieStorage(makeUniqueRef<CookieJarCurl>())
+    , m_cookieDatabase(makeUniqueRef<CookieJarDB>(defaultCookieJarPath()))
 {
 }
 
@@ -73,10 +71,21 @@ NetworkingContext* NetworkStorageSession::context() const
     return m_context.get();
 }
 
+void NetworkStorageSession::setCookieDatabase(UniqueRef<CookieJarDB>&& cookieDatabase)
+{
+    m_cookieDatabase = WTFMove(cookieDatabase);
+}
+
+CookieJarDB& NetworkStorageSession::cookieDatabase() const
+{
+    m_cookieDatabase->open();
+    return m_cookieDatabase;
+}
+
 static std::unique_ptr<NetworkStorageSession>& defaultSession()
 {
     ASSERT(isMainThread());
-    static NeverDestroyed<std::unique_ptr<NetworkStorageSession>> session;
+    static std::unique_ptr<NetworkStorageSession> session;
     return session;
 }
 
@@ -97,6 +106,21 @@ void NetworkStorageSession::switchToNewTestingSession()
     // FIXME: Implement for WebKit to use.
 }
 
+void NetworkStorageSession::setCookiesFromDOM(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, const String& value) const
+{
+    cookieStorage().setCookiesFromDOM(*this, firstParty, sameSiteInfo, url, frameID, pageID, value);
+}
+
+bool NetworkStorageSession::cookiesEnabled() const
+{
+    return cookieStorage().cookiesEnabled(*this);
+}
+
+std::pair<String, bool> NetworkStorageSession::cookiesForDOM(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies includeSecureCookies) const
+{
+    return cookieStorage().cookiesForDOM(*this, firstParty, sameSiteInfo, url, frameID, pageID, includeSecureCookies);
+}
+
 void NetworkStorageSession::setCookies(const Vector<Cookie>&, const URL&, const URL&)
 {
     // FIXME: Implement for WebKit to use.
@@ -112,23 +136,68 @@ void NetworkStorageSession::deleteCookie(const Cookie&)
     // FIXME: Implement for WebKit to use.
 }
 
+void NetworkStorageSession::deleteCookie(const URL& url, const String& cookie) const
+{
+    cookieStorage().deleteCookie(*this, url, cookie);
+}
+
+void NetworkStorageSession::deleteAllCookies()
+{
+    cookieStorage().deleteAllCookies(*this);
+}
+
+void NetworkStorageSession::deleteAllCookiesModifiedSince(WallTime since)
+{
+    cookieStorage().deleteAllCookiesModifiedSince(*this, since);
+}
+
+void NetworkStorageSession::deleteCookiesForHostnames(const Vector<String>& cookieHostNames)
+{
+    cookieStorage().deleteCookiesForHostnames(*this, cookieHostNames);
+}
+
 Vector<Cookie> NetworkStorageSession::getAllCookies()
 {
     // FIXME: Implement for WebKit to use.
     return { };
 }
 
+void NetworkStorageSession::getHostnamesWithCookies(HashSet<String>& hostnames)
+{
+    cookieStorage().getHostnamesWithCookies(*this, hostnames);
+}
+
 Vector<Cookie> NetworkStorageSession::getCookies(const URL&)
 {
     // FIXME: Implement for WebKit to use.
     return { };
 }
 
+bool NetworkStorageSession::getRawCookies(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, Vector<Cookie>& rawCookies) const
+{
+    return cookieStorage().getRawCookies(*this, firstParty, sameSiteInfo, url, frameID, pageID, rawCookies);
+}
+
 void NetworkStorageSession::flushCookieStore()
 {
     // FIXME: Implement for WebKit to use.
 }
 
+std::pair<String, bool> NetworkStorageSession::cookieRequestHeaderFieldValue(const URL& firstParty, const SameSiteInfo& sameSiteInfo, const URL& url, std::optional<uint64_t> frameID, std::optional<uint64_t> pageID, IncludeSecureCookies includeSecureCookies) const
+{
+    return cookieStorage().cookieRequestHeaderFieldValue(*this, firstParty, sameSiteInfo, url, frameID, pageID, includeSecureCookies);
+}
+
+std::pair<String, bool> NetworkStorageSession::cookieRequestHeaderFieldValue(const CookieRequestHeaderFieldProxy& headerFieldProxy) const
+{
+    return cookieStorage().cookieRequestHeaderFieldValue(*this, headerFieldProxy.firstParty, headerFieldProxy.sameSiteInfo, headerFieldProxy.url, headerFieldProxy.frameID, headerFieldProxy.pageID, headerFieldProxy.includeSecureCookies);
+}
+
+void NetworkStorageSession::setProxySettings(CurlProxySettings&& proxySettings)
+{
+    CurlContext::singleton().setProxySettings(WTFMove(proxySettings));
+}
+
 } // namespace WebCore
 
 #endif // USE(CURL)