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

Unified Diff: Source/WebCore/Modules/indexeddb/IDBRequest.cpp

Issue 11348011: Revert 128789 - IndexedDB: Use ScriptValue instead of SerializedScriptValue for get/openCursor (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1271/
Patch Set: Created 8 years, 2 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/WebCore/Modules/indexeddb/IDBRequest.cpp
===================================================================
--- Source/WebCore/Modules/indexeddb/IDBRequest.cpp (revision 132816)
+++ Source/WebCore/Modules/indexeddb/IDBRequest.cpp (working copy)
@@ -214,7 +214,7 @@
return 0;
}
-void IDBRequest::setResultCursor(PassRefPtr<IDBCursor> cursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, const ScriptValue& value)
+void IDBRequest::setResultCursor(PassRefPtr<IDBCursor> cursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
{
ASSERT(m_readyState == PENDING);
m_cursorKey = key;
@@ -276,13 +276,12 @@
enqueueEvent(createSuccessEvent());
}
-void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> serializedValue)
+void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
{
IDB_TRACE("IDBRequest::onSuccess(IDBCursor)");
if (!shouldEnqueueEvent())
return;
- ScriptValue value = deserializeIDBValue(scriptExecutionContext(), serializedValue);
ASSERT(m_cursorType != IDBCursorBackendInterface::InvalidCursorType);
RefPtr<IDBCursor> cursor;
if (m_cursorType == IDBCursorBackendInterface::IndexKeyCursor)
@@ -303,7 +302,7 @@
if (idbKey && idbKey->isValid())
m_result = IDBAny::create(idbKey);
else
- m_result = IDBAny::createInvalid();
+ m_result = IDBAny::create(SerializedScriptValue::undefinedValue());
enqueueEvent(createSuccessEvent());
}
@@ -338,8 +337,9 @@
if (!shouldEnqueueEvent())
return;
- ScriptValue value = deserializeIDBValue(scriptExecutionContext(), serializedScriptValue);
- onSuccessInternal(value);
+ m_result = IDBAny::create(serializedScriptValue);
+ m_pendingCursor.clear();
+ enqueueEvent(createSuccessEvent());
}
#ifndef NDEBUG
@@ -364,32 +364,30 @@
#ifndef NDEBUG
ASSERT(keyPath == effectiveObjectStore(m_source)->keyPath());
#endif
- ScriptValue value = deserializeIDBValue(scriptExecutionContext(), prpSerializedScriptValue);
+ RefPtr<SerializedScriptValue> value = prpSerializedScriptValue;
RefPtr<IDBKey> primaryKey = prpPrimaryKey;
#ifndef NDEBUG
- RefPtr<IDBKey> expectedKey = createIDBKeyFromScriptValueAndKeyPath(value, keyPath);
+ RefPtr<IDBKey> expectedKey = createIDBKeyFromSerializedValueAndKeyPath(value, keyPath);
ASSERT(!expectedKey || expectedKey->isEqual(primaryKey.get()));
#endif
- bool injected = injectIDBKeyIntoScriptValue(primaryKey, value, keyPath);
- ASSERT_UNUSED(injected, injected);
- onSuccessInternal(value);
+ RefPtr<SerializedScriptValue> valueAfterInjection = injectIDBKeyIntoSerializedValue(primaryKey, value, keyPath);
+ ASSERT(valueAfterInjection);
+ if (!valueAfterInjection) {
+ // Checks in put() ensure this should only happen if I/O error occurs.
+ onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "Internal error inserting generated key into the object."));
+ return;
+ }
+ value = valueAfterInjection;
+ onSuccess(value.release());
}
-void IDBRequest::onSuccessInternal(const ScriptValue& value)
+void IDBRequest::onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
{
- m_result = IDBAny::create(value);
- m_pendingCursor.clear();
- enqueueEvent(createSuccessEvent());
-}
-
-void IDBRequest::onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> serializedValue)
-{
IDB_TRACE("IDBRequest::onSuccess(key, primaryKey, value)");
if (!shouldEnqueueEvent())
return;
- ScriptValue value = deserializeIDBValue(scriptExecutionContext(), serializedValue);
ASSERT(m_pendingCursor);
setResultCursor(m_pendingCursor.release(), key, primaryKey, value);
enqueueEvent(createSuccessEvent());
@@ -458,7 +456,7 @@
if (event->type() == eventNames().successEvent) {
cursorToNotify = getResultCursor();
if (cursorToNotify)
- cursorToNotify->setValueReady(m_cursorKey.release(), m_cursorPrimaryKey.release(), m_cursorValue);
+ cursorToNotify->setValueReady(m_cursorKey.release(), m_cursorPrimaryKey.release(), m_cursorValue.release());
}
if (event->type() == eventNames().upgradeneededEvent) {
« no previous file with comments | « Source/WebCore/Modules/indexeddb/IDBRequest.h ('k') | Source/WebCore/Modules/indexeddb/IDBTransactionCallbacks.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698