NetworkStorageSessionSoup.cpp [plain text]
#include "config.h"
#include "NetworkStorageSession.h"
#if USE(SOUP)
#include "ResourceHandle.h"
#include "SoupNetworkSession.h"
#include <wtf/MainThread.h>
#include <wtf/NeverDestroyed.h>
namespace WebCore {
NetworkStorageSession::NetworkStorageSession(SessionID sessionID, std::unique_ptr<SoupNetworkSession> session)
: m_sessionID(sessionID)
, m_session(WTFMove(session))
{
}
NetworkStorageSession::~NetworkStorageSession()
{
}
static std::unique_ptr<NetworkStorageSession>& defaultSession()
{
ASSERT(isMainThread());
static NeverDestroyed<std::unique_ptr<NetworkStorageSession>> session;
return session;
}
NetworkStorageSession& NetworkStorageSession::defaultStorageSession()
{
if (!defaultSession())
defaultSession() = std::make_unique<NetworkStorageSession>(SessionID::defaultSessionID(), nullptr);
return *defaultSession();
}
std::unique_ptr<NetworkStorageSession> NetworkStorageSession::createPrivateBrowsingSession(SessionID sessionID, const String&)
{
auto session = std::make_unique<NetworkStorageSession>(sessionID, SoupNetworkSession::createPrivateBrowsingSession());
return session;
}
void NetworkStorageSession::switchToNewTestingSession()
{
defaultSession() = std::make_unique<NetworkStorageSession>(SessionID::defaultSessionID(), SoupNetworkSession::createTestingSession());
}
SoupNetworkSession& NetworkStorageSession::soupNetworkSession() const
{
return m_session ? *m_session : SoupNetworkSession::defaultSession();
}
void NetworkStorageSession::setSoupNetworkSession(std::unique_ptr<SoupNetworkSession> session)
{
m_session = WTFMove(session);
}
}
#endif