Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Unified Diff: Source/modules/indexeddb/IDBRequest.cpp

Issue 18590006: Blob support for IDB [Blink] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Merge fixes [builds, untested] Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698