| 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) {
|
|
|