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); if (resultData.type() == IDBResultType::IterateCursorSuccess || resultData.type() == IDBResultType::OpenCursorSuccess) m_pendingCursor->setGetResult(*this, resultData.getResult()); m_result = IDBAny::create(*m_pendingCursor); m_pendingCursor = nullptr; requestCompleted(resultData); }
void IDBTransaction::didCreateIndexOnServer(const IDBResultData& resultData) { LOG(IndexedDB, "IDBTransaction::didCreateIndexOnServer"); if (resultData.type() == IDBResultType::CreateIndexSuccess) return; ASSERT(resultData.type() == IDBResultType::Error); // This operation might have failed because the transaction is already aborting. if (m_state == IndexedDB::TransactionState::Aborting) return; // Otherwise, failure to create an index forced abortion of the transaction. abortDueToFailedRequest(DOMError::create(IDBDatabaseException::getErrorName(resultData.error().code()))); }
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); }
void IDBOpenDBRequest::requestCompleted(const IDBResultData& data) { LOG(IndexedDB, "IDBOpenDBRequest::requestCompleted"); ASSERT(currentThread() == originThreadID()); // If an Open request was completed after the page has navigated, leaving this request // with a stopped script execution context, we need to message back to the server so it // doesn't hang waiting on a database connection or transaction that will never exist. if (m_contextStopped) { switch (data.type()) { case IDBResultType::OpenDatabaseSuccess: connectionProxy().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), IDBResourceIdentifier::emptyValue()); break; case IDBResultType::OpenDatabaseUpgradeNeeded: connectionProxy().abortOpenAndUpgradeNeeded(data.databaseConnectionIdentifier(), data.transactionInfo().identifier()); break; default: break; } return; } switch (data.type()) { case IDBResultType::Error: onError(data); break; case IDBResultType::OpenDatabaseSuccess: onSuccess(data); break; case IDBResultType::OpenDatabaseUpgradeNeeded: onUpgradeNeeded(data); break; case IDBResultType::DeleteDatabaseSuccess: onDeleteDatabaseSuccess(data); break; default: RELEASE_ASSERT_NOT_REACHED(); } }
void IDBOpenDBRequest::requestCompleted(const IDBResultData& data) { LOG(IndexedDB, "IDBOpenDBRequest::requestCompleted"); switch (data.type()) { case IDBResultType::Error: onError(data); break; case IDBResultType::OpenDatabaseSuccess: onSuccess(data); break; case IDBResultType::OpenDatabaseUpgradeNeeded: onUpgradeNeeded(data); break; } }
void IDBOpenDBRequest::requestCompleted(const IDBResultData& data) { LOG(IndexedDB, "IDBOpenDBRequest::requestCompleted"); switch (data.type()) { case IDBResultType::Error: onError(data); break; case IDBResultType::OpenDatabaseSuccess: onSuccess(data); break; case IDBResultType::OpenDatabaseUpgradeNeeded: onUpgradeNeeded(data); break; case IDBResultType::DeleteDatabaseSuccess: onDeleteDatabaseSuccess(data); break; default: RELEASE_ASSERT_NOT_REACHED(); } }
void IDBTransaction::didDeleteIndexOnServer(const IDBResultData& resultData) { LOG(IndexedDB, "IDBTransaction::didDeleteIndexOnServer"); ASSERT_UNUSED(resultData, resultData.type() == IDBResultType::DeleteIndexSuccess || resultData.type() == IDBResultType::Error); }
void IDBTransaction::didCreateObjectStoreOnServer(const IDBResultData& resultData) { LOG(IndexedDB, "IDBTransaction::didCreateObjectStoreOnServer"); ASSERT_UNUSED(resultData, resultData.type() == IDBResultType::CreateObjectStoreSuccess || resultData.type() == IDBResultType::Error); }