WorkerContextIndexedDatabase.cpp [plain text]
#include "config.h"
#if ENABLE(WORKERS) && ENABLE(INDEXED_DATABASE)
#include "WorkerContextIndexedDatabase.h"
#include "IDBFactory.h"
#include "IDBFactoryBackendInterface.h"
#include "ScriptExecutionContext.h"
#include "SecurityOrigin.h"
namespace WebCore {
WorkerContextIndexedDatabase::WorkerContextIndexedDatabase(ScriptExecutionContext* context)
: m_context(context)
{
}
WorkerContextIndexedDatabase::~WorkerContextIndexedDatabase()
{
}
WorkerContextIndexedDatabase* WorkerContextIndexedDatabase::from(ScriptExecutionContext* context)
{
AtomicString name = "WorkderContextIndexedDatabase";
WorkerContextIndexedDatabase* supplement = static_cast<WorkerContextIndexedDatabase*>(Supplement<ScriptExecutionContext>::from(context, name));
if (!supplement) {
supplement = new WorkerContextIndexedDatabase(context);
provideTo(context, name, adoptPtr(supplement));
}
return supplement;
}
IDBFactory* WorkerContextIndexedDatabase::webkitIndexedDB(ScriptExecutionContext* context)
{
return from(context)->webkitIndexedDB();
}
IDBFactory* WorkerContextIndexedDatabase::webkitIndexedDB()
{
if (!m_context->securityOrigin()->canAccessDatabase())
return 0;
if (!m_factoryBackend)
m_factoryBackend = IDBFactoryBackendInterface::create();
if (!m_idbFactory)
m_idbFactory = IDBFactory::create(m_factoryBackend.get());
return m_idbFactory.get();
}
}
#endif // ENABLE(WORKERS) && ENABLE(INDEXED_DATABASE)