Unreviewed, rolling out r201967, r201968, and r201972.
[WebKit-https.git] / Source / WebCore / platform / network / soup / NetworkStorageSessionSoup.cpp
index dd56e2b..dcda93b 100644 (file)
 #include "config.h"
 #include "NetworkStorageSession.h"
 
+#if USE(SOUP)
+
 #include "ResourceHandle.h"
+#include "SoupNetworkSession.h"
 #include <wtf/MainThread.h>
-#include <wtf/PassOwnPtr.h>
+#include <wtf/NeverDestroyed.h>
 
 namespace WebCore {
 
-NetworkStorageSession::NetworkStorageSession(SoupSession* session)
-    : m_session(session)
+NetworkStorageSession::NetworkStorageSession(SessionID sessionID, std::unique_ptr<SoupNetworkSession> session)
+    : m_sessionID(sessionID)
+    , m_session(WTFMove(session))
+{
+}
+
+NetworkStorageSession::~NetworkStorageSession()
 {
 }
 
-static OwnPtr<NetworkStorageSession>& defaultSession()
+static std::unique_ptr<NetworkStorageSession>& defaultSession()
 {
     ASSERT(isMainThread());
-    DEFINE_STATIC_LOCAL(OwnPtr<NetworkStorageSession>, session, ());
+    static NeverDestroyed<std::unique_ptr<NetworkStorageSession>> session;
     return session;
 }
 
 NetworkStorageSession& NetworkStorageSession::defaultStorageSession()
 {
     if (!defaultSession())
-        defaultSession() = adoptPtr(new NetworkStorageSession(ResourceHandle::defaultSession()));
+        defaultSession() = std::make_unique<NetworkStorageSession>(SessionID::defaultSessionID(), nullptr);
     return *defaultSession();
 }
 
-PassOwnPtr<NetworkStorageSession> NetworkStorageSession::createDefaultSession(const String&)
+std::unique_ptr<NetworkStorageSession> NetworkStorageSession::createPrivateBrowsingSession(SessionID sessionID, const String&)
 {
-    ASSERT(isMainThread());
-    return adoptPtr(new NetworkStorageSession(ResourceHandle::defaultSession()));
+    auto session = std::make_unique<NetworkStorageSession>(sessionID, SoupNetworkSession::createPrivateBrowsingSession());
+    return session;
 }
 
-PassOwnPtr<NetworkStorageSession> NetworkStorageSession::createPrivateBrowsingSession(const String&)
+void NetworkStorageSession::switchToNewTestingSession()
 {
-    ASSERT_NOT_REACHED();
-    return nullptr;
+    defaultSession() = std::make_unique<NetworkStorageSession>(SessionID::defaultSessionID(), SoupNetworkSession::createTestingSession());
 }
 
-void NetworkStorageSession::switchToNewTestingSession()
+SoupNetworkSession& NetworkStorageSession::soupNetworkSession() const
+{
+    return m_session ? *m_session : SoupNetworkSession::defaultSession();
+}
+
+void NetworkStorageSession::setSoupNetworkSession(std::unique_ptr<SoupNetworkSession> session)
 {
-    // A null session will make us fall back to the default cookie jar, which is currently
-    // the expected behavior for tests.
-    defaultSession() = adoptPtr(new NetworkStorageSession(0));
+    m_session = WTFMove(session);
 }
 
 }
+
+#endif