IDBFactoryBackendImpl.h [plain text]
#ifndef IDBFactoryBackendImpl_h
#define IDBFactoryBackendImpl_h
#include "IDBFactoryBackendInterface.h"
#include <wtf/HashMap.h>
#include <wtf/text/StringHash.h>
#if ENABLE(INDEXED_DATABASE)
namespace WebCore {
class DOMStringList;
class IDBBackingStore;
class IDBDatabaseBackendImpl;
class IDBTransactionCoordinator;
class IDBFactoryBackendImpl : public IDBFactoryBackendInterface {
public:
static PassRefPtr<IDBFactoryBackendImpl> create()
{
return adoptRef(new IDBFactoryBackendImpl());
}
virtual ~IDBFactoryBackendImpl();
void removeIDBDatabaseBackend(const String& uniqueIdentifier);
void addIDBBackingStore(const String& fileIdentifier, IDBBackingStore*);
void removeIDBBackingStore(const String& fileIdentifier);
virtual void getDatabaseNames(PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, Frame*, const String& dataDir);
virtual void open(const String& name, IDBCallbacks*, PassRefPtr<SecurityOrigin>, Frame*, const String& dataDir);
virtual void openFromWorker(const String& name, IDBCallbacks*, PassRefPtr<SecurityOrigin>, WorkerContext*, const String& dataDir);
virtual void deleteDatabase(const String& name, PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, Frame*, const String& dataDir);
private:
IDBFactoryBackendImpl();
PassRefPtr<IDBBackingStore> openBackingStore(PassRefPtr<SecurityOrigin>, const String& dataDir);
void openInternal(const String& name, IDBCallbacks*, PassRefPtr<SecurityOrigin>, const String& dataDir);
typedef HashMap<String, IDBDatabaseBackendImpl*> IDBDatabaseBackendMap;
IDBDatabaseBackendMap m_databaseBackendMap;
typedef HashMap<String, IDBBackingStore*> IDBBackingStoreMap;
IDBBackingStoreMap m_backingStoreMap;
RefPtr<IDBTransactionCoordinator> m_transactionCoordinator;
static IDBFactoryBackendImpl* idbFactoryBackendImpl;
};
}
#endif
#endif // IDBFactoryBackendImpl_h