IDBFactoryBackendLevelDB.h [plain text]
#ifndef IDBFactoryBackendLevelDB_h
#define IDBFactoryBackendLevelDB_h
#if ENABLE(INDEXED_DATABASE) && USE(LEVELDB)
#include "IDBCallbacks.h"
#include "IDBDatabaseCallbacks.h"
#include "IDBFactoryBackendInterface.h"
#include "SecurityOrigin.h"
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/RefCounted.h>
#include <wtf/WeakPtr.h>
#include <wtf/text/StringHash.h>
namespace WebCore {
class DOMStringList;
class IDBBackingStoreLevelDB;
class IDBDatabaseBackend;
class IDBFactoryBackendLevelDB : public IDBFactoryBackendInterface {
public:
static PassRefPtr<IDBFactoryBackendLevelDB> create(const String& databaseDirectory)
{
return adoptRef(new IDBFactoryBackendLevelDB(databaseDirectory));
}
virtual ~IDBFactoryBackendLevelDB();
virtual void removeIDBDatabaseBackend(const String& uniqueIdentifier) override final;
virtual void getDatabaseNames(PassRefPtr<IDBCallbacks>, const SecurityOrigin& openingOrigin, const SecurityOrigin& mainFrameOrigin, ScriptExecutionContext*, const String& dataDir) override final;
virtual void open(const String& name, uint64_t version, int64_t transactionId, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, const SecurityOrigin& openingOrigin, const SecurityOrigin& mainFrameOrigin) override final;
virtual void deleteDatabase(const String& name, const SecurityOrigin& openingOrigin, const SecurityOrigin& mainFrameOrigin, PassRefPtr<IDBCallbacks>, ScriptExecutionContext*, const String& dataDir) override final;
protected:
virtual PassRefPtr<IDBBackingStoreLevelDB> openBackingStore(const SecurityOrigin&, const String& dataDir);
private:
explicit IDBFactoryBackendLevelDB(const String& databaseDirectory);
typedef HashMap<String, RefPtr<IDBDatabaseBackend> > IDBDatabaseBackendMap;
IDBDatabaseBackendMap m_databaseBackendMap;
typedef HashMap<String, WeakPtr<IDBBackingStoreLevelDB> > IDBBackingStoreLevelDBMap;
IDBBackingStoreLevelDBMap m_backingStoreMap;
HashSet<RefPtr<IDBBackingStoreLevelDB> > m_sessionOnlyBackingStores;
String m_databaseDirectory;
};
}
#endif // ENABLE(INDEXED_DATABASE) && USE(LEVELDB)
#endif // IDBFactoryBackendLevelDB_h