Index: Source/modules/indexeddb/IDBRequest.cpp |
diff --git a/Source/modules/indexeddb/IDBRequest.cpp b/Source/modules/indexeddb/IDBRequest.cpp |
index 28c43f2d6c6ff8a4c0fc9a5bd698143466c65c80..47ec84bd85ef2b360d66e1648736cd9b01242e90 100644 |
--- a/Source/modules/indexeddb/IDBRequest.cpp |
+++ b/Source/modules/indexeddb/IDBRequest.cpp |
@@ -202,12 +202,13 @@ IDBCursor* IDBRequest::getResultCursor() |
return 0; |
} |
-void IDBRequest::setResultCursor(PassRefPtr<IDBCursor> cursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value) |
+void IDBRequest::setResultCursor(PassRefPtr<IDBCursor> cursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value, const Vector<BlobInfo>& blobInfo) |
{ |
ASSERT(m_readyState == PENDING); |
m_cursorKey = key; |
m_cursorPrimaryKey = primaryKey; |
m_cursorValue = value; |
+ m_cursorBlobInfo = blobInfo; // TODO(ericu): Swap? |
if (m_cursorType == IndexedDB::CursorKeyOnly) { |
m_result = IDBAny::create(cursor); |
@@ -272,7 +273,7 @@ void IDBRequest::onSuccess(const Vector<String>& stringList) |
enqueueEvent(createSuccessEvent()); |
} |
-void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value) |
+void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value, const Vector<BlobInfo>& blobInfo) |
{ |
IDB_TRACE("IDBRequest::onSuccess(IDBCursor)"); |
if (!shouldEnqueueEvent()) |
@@ -290,7 +291,7 @@ void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRe |
default: |
ASSERT_NOT_REACHED(); |
} |
- setResultCursor(cursor, key, primaryKey, value); |
+ setResultCursor(cursor, key, primaryKey, value, blobInfo); |
enqueueEvent(createSuccessEvent()); |
} |
@@ -309,7 +310,7 @@ void IDBRequest::onSuccess(PassRefPtr<IDBKey> idbKey) |
enqueueEvent(createSuccessEvent()); |
} |
-void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer) |
+void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer, const Vector<BlobInfo>& blobInfo) |
{ |
IDB_TRACE("IDBRequest::onSuccess(SharedBuffer)"); |
if (!shouldEnqueueEvent()) |
@@ -321,7 +322,7 @@ void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer) |
} |
DOMRequestState::Scope scope(m_requestState); |
- ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer); |
+ ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer, &blobInfo); |
onSuccessInternal(value); |
} |
@@ -338,7 +339,7 @@ static PassRefPtr<IDBObjectStore> effectiveObjectStore(PassRefPtr<IDBAny> source |
} |
#endif |
-void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer, PassRefPtr<IDBKey> prpPrimaryKey, const IDBKeyPath& keyPath) |
+void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer, const Vector<BlobInfo>& blobInfo, PassRefPtr<IDBKey> prpPrimaryKey, const IDBKeyPath& keyPath) |
{ |
IDB_TRACE("IDBRequest::onSuccess(SharedBuffer, IDBKey, IDBKeyPath)"); |
if (!shouldEnqueueEvent()) |
@@ -348,7 +349,7 @@ void IDBRequest::onSuccess(PassRefPtr<SharedBuffer> valueBuffer, PassRefPtr<IDBK |
ASSERT(keyPath == effectiveObjectStore(m_source)->keyPath()); |
#endif |
DOMRequestState::Scope scope(m_requestState); |
- ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer); |
+ ScriptValue value = deserializeIDBValueBuffer(requestState(), valueBuffer, &blobInfo); |
RefPtr<IDBKey> primaryKey = prpPrimaryKey; |
#ifndef NDEBUG |
@@ -390,14 +391,14 @@ void IDBRequest::onSuccessInternal(const ScriptValue& value) |
enqueueEvent(createSuccessEvent()); |
} |
-void IDBRequest::onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value) |
+void IDBRequest::onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value, const Vector<BlobInfo>& blobInfo) |
{ |
IDB_TRACE("IDBRequest::onSuccess(key, primaryKey, value)"); |
if (!shouldEnqueueEvent()) |
return; |
ASSERT(m_pendingCursor); |
- setResultCursor(m_pendingCursor.release(), key, primaryKey, value); |
+ setResultCursor(m_pendingCursor.release(), key, primaryKey, value, blobInfo); |
enqueueEvent(createSuccessEvent()); |
} |
@@ -467,7 +468,7 @@ bool IDBRequest::dispatchEvent(PassRefPtr<Event> event) |
if (event->type() == eventNames().successEvent) { |
cursorToNotify = getResultCursor(); |
if (cursorToNotify) |
- cursorToNotify->setValueReady(m_cursorKey.release(), m_cursorPrimaryKey.release(), m_cursorValue.release()); |
+ cursorToNotify->setValueReady(m_cursorKey.release(), m_cursorPrimaryKey.release(), m_cursorValue.release(), m_cursorBlobInfo); |
} |
if (event->type() == eventNames().upgradeneededEvent) { |