diff options
Diffstat (limited to 'WebCore/storage/IDBDatabaseRequest.cpp')
-rw-r--r-- | WebCore/storage/IDBDatabaseRequest.cpp | 31 |
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) |