void IDBTransaction::didGetRecordOnServer(IDBRequest& request, const IDBResultData& resultData) { LOG(IndexedDB, "IDBTransaction::didGetRecordOnServer"); if (resultData.type() == IDBResultType::Error) { request.requestCompleted(resultData); return; } ASSERT(resultData.type() == IDBResultType::GetRecordSuccess); const IDBGetResult& result = resultData.getResult(); if (request.sourceIndexIdentifier() && request.requestedIndexRecordType() == IndexedDB::IndexRecordType::Key) { if (!result.keyData().isNull()) request.setResult(&result.keyData()); else request.setResultToUndefined(); } else { if (resultData.getResult().valueBuffer().data()) request.setResultToStructuredClone(resultData.getResult().valueBuffer()); else request.setResultToUndefined(); } request.requestCompleted(resultData); }
void IDBRequest::didOpenOrIterateCursor(const IDBResultData& resultData) { ASSERT(m_pendingCursor); m_result = nullptr; if (resultData.type() == IDBResultType::IterateCursorSuccess || resultData.type() == IDBResultType::OpenCursorSuccess) { m_pendingCursor->setGetResult(*this, resultData.getResult()); if (resultData.getResult().isDefined()) m_result = IDBAny::create(*m_pendingCursor); } m_cursorRequestNotifier = nullptr; m_pendingCursor = nullptr; requestCompleted(resultData); }
void IDBRequest::didOpenOrIterateCursor(const IDBResultData& resultData) { ASSERT(&originThread() == &Thread::current()); ASSERT(m_pendingCursor); m_result = NullResultType::Empty; m_resultWrapper = { }; if (resultData.type() == IDBResultType::IterateCursorSuccess || resultData.type() == IDBResultType::OpenCursorSuccess) { m_pendingCursor->setGetResult(*this, resultData.getResult()); if (resultData.getResult().isDefined()) m_result = m_pendingCursor; } m_pendingCursor = nullptr; completeRequestAndDispatchEvent(resultData); }