summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/storage/IDBCursor.cpp
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-24 11:24:40 +0100
committerBen Murdoch <benm@google.com>2011-06-02 09:53:15 +0100
commit81bc750723a18f21cd17d1b173cd2a4dda9cea6e (patch)
tree7a9e5ed86ff429fd347a25153107221543909b19 /Source/WebCore/storage/IDBCursor.cpp
parent94088a6d336c1dd80a1e734af51e96abcbb689a7 (diff)
downloadexternal_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.zip
external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.gz
external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.bz2
Merge WebKit at r80534: Intial merge by Git
Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61
Diffstat (limited to 'Source/WebCore/storage/IDBCursor.cpp')
-rw-r--r--Source/WebCore/storage/IDBCursor.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/Source/WebCore/storage/IDBCursor.cpp b/Source/WebCore/storage/IDBCursor.cpp
index 531cae1..9b1ebf6 100644
--- a/Source/WebCore/storage/IDBCursor.cpp
+++ b/Source/WebCore/storage/IDBCursor.cpp
@@ -39,13 +39,20 @@
namespace WebCore {
-IDBCursor::IDBCursor(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBTransaction* transaction)
+PassRefPtr<IDBCursor> IDBCursor::create(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
+{
+ return adoptRef(new IDBCursor(backend, request, source, transaction));
+}
+
+IDBCursor::IDBCursor(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
: m_backend(backend)
, m_request(request)
+ , m_source(source)
, m_transaction(transaction)
{
ASSERT(m_backend);
ASSERT(m_request);
+ ASSERT(m_source->type() == IDBAny::IDBObjectStoreType || m_source->type() == IDBAny::IDBIndexType);
ASSERT(m_transaction);
}
@@ -63,17 +70,29 @@ PassRefPtr<IDBKey> IDBCursor::key() const
return m_backend->key();
}
-PassRefPtr<IDBAny> IDBCursor::value() const
+PassRefPtr<IDBKey> IDBCursor::primaryKey() const
+{
+ return m_backend->primaryKey();
+}
+
+PassRefPtr<SerializedScriptValue> IDBCursor::value() const
{
return m_backend->value();
}
+IDBAny* IDBCursor::source() const
+{
+ return m_source.get();
+}
+
PassRefPtr<IDBRequest> IDBCursor::update(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, ExceptionCode& ec)
{
RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this), m_transaction.get());
m_backend->update(value, request, ec);
- if (ec)
+ if (ec) {
+ request->markEarlyDeath();
return 0;
+ }
return request.release();
}
@@ -91,8 +110,10 @@ PassRefPtr<IDBRequest> IDBCursor::deleteFunction(ScriptExecutionContext* context
{
RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this), m_transaction.get());
m_backend->deleteFunction(request, ec);
- if (ec)
+ if (ec) {
+ request->markEarlyDeath();
return 0;
+ }
return request.release();
}