summaryrefslogtreecommitdiffstats
path: root/WebCore/storage/IDBDatabaseRequest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/storage/IDBDatabaseRequest.cpp')
-rw-r--r--WebCore/storage/IDBDatabaseRequest.cpp31
1 files changed, 29 insertions, 2 deletions
diff --git a/WebCore/storage/IDBDatabaseRequest.cpp b/WebCore/storage/IDBDatabaseRequest.cpp
index 311fb25..c620279 100644
--- a/WebCore/storage/IDBDatabaseRequest.cpp
+++ b/WebCore/storage/IDBDatabaseRequest.cpp
@@ -26,21 +26,48 @@
#include "config.h"
#include "IDBDatabaseRequest.h"
+#include "IDBAny.h"
+#include "IDBObjectStoreRequest.h"
+#include "IDBRequest.h"
#include "IndexedDatabase.h"
+#include "ScriptExecutionContext.h"
#if ENABLE(INDEXED_DATABASE)
namespace WebCore {
-IDBDatabaseRequest::IDBDatabaseRequest(PassRefPtr<IDBDatabase> idbDatabase)
- : m_idbDatabase(idbDatabase)
+IDBDatabaseRequest::IDBDatabaseRequest(PassRefPtr<IDBDatabase> database)
+ : m_database(database)
{
+ m_this = IDBAny::create();
+ m_this->set(this);
}
IDBDatabaseRequest::~IDBDatabaseRequest()
{
}
+PassRefPtr<IDBRequest> IDBDatabaseRequest::createObjectStore(ScriptExecutionContext* context, const String& name, const String& keyPath, bool autoIncrement)
+{
+ RefPtr<IDBRequest> request = IDBRequest::create(context, m_this);
+ m_database->createObjectStore(name, keyPath, autoIncrement, request);
+ return request;
+}
+
+PassRefPtr<IDBObjectStoreRequest> IDBDatabaseRequest::objectStore(const String& name, unsigned short mode)
+{
+ RefPtr<IDBObjectStore> objectStore = m_database->objectStore(name, mode);
+ ASSERT(objectStore); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
+ return IDBObjectStoreRequest::create(objectStore.release());
+}
+
+PassRefPtr<IDBRequest> IDBDatabaseRequest::removeObjectStore(ScriptExecutionContext* context, const String& name)
+{
+ RefPtr<IDBRequest> request = IDBRequest::create(context, m_this);
+ m_database->removeObjectStore(name, request);
+ return request;
+}
+
} // namespace WebCore
#endif // ENABLE(INDEXED_DATABASE)