IDBFactoryBackendImpl.h [plain text]
#ifndef IDBFactoryBackendImpl_h
#define IDBFactoryBackendImpl_h
#if ENABLE(INDEXED_DATABASE)
#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 IDBBackingStore;
class IDBDatabaseBackendImpl;
class IDBFactoryBackendImpl : public IDBFactoryBackendInterface {
public:
static PassRefPtr<IDBFactoryBackendImpl> create()
{
return adoptRef(new IDBFactoryBackendImpl());
}
virtual ~IDBFactoryBackendImpl();
virtual void removeIDBDatabaseBackend(const String& uniqueIdentifier);
virtual void getDatabaseNames(PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
virtual void open(const String& name, int64_t version, int64_t transactionId, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
virtual void deleteDatabase(const String& name, PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
protected:
IDBFactoryBackendImpl();
virtual PassRefPtr<IDBBackingStore> openBackingStore(PassRefPtr<SecurityOrigin>, const String& dataDir);
private:
typedef HashMap<String, RefPtr<IDBDatabaseBackendImpl> > IDBDatabaseBackendMap;
IDBDatabaseBackendMap m_databaseBackendMap;
typedef HashMap<String, WeakPtr<IDBBackingStore> > IDBBackingStoreMap;
IDBBackingStoreMap m_backingStoreMap;
HashSet<RefPtr<IDBBackingStore> > m_sessionOnlyBackingStores;
static IDBFactoryBackendImpl* idbFactoryBackendImpl;
};
}
#endif
#endif // IDBFactoryBackendImpl_h