#ifndef Database_h
#define Database_h
#if ENABLE(SQL_DATABASE)
#include "DatabaseBackend.h"
#include "DatabaseBase.h"
#include "DatabaseBasicTypes.h"
#include "DatabaseError.h"
#include <wtf/text/WTFString.h>
namespace WebCore {
class ChangeVersionData;
class DatabaseCallback;
class DatabaseContext;
class SecurityOrigin;
class SQLTransaction;
class SQLTransactionBackend;
class SQLTransactionCallback;
class SQLTransactionErrorCallback;
class VoidCallback;
class Database : public DatabaseBase, public DatabaseBackend {
public:
virtual ~Database();
virtual String version() const;
void changeVersion(const String& oldVersion, const String& newVersion, PassRefPtr<SQLTransactionCallback>,
PassRefPtr<SQLTransactionErrorCallback>, PassRefPtr<VoidCallback> successCallback);
void transaction(PassRefPtr<SQLTransactionCallback>, PassRefPtr<SQLTransactionErrorCallback>, PassRefPtr<VoidCallback> successCallback);
void readTransaction(PassRefPtr<SQLTransactionCallback>, PassRefPtr<SQLTransactionErrorCallback>, PassRefPtr<VoidCallback> successCallback);
static Database* from(DatabaseBackend*);
DatabaseContext* databaseContext() const { return m_databaseContext.get(); }
Vector<String> tableNames();
virtual SecurityOrigin* securityOrigin() const;
virtual void markAsDeletedAndClose();
bool deleted() const { return m_deleted; }
virtual void closeImmediately();
void scheduleTransactionCallback(SQLTransaction*);
private:
Database(PassRefPtr<DatabaseBackendContext>, const String& name,
const String& expectedVersion, const String& displayName, unsigned long estimatedSize);
PassRefPtr<DatabaseBackend> backend();
static PassRefPtr<Database> create(ScriptExecutionContext*, PassRefPtr<DatabaseBackendBase>);
void runTransaction(PassRefPtr<SQLTransactionCallback>, PassRefPtr<SQLTransactionErrorCallback>,
PassRefPtr<VoidCallback> successCallback, bool readOnly, const ChangeVersionData* = 0);
Vector<String> performGetTableNames();
RefPtr<SecurityOrigin> m_databaseThreadSecurityOrigin;
RefPtr<DatabaseContext> m_databaseContext;
bool m_deleted;
friend class DatabaseManager;
friend class DatabaseServer; friend class DatabaseBackend; friend class SQLStatement;
friend class SQLTransaction;
};
}
#endif // ENABLE(SQL_DATABASE)
#endif // Database_h