WebDatabaseProvider.cpp [plain text]
#include "WebDatabaseProvider.h"
#include <pal/SessionID.h>
WebDatabaseProvider& WebDatabaseProvider::singleton()
{
static WebDatabaseProvider& databaseProvider = adoptRef(*new WebDatabaseProvider).leakRef();
return databaseProvider;
}
WebDatabaseProvider::WebDatabaseProvider()
{
}
WebDatabaseProvider::~WebDatabaseProvider()
{
}
#if ENABLE(INDEXED_DATABASE)
WebCore::IDBClient::IDBConnectionToServer& WebDatabaseProvider::idbConnectionToServerForSession(const PAL::SessionID& sessionID)
{
auto result = m_idbServerMap.add(sessionID.sessionID(), nullptr);
if (result.isNewEntry) {
if (sessionID.isEphemeral())
result.iterator->value = WebCore::InProcessIDBServer::create(sessionID);
else
result.iterator->value = WebCore::InProcessIDBServer::create(sessionID, indexedDatabaseDirectoryPath());
}
result.iterator->value->idbServer().setPerOriginQuota(m_idbPerOriginQuota);
return result.iterator->value->connectionToServer();
}
void WebDatabaseProvider::deleteAllDatabases()
{
for (auto& server : m_idbServerMap.values())
server->idbServer().closeAndDeleteDatabasesModifiedSince(-WallTime::infinity(), [] { });
}
void WebDatabaseProvider::setIDBPerOriginQuota(uint64_t quota)
{
m_idbPerOriginQuota = quota;
for (auto& server : m_idbServerMap.values())
server->idbServer().setPerOriginQuota(quota);
}
#endif