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(std::unique_ptr<SoupNetworkSession> session)
: m_session(WTF::move(session))
, m_isPrivate(false)
{
}
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>(nullptr);
return *defaultSession();
}
std::unique_ptr<NetworkStorageSession> NetworkStorageSession::createPrivateBrowsingSession(const String&)
{
auto session = std::make_unique<NetworkStorageSession>(SoupNetworkSession::createPrivateBrowsingSession());
session->m_isPrivate = true;
return session;
}
void NetworkStorageSession::switchToNewTestingSession()
{
defaultSession() = std::make_unique<NetworkStorageSession>(SoupNetworkSession::createTestingSession());
}
SoupNetworkSession& NetworkStorageSession::soupNetworkSession() const
{
return m_session ? *m_session : SoupNetworkSession::defaultSession();
}
void NetworkStorageSession::setSoupNetworkSession(std::unique_ptr<SoupNetworkSession> session)
{
m_session = WTF::move(session);
}
}
#endif