WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-92278-20120726133624.patch (text/plain), 36.99 KB, created by
Joshua Bell
on 2012-07-26 13:36:35 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Joshua Bell
Created:
2012-07-26 13:36:35 PDT
Size:
36.99 KB
patch
obsolete
>Subversion Revision: 123656 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index e3a75edfe7fecadcac8e6a638fbb1314967d9d38..d176f35e181c1812bc6274393e80edc2c6448295 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,45 @@ >+2012-07-26 Joshua Bell <jsbell@chromium.org> >+ >+ IndexedDB: Pass cursor continue results back in callback >+ https://bugs.webkit.org/show_bug.cgi?id=92278 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Supply the updated cursor key/primaryKey/value in the success callback, >+ rather than forcing the callee to make three calls into the back end to >+ fetch them. Callbacks onSuccess(cursor) and onSuccessWithContinuation() >+ are given the three new payload parameters (and the latter is renamed.) >+ >+ No new tests - no behavioral changes. >+ >+ * Modules/indexeddb/IDBCallbacks.h: Updated callbacks. >+ (IDBCallbacks): >+ * Modules/indexeddb/IDBCursor.cpp: >+ (WebCore::IDBCursor::setValueReady): Takes values rather than fetching them. >+ * Modules/indexeddb/IDBCursor.h: >+ (IDBCursor): >+ * Modules/indexeddb/IDBCursorBackendImpl.cpp: Delete accessors. >+ (WebCore::IDBCursorBackendImpl::advanceInternal): Pass along updated cursor state. >+ (WebCore::IDBCursorBackendImpl::continueFunctionInternal): Ditto. >+ * Modules/indexeddb/IDBCursorBackendImpl.h: >+ (IDBCursorBackendImpl): Delete accessors from interface... >+ (WebCore::IDBCursorBackendImpl::key): ...but keep them for use within back-end. >+ (WebCore::IDBCursorBackendImpl::primaryKey): >+ (WebCore::IDBCursorBackendImpl::value): >+ * Modules/indexeddb/IDBCursorBackendInterface.h: Delete accessors. >+ * Modules/indexeddb/IDBIndexBackendImpl.cpp: >+ (WebCore::IDBIndexBackendImpl::openCursorInternal): Pass along new cursor state. >+ * Modules/indexeddb/IDBObjectStoreBackendImpl.cpp: >+ (WebCore::IDBObjectStoreBackendImpl::openCursorInternal): Ditto. >+ * Modules/indexeddb/IDBRequest.cpp: >+ (WebCore::IDBRequest::setResultCursor): Stash updated cursor state until dispatch. >+ (WebCore::IDBRequest::onSuccess): >+ (WebCore::IDBRequest::dispatchEvent): Update cursor with new state. >+ * Modules/indexeddb/IDBRequest.h: >+ (IDBRequest): >+ * inspector/InspectorIndexedDBAgent.cpp: Update iteration code to use new callbacks. >+ (WebCore): >+ > 2012-07-24 Shawn Singh <shawnsingh@chromium.org> > > [chromium] Refactor CCLayerTreeHostCommon: move root layer special case initialization into internal code. >diff --git a/Source/WebKit/chromium/ChangeLog b/Source/WebKit/chromium/ChangeLog >index 27b552be4d81a2b3a6cfbb0dbc166053a8dd463e..89b0910bda3811034a8a11011c97958e543c744f 100644 >--- a/Source/WebKit/chromium/ChangeLog >+++ b/Source/WebKit/chromium/ChangeLog >@@ -1,3 +1,40 @@ >+2012-07-26 Joshua Bell <jsbell@chromium.org> >+ >+ IndexedDB: Pass cursor continue results back in callback >+ https://bugs.webkit.org/show_bug.cgi?id=92278 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Supply the updated cursor key/primaryKey/value in the success callback, >+ rather than forcing the callee to make three calls into the back end to >+ fetch them. Callbacks onSuccess(cursor) and onSuccessWithContinuation() >+ are given the three new payload parameters (and the latter is renamed.) >+ >+ * public/WebIDBCallbacks.h: >+ (WebIDBCallbacks): >+ (WebKit::WebIDBCallbacks::onSuccess): Replace with no-op stub. >+ (WebKit::WebIDBCallbacks::onSuccessWithContinuation): Ditto. >+ * public/WebIDBCursor.h: >+ (WebIDBCursor): Methods can be removed once Chromium is cleaned up. >+ * src/IDBCallbacksProxy.cpp: Updated callbacks. >+ (WebKit::IDBCallbacksProxy::onSuccess): >+ (WebKit): >+ * src/IDBCallbacksProxy.h: Updated callbacks. >+ (IDBCallbacksProxy): >+ * src/IDBCursorBackendProxy.cpp: Remove back end accessors. >+ * src/IDBCursorBackendProxy.h: >+ (IDBCursorBackendProxy): >+ * src/WebIDBCallbacksImpl.cpp: Updated callbacks. >+ (WebKit::WebIDBCallbacksImpl::onSuccess): >+ * src/WebIDBCallbacksImpl.h: Updated callbacks. >+ (WebIDBCallbacksImpl): >+ * src/WebIDBCursorImpl.cpp: Remove back end accessors. >+ * src/WebIDBCursorImpl.h: Remove back end accessors. >+ (WebIDBCursorImpl): >+ * tests/IDBAbortOnCorruptTest.cpp: Update test stubs. >+ (WebCore::MockIDBCallbacks::onSuccess): >+ * tests/IDBDatabaseBackendTest.cpp: Ditto. >+ > 2012-07-24 Shawn Singh <shawnsingh@chromium.org> > > [chromium] Refactor CCLayerTreeHostCommon: move root layer special case initialization into internal code. >diff --git a/Source/WebCore/Modules/indexeddb/IDBCallbacks.h b/Source/WebCore/Modules/indexeddb/IDBCallbacks.h >index 853ffc72d260391fcc43664d573fc5dae302dc0f..18c9c2aa958ec58e9e57d2ad02fc7abe1ab00ad0 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBCallbacks.h >+++ b/Source/WebCore/Modules/indexeddb/IDBCallbacks.h >@@ -51,13 +51,13 @@ public: > > virtual void onError(PassRefPtr<IDBDatabaseError>) = 0; > virtual void onSuccess(PassRefPtr<DOMStringList>) = 0; >- virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) = 0; >+ virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) = 0; > virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0; > virtual void onSuccess(PassRefPtr<IDBKey>) = 0; > virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) = 0; > virtual void onSuccess(PassRefPtr<SerializedScriptValue>) = 0; > virtual void onSuccess(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBKey>, const IDBKeyPath&) = 0; >- virtual void onSuccessWithContinuation() = 0; >+ virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) = 0; > virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >& keys, const Vector<RefPtr<IDBKey> >& primaryKeys, const Vector<RefPtr<SerializedScriptValue> >& values) = 0; > virtual void onBlocked() = 0; > }; >diff --git a/Source/WebCore/Modules/indexeddb/IDBCursor.cpp b/Source/WebCore/Modules/indexeddb/IDBCursor.cpp >index ef34cb8c7fb7636184122b3cb836d248d21eb930..b6887c3b398e23e8aa2b6744df8ab04894716c3a 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBCursor.cpp >+++ b/Source/WebCore/Modules/indexeddb/IDBCursor.cpp >@@ -253,12 +253,12 @@ void IDBCursor::close() > m_request.clear(); > } > >-void IDBCursor::setValueReady() >+void IDBCursor::setValueReady(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> prpValue) > { >- m_currentKey = m_backend->key(); >- m_currentPrimaryKey = m_backend->primaryKey(); >+ m_currentKey = key; >+ m_currentPrimaryKey = primaryKey; > >- RefPtr<SerializedScriptValue> value = m_backend->value(); >+ RefPtr<SerializedScriptValue> value = prpValue; > #ifndef NDEBUG > if (!isKeyCursor()) { > // FIXME: Actually inject the primaryKey at the keyPath. >diff --git a/Source/WebCore/Modules/indexeddb/IDBCursor.h b/Source/WebCore/Modules/indexeddb/IDBCursor.h >index fd46cbbca07f4f32337272ff4ce613a6e5281841..6a91bd6fe7732db55315e071ac172545a278be3f 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBCursor.h >+++ b/Source/WebCore/Modules/indexeddb/IDBCursor.h >@@ -82,7 +82,7 @@ public: > > void postSuccessHandlerCallback(); > void close(); >- void setValueReady(); >+ void setValueReady(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>); > > // The spec requires that the script object that wraps the value > // be unchanged until the value changes as a result of the cursor >diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp >index ae27af8a32c6bb69492bff0866e2d02852446603..4e7c329a3fb575f66042b052822cb160eae6996d 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp >+++ b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp >@@ -63,26 +63,6 @@ IDBCursorBackendImpl::~IDBCursorBackendImpl() > m_objectStore.clear(); > } > >-PassRefPtr<IDBKey> IDBCursorBackendImpl::key() const >-{ >- IDB_TRACE("IDBCursorBackendImpl::key"); >- return m_cursor->key(); >-} >- >-PassRefPtr<IDBKey> IDBCursorBackendImpl::primaryKey() const >-{ >- IDB_TRACE("IDBCursorBackendImpl::primaryKey"); >- return m_cursor->primaryKey(); >-} >- >-PassRefPtr<SerializedScriptValue> IDBCursorBackendImpl::value() const >-{ >- IDB_TRACE("IDBCursorBackendImpl::value"); >- if (m_cursorType == IndexKeyCursor) >- return SerializedScriptValue::nullValue(); >- return SerializedScriptValue::createFromWire(m_cursor->value()); >-} >- > void IDBCursorBackendImpl::update(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBCallbacks> callbacks, ExceptionCode& ec) > { > IDB_TRACE("IDBCursorBackendImpl::update"); >@@ -136,7 +116,7 @@ void IDBCursorBackendImpl::advanceInternal(ScriptExecutionContext*, PassRefPtr<I > return; > } > >- callbacks->onSuccessWithContinuation(); >+ callbacks->onSuccess(cursor->key(), cursor->primaryKey(), cursor->value()); > } > > void IDBCursorBackendImpl::continueFunctionInternal(ScriptExecutionContext*, PassRefPtr<IDBCursorBackendImpl> prpCursor, PassRefPtr<IDBKey> prpKey, PassRefPtr<IDBCallbacks> callbacks) >@@ -151,7 +131,7 @@ void IDBCursorBackendImpl::continueFunctionInternal(ScriptExecutionContext*, Pas > return; > } > >- callbacks->onSuccessWithContinuation(); >+ callbacks->onSuccess(cursor->key(), cursor->primaryKey(), cursor->value()); > } > > void IDBCursorBackendImpl::deleteFunction(PassRefPtr<IDBCallbacks> prpCallbacks, ExceptionCode& ec) >diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h >index 043c40352cdd3a3fd63f9972d16721f048e2b099..3004f1f56d7736c5056f7ae6f116d852cf9d8b7a 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h >+++ b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h >@@ -54,9 +54,6 @@ public: > virtual ~IDBCursorBackendImpl(); > > // IDBCursorBackendInterface >- virtual PassRefPtr<IDBKey> key() const; >- virtual PassRefPtr<IDBKey> primaryKey() const; >- virtual PassRefPtr<SerializedScriptValue> value() const; > virtual void update(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBCallbacks>, ExceptionCode&); > virtual void advance(unsigned long, PassRefPtr<IDBCallbacks>, ExceptionCode&); > virtual void continueFunction(PassRefPtr<IDBKey>, PassRefPtr<IDBCallbacks>, ExceptionCode&); >@@ -65,6 +62,9 @@ public: > virtual void prefetchReset(int usedPrefetches, int unusedPrefetches); > virtual void postSuccessHandlerCallback() { ASSERT_NOT_REACHED(); } > >+ PassRefPtr<IDBKey> key() const { return m_cursor->key(); } >+ PassRefPtr<IDBKey> primaryKey() const { return m_cursor->primaryKey(); } >+ PassRefPtr<SerializedScriptValue> value() const { return (m_cursorType == IndexKeyCursor) ? SerializedScriptValue::nullValue() : SerializedScriptValue::createFromWire(m_cursor->value()); } > void close(); > > private: >diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h b/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h >index 48d3a1829f6588edf6197337f318b2c06e90bcf3..547263bc540fff51537f60ee6ea47b1fec9960b8 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h >+++ b/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h >@@ -53,10 +53,6 @@ public: > ObjectStoreCursor > }; > >- virtual PassRefPtr<IDBKey> key() const = 0; >- virtual PassRefPtr<IDBKey> primaryKey() const = 0; >- virtual PassRefPtr<SerializedScriptValue> value() const = 0; >- > virtual void update(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBCallbacks>, ExceptionCode&) = 0; > virtual void advance(unsigned long count, PassRefPtr<IDBCallbacks>, ExceptionCode&) = 0; > virtual void continueFunction(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>, ExceptionCode&) = 0; >diff --git a/Source/WebCore/Modules/indexeddb/IDBIndexBackendImpl.cpp b/Source/WebCore/Modules/indexeddb/IDBIndexBackendImpl.cpp >index 9f5ff3bafca254975a43c430ebca5e218690ec66..ad47981c9cc199ad432e1fb43b6c62728a8199ea 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBIndexBackendImpl.cpp >+++ b/Source/WebCore/Modules/indexeddb/IDBIndexBackendImpl.cpp >@@ -99,8 +99,8 @@ void IDBIndexBackendImpl::openCursorInternal(ScriptExecutionContext*, PassRefPtr > return; > } > >- RefPtr<IDBCursorBackendInterface> cursor = IDBCursorBackendImpl::create(backingStoreCursor.get(), direction, cursorType, transaction.get(), index->m_objectStoreBackend); >- callbacks->onSuccess(cursor.release()); >+ RefPtr<IDBCursorBackendImpl> cursor = IDBCursorBackendImpl::create(backingStoreCursor.get(), direction, cursorType, transaction.get(), index->m_objectStoreBackend); >+ callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), cursor->value()); > } > > void IDBIndexBackendImpl::openCursor(PassRefPtr<IDBKeyRange> prpKeyRange, unsigned short direction, PassRefPtr<IDBCallbacks> prpCallbacks, IDBTransactionBackendInterface* transactionPtr, ExceptionCode& ec) >diff --git a/Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp b/Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp >index b962e9487a216fac5898e0a072eb065b368fb545..738663fe93c8e40b6895673b6f3470125f9208ed 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp >+++ b/Source/WebCore/Modules/indexeddb/IDBObjectStoreBackendImpl.cpp >@@ -585,8 +585,8 @@ void IDBObjectStoreBackendImpl::openCursorInternal(ScriptExecutionContext*, Pass > return; > } > >- RefPtr<IDBCursorBackendInterface> cursor = IDBCursorBackendImpl::create(backingStoreCursor.release(), direction, IDBCursorBackendInterface::ObjectStoreCursor, transaction.get(), objectStore.get()); >- callbacks->onSuccess(cursor.release()); >+ RefPtr<IDBCursorBackendImpl> cursor = IDBCursorBackendImpl::create(backingStoreCursor.release(), direction, IDBCursorBackendInterface::ObjectStoreCursor, transaction.get(), objectStore.get()); >+ callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), cursor->value()); > } > > void IDBObjectStoreBackendImpl::count(PassRefPtr<IDBKeyRange> range, PassRefPtr<IDBCallbacks> callbacks, IDBTransactionBackendInterface* transaction, ExceptionCode& ec) >diff --git a/Source/WebCore/Modules/indexeddb/IDBRequest.cpp b/Source/WebCore/Modules/indexeddb/IDBRequest.cpp >index a1eaf2930c1a1eb8c27bcee8e52209e82698434e..922ed644833bbafca671d56aba70d791baf5b24d 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBRequest.cpp >+++ b/Source/WebCore/Modules/indexeddb/IDBRequest.cpp >@@ -200,15 +200,19 @@ PassRefPtr<IDBCursor> IDBRequest::getResultCursor() > return 0; > } > >-void IDBRequest::setResultCursor(PassRefPtr<IDBCursor> prpCursor) >+void IDBRequest::setResultCursor(PassRefPtr<IDBCursor> cursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { > ASSERT(m_readyState == PENDING); >+ m_cursorKey = key; >+ m_cursorPrimaryKey = primaryKey; >+ m_cursorValue = value; >+ > if (m_cursorType == IDBCursorBackendInterface::IndexKeyCursor) { >- m_result = IDBAny::create(prpCursor); >+ m_result = IDBAny::create(cursor); > return; > } > >- m_result = IDBAny::create(IDBCursorWithValue::fromCursor(prpCursor)); >+ m_result = IDBAny::create(IDBCursorWithValue::fromCursor(cursor)); > } > > void IDBRequest::finishCursor() >@@ -248,7 +252,7 @@ void IDBRequest::onSuccess(PassRefPtr<DOMStringList> domStringList) > enqueueEvent(createSuccessEvent()); > } > >-void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend) >+void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { > IDB_TRACE("IDBRequest::onSuccess(IDBCursor)"); > ASSERT(m_readyState == PENDING || m_readyState == DONE); >@@ -262,7 +266,7 @@ void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend) > cursor = IDBCursor::create(backend, m_cursorDirection, this, m_source.get(), m_transaction.get()); > else > cursor = IDBCursorWithValue::create(backend, m_cursorDirection, this, m_source.get(), m_transaction.get()); >- setResultCursor(cursor); >+ setResultCursor(cursor, key, primaryKey, value); > > enqueueEvent(createSuccessEvent()); > } >@@ -359,15 +363,16 @@ void IDBRequest::onSuccess(PassRefPtr<SerializedScriptValue> prpSerializedScript > onSuccess(serializedScriptValue.release()); > } > >-void IDBRequest::onSuccessWithContinuation() >+void IDBRequest::onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { >- IDB_TRACE("IDBRequest::onSuccessWithContinuation"); >+ IDB_TRACE("IDBRequest::onSuccess(key, primaryKey, value)"); > ASSERT(m_readyState == PENDING || m_readyState == DONE); > if (m_requestAborted) > return; >+ ASSERT(m_readyState == PENDING); > ASSERT(!m_errorCode && m_errorMessage.isNull() && !m_error && !m_result); > ASSERT(m_pendingCursor); >- setResultCursor(m_pendingCursor.release()); >+ setResultCursor(m_pendingCursor.release(), key, primaryKey, value); > enqueueEvent(createSuccessEvent()); > } > >@@ -439,7 +444,7 @@ bool IDBRequest::dispatchEvent(PassRefPtr<Event> event) > if (event->type() == eventNames().successEvent) { > cursorToNotify = getResultCursor(); > if (cursorToNotify) >- cursorToNotify->setValueReady(); >+ cursorToNotify->setValueReady(m_cursorKey.release(), m_cursorPrimaryKey.release(), m_cursorValue.release()); > } > > // FIXME: When we allow custom event dispatching, this will probably need to change. >diff --git a/Source/WebCore/Modules/indexeddb/IDBRequest.h b/Source/WebCore/Modules/indexeddb/IDBRequest.h >index a804c2bd5eb1b731a5197558689adb6a65eabc3e..1221e589989163693d0365ee97b6f495c0d41372 100644 >--- a/Source/WebCore/Modules/indexeddb/IDBRequest.h >+++ b/Source/WebCore/Modules/indexeddb/IDBRequest.h >@@ -83,12 +83,12 @@ public: > virtual void onError(PassRefPtr<IDBDatabaseError>); > virtual void onSuccess(PassRefPtr<DOMStringList>); > virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>); >- virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>); >+ virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>); > virtual void onSuccess(PassRefPtr<IDBKey>); > virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>); > virtual void onSuccess(PassRefPtr<SerializedScriptValue>); > virtual void onSuccess(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBKey>, const IDBKeyPath&); >- virtual void onSuccessWithContinuation(); >+ virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>); > virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) { ASSERT_NOT_REACHED(); } // Not implemented. Callback should not reach the renderer side. > virtual void onBlocked(); > >@@ -122,7 +122,7 @@ private: > virtual EventTargetData* ensureEventTargetData(); > > PassRefPtr<IDBCursor> getResultCursor(); >- void setResultCursor(PassRefPtr<IDBCursor>); >+ void setResultCursor(PassRefPtr<IDBCursor>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>); > > RefPtr<IDBAny> m_source; > RefPtr<IDBTransaction> m_transaction; >@@ -137,6 +137,9 @@ private: > IDBCursorBackendInterface::CursorType m_cursorType; > IDBCursor::Direction m_cursorDirection; > RefPtr<IDBCursor> m_pendingCursor; >+ RefPtr<IDBKey> m_cursorKey; >+ RefPtr<IDBKey> m_cursorPrimaryKey; >+ RefPtr<SerializedScriptValue> m_cursorValue; > > EventTargetData m_eventTargetData; > }; >diff --git a/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp b/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp >index c584b1e9fd3eafa9efeac61d4165df36c42ed8a7..32b29b563d6a5721c1352bfd5a64338f1ab75215 100644 >--- a/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp >+++ b/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp >@@ -108,13 +108,13 @@ public: > > virtual void onError(PassRefPtr<IDBDatabaseError>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<DOMStringList>) OVERRIDE { } >- virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) OVERRIDE { } >+ virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<IDBKey>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<SerializedScriptValue>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBKey>, const IDBKeyPath&) OVERRIDE { } >- virtual void onSuccessWithContinuation() OVERRIDE { } >+ virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) OVERRIDE { } > virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) OVERRIDE { } > virtual void onBlocked() OVERRIDE { } > }; >@@ -490,13 +490,13 @@ public: > end(false); > } > >- virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursor) >+ virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { > m_idbCursor = idbCursor; >- onSuccessWithContinuation(); >+ onSuccess(key, primaryKey, value); > } > >- virtual void onSuccessWithContinuation() >+ virtual void onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { > if (m_skipCount) { > --m_skipCount; >@@ -509,9 +509,6 @@ public: > return; > } > >- RefPtr<IDBKey> key = m_idbCursor->key(); >- RefPtr<IDBKey> primaryKey = m_idbCursor->primaryKey(); >- RefPtr<SerializedScriptValue> value = m_idbCursor->value(); > RefPtr<TypeBuilder::Runtime::RemoteObject> wrappedValue = m_injectedScript.wrapSerializedObject(value.get(), String()); > RefPtr<DataEntry> dataEntry = DataEntry::create() > .setKey(keyFromIDBKey(key.get())) >diff --git a/Source/WebKit/chromium/public/WebIDBCallbacks.h b/Source/WebKit/chromium/public/WebIDBCallbacks.h >index a63c0bc9ee6c4caf2d67d95e5d00a11c9fcd829d..97f74c41427f570372adb608ab7199f8fe050075 100644 >--- a/Source/WebKit/chromium/public/WebIDBCallbacks.h >+++ b/Source/WebKit/chromium/public/WebIDBCallbacks.h >@@ -50,13 +50,17 @@ public: > // For the rest, pass ownership to the callee via a pointer. > virtual void onError(const WebIDBDatabaseError&) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccess(const WebDOMStringList&) { WEBKIT_ASSERT_NOT_REACHED(); } >- virtual void onSuccess(WebIDBCursor*) { WEBKIT_ASSERT_NOT_REACHED(); } >+ // FIXME: Remove this no-op method when callers are updated. >+ virtual void onSuccess(WebIDBCursor*) { } >+ virtual void onSuccess(WebIDBCursor*, const WebIDBKey&, const WebIDBKey&, const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccess(WebIDBDatabase*) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccess(const WebIDBKey&) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccess(WebIDBTransaction*) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccess(const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccess(const WebSerializedScriptValue&, const WebIDBKey&, const WebIDBKeyPath&) { WEBKIT_ASSERT_NOT_REACHED(); } >- virtual void onSuccessWithContinuation() { WEBKIT_ASSERT_NOT_REACHED(); } >+ // FIXME: Remove this no-op method when callers are updated. >+ virtual void onSuccessWithContinuation() { } >+ virtual void onSuccess(const WebIDBKey&, const WebIDBKey&, const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onBlocked() { WEBKIT_ASSERT_NOT_REACHED(); } > virtual void onSuccessWithPrefetch(const WebVector<WebIDBKey>& keys, const WebVector<WebIDBKey>& primaryKeys, const WebVector<WebSerializedScriptValue>& values) { WEBKIT_ASSERT_NOT_REACHED(); } > }; >diff --git a/Source/WebKit/chromium/public/WebIDBCursor.h b/Source/WebKit/chromium/public/WebIDBCursor.h >index dfad193835a607bd9d4311cebe29030d81dc8bab..0bd312e79c29ab42193783e087ae30e1850c74db 100644 >--- a/Source/WebKit/chromium/public/WebIDBCursor.h >+++ b/Source/WebKit/chromium/public/WebIDBCursor.h >@@ -40,6 +40,7 @@ class WebIDBCursor { > public: > virtual ~WebIDBCursor() { } > >+ // FIXME: Remove these methods when callers are updated. > virtual WebIDBKey key() const > { > WEBKIT_ASSERT_NOT_REACHED(); >diff --git a/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp b/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp >index 7df84d2ffbe0796135565fa02cf7e8e1ad82092c..7d2c9cf99c123f09a441433f90080024cd0978b1 100644 >--- a/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp >+++ b/Source/WebKit/chromium/src/IDBCallbacksProxy.cpp >@@ -68,9 +68,9 @@ void IDBCallbacksProxy::onError(PassRefPtr<IDBDatabaseError> idbDatabaseError) > m_callbacks->onError(WebIDBDatabaseError(idbDatabaseError)); > } > >-void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursorBackend) >+void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursorBackend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { >- m_callbacks->onSuccess(new WebIDBCursorImpl(idbCursorBackend)); >+ m_callbacks->onSuccess(new WebIDBCursorImpl(idbCursorBackend), key, primaryKey, value); > } > > void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> backend) >@@ -102,9 +102,10 @@ void IDBCallbacksProxy::onSuccess(PassRefPtr<SerializedScriptValue> serializedSc > { > m_callbacks->onSuccess(serializedScriptValue, key, keyPath); > } >-void IDBCallbacksProxy::onSuccessWithContinuation() >+ >+void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value) > { >- m_callbacks->onSuccessWithContinuation(); >+ m_callbacks->onSuccess(key, primaryKey, value); > } > > void IDBCallbacksProxy::onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >& keys, const Vector<RefPtr<IDBKey> >& primaryKeys, const Vector<RefPtr<SerializedScriptValue> >& values) >diff --git a/Source/WebKit/chromium/src/IDBCallbacksProxy.h b/Source/WebKit/chromium/src/IDBCallbacksProxy.h >index db3056550b2b2e17e2e30ddef79e9dd29c25ffbd..8bb71bf53d9cec039e7b3fb49ac557bcb3e9b196 100644 >--- a/Source/WebKit/chromium/src/IDBCallbacksProxy.h >+++ b/Source/WebKit/chromium/src/IDBCallbacksProxy.h >@@ -47,13 +47,13 @@ public: > > virtual void onError(PassRefPtr<WebCore::IDBDatabaseError>); > virtual void onSuccess(PassRefPtr<WebCore::DOMStringList>); >- virtual void onSuccess(PassRefPtr<WebCore::IDBCursorBackendInterface>); >+ virtual void onSuccess(PassRefPtr<WebCore::IDBCursorBackendInterface>, PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::SerializedScriptValue>); > virtual void onSuccess(PassRefPtr<WebCore::IDBDatabaseBackendInterface>); > virtual void onSuccess(PassRefPtr<WebCore::IDBKey>); > virtual void onSuccess(PassRefPtr<WebCore::IDBTransactionBackendInterface>); > virtual void onSuccess(PassRefPtr<WebCore::SerializedScriptValue>); > virtual void onSuccess(PassRefPtr<WebCore::SerializedScriptValue>, PassRefPtr<WebCore::IDBKey>, const WebCore::IDBKeyPath&); >- virtual void onSuccessWithContinuation(); >+ virtual void onSuccess(PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::SerializedScriptValue>); > virtual void onSuccessWithPrefetch(const Vector<RefPtr<WebCore::IDBKey> >& keys, const Vector<RefPtr<WebCore::IDBKey> >& primaryKeys, const Vector<RefPtr<WebCore::SerializedScriptValue> >& values); > virtual void onBlocked(); > >diff --git a/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp b/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp >index ca390ba907427e08fd478bb95cf9e2c416cd2ffb..2a5f7040ac11f0e4f6271e08dba58539474d3110 100644 >--- a/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp >+++ b/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp >@@ -54,21 +54,6 @@ IDBCursorBackendProxy::~IDBCursorBackendProxy() > { > } > >-PassRefPtr<IDBKey> IDBCursorBackendProxy::key() const >-{ >- return m_idbCursor->key(); >-} >- >-PassRefPtr<IDBKey> IDBCursorBackendProxy::primaryKey() const >-{ >- return m_idbCursor->primaryKey(); >-} >- >-PassRefPtr<SerializedScriptValue> IDBCursorBackendProxy::value() const >-{ >- return m_idbCursor->value(); >-} >- > void IDBCursorBackendProxy::update(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBCallbacks> callbacks, ExceptionCode& ec) > { > m_idbCursor->update(value, new WebIDBCallbacksImpl(callbacks), ec); >diff --git a/Source/WebKit/chromium/src/IDBCursorBackendProxy.h b/Source/WebKit/chromium/src/IDBCursorBackendProxy.h >index 9e4b57008126f396cd14f633c6a3a41d6b590285..e9533fb48b0c9930de5d06a378f77dd09a2863ae 100644 >--- a/Source/WebKit/chromium/src/IDBCursorBackendProxy.h >+++ b/Source/WebKit/chromium/src/IDBCursorBackendProxy.h >@@ -42,9 +42,6 @@ public: > static PassRefPtr<WebCore::IDBCursorBackendInterface> create(PassOwnPtr<WebIDBCursor>); > virtual ~IDBCursorBackendProxy(); > >- virtual PassRefPtr<WebCore::IDBKey> key() const; >- virtual PassRefPtr<WebCore::IDBKey> primaryKey() const; >- virtual PassRefPtr<WebCore::SerializedScriptValue> value() const; > virtual void update(PassRefPtr<WebCore::SerializedScriptValue>, PassRefPtr<WebCore::IDBCallbacks>, WebCore::ExceptionCode&); > virtual void advance(unsigned long, PassRefPtr<WebCore::IDBCallbacks>, WebCore::ExceptionCode&); > virtual void continueFunction(PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::IDBCallbacks>, WebCore::ExceptionCode&); >diff --git a/Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp b/Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp >index 5b5aedf7ccb37e249c53c1af9e8ec8ed9b0e6e12..083dbccbe2675f2099b53557f40168e3e083d767 100644 >--- a/Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp >+++ b/Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp >@@ -65,9 +65,9 @@ void WebIDBCallbacksImpl::onSuccess(const WebDOMStringList& domStringList) > m_callbacks->onSuccess(domStringList); > } > >-void WebIDBCallbacksImpl::onSuccess(WebIDBCursor* cursor) >+void WebIDBCallbacksImpl::onSuccess(WebIDBCursor* cursor, const WebIDBKey& key, const WebIDBKey& primaryKey, const WebSerializedScriptValue& value) > { >- m_callbacks->onSuccess(IDBCursorBackendProxy::create(adoptPtr(cursor))); >+ m_callbacks->onSuccess(IDBCursorBackendProxy::create(adoptPtr(cursor)), key, primaryKey, value); > } > > void WebIDBCallbacksImpl::onSuccess(WebIDBDatabase* webKitInstance) >@@ -95,9 +95,9 @@ void WebIDBCallbacksImpl::onSuccess(const WebSerializedScriptValue& serializedSc > m_callbacks->onSuccess(serializedScriptValue, key, keyPath); > } > >-void WebIDBCallbacksImpl::onSuccessWithContinuation() >+void WebIDBCallbacksImpl::onSuccess(const WebIDBKey& key, const WebIDBKey& primaryKey, const WebSerializedScriptValue& value) > { >- m_callbacks->onSuccessWithContinuation(); >+ m_callbacks->onSuccess(key, primaryKey, value); > } > > void WebIDBCallbacksImpl::onBlocked() >diff --git a/Source/WebKit/chromium/src/WebIDBCallbacksImpl.h b/Source/WebKit/chromium/src/WebIDBCallbacksImpl.h >index 7b0216359d56d818695fe973a0182afb51250161..edf9f867d24d0b0b20b4caa43c19ccdea464e4b2 100644 >--- a/Source/WebKit/chromium/src/WebIDBCallbacksImpl.h >+++ b/Source/WebKit/chromium/src/WebIDBCallbacksImpl.h >@@ -43,13 +43,13 @@ public: > > virtual void onError(const WebIDBDatabaseError&); > virtual void onSuccess(const WebDOMStringList&); >- virtual void onSuccess(WebIDBCursor*); >+ virtual void onSuccess(WebIDBCursor*, const WebIDBKey&, const WebIDBKey&, const WebSerializedScriptValue&); > virtual void onSuccess(WebIDBDatabase*); > virtual void onSuccess(const WebIDBKey&); > virtual void onSuccess(WebIDBTransaction*); > virtual void onSuccess(const WebSerializedScriptValue&); > virtual void onSuccess(const WebSerializedScriptValue&, const WebIDBKey&, const WebIDBKeyPath&); >- virtual void onSuccessWithContinuation(); >+ virtual void onSuccess(const WebIDBKey&, const WebIDBKey&, const WebSerializedScriptValue&); > virtual void onBlocked(); > > private: >diff --git a/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp b/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp >index e9c0e04af037324c4164c3c5a12cd1b7a1fb1ce8..0f2b8734a71a24369f285b4ce298def887cbc0d6 100644 >--- a/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp >+++ b/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp >@@ -47,21 +47,6 @@ WebIDBCursorImpl::~WebIDBCursorImpl() > { > } > >-WebIDBKey WebIDBCursorImpl::key() const >-{ >- return m_idbCursorBackend->key(); >-} >- >-WebIDBKey WebIDBCursorImpl::primaryKey() const >-{ >- return m_idbCursorBackend->primaryKey(); >-} >- >-WebSerializedScriptValue WebIDBCursorImpl::value() const >-{ >- return m_idbCursorBackend->value(); >-} >- > void WebIDBCursorImpl::update(const WebSerializedScriptValue& value, WebIDBCallbacks* callbacks, WebExceptionCode& ec) > { > m_idbCursorBackend->update(value, IDBCallbacksProxy::create(adoptPtr(callbacks)), ec); >diff --git a/Source/WebKit/chromium/src/WebIDBCursorImpl.h b/Source/WebKit/chromium/src/WebIDBCursorImpl.h >index f0d387b62197687a816ad1dc7555cdc27efbafc5..72a26a8b8739655028fff63b902ad2e42a39e8a0 100644 >--- a/Source/WebKit/chromium/src/WebIDBCursorImpl.h >+++ b/Source/WebKit/chromium/src/WebIDBCursorImpl.h >@@ -44,9 +44,6 @@ public: > WebIDBCursorImpl(WTF::PassRefPtr<WebCore::IDBCursorBackendInterface>); > virtual ~WebIDBCursorImpl(); > >- virtual WebIDBKey key() const; >- virtual WebIDBKey primaryKey() const; >- virtual WebSerializedScriptValue value() const; > virtual void update(const WebSerializedScriptValue&, WebIDBCallbacks*, WebExceptionCode&); > virtual void advance(unsigned long, WebIDBCallbacks*, WebExceptionCode&); > virtual void continueFunction(const WebIDBKey&, WebIDBCallbacks*, WebExceptionCode&); >diff --git a/Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp b/Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp >index d9e3d697b197c7406f63baeb483931b4eac95085..91c505ceaa604861d8c1432cda761813278c72e3 100644 >--- a/Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp >+++ b/Source/WebKit/chromium/tests/IDBAbortOnCorruptTest.cpp >@@ -51,7 +51,7 @@ public: > m_wasErrorCalled = true; > } > virtual void onSuccess(PassRefPtr<DOMStringList>) { } >- virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) { } >+ virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) { } > virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) > { > EXPECT_TRUE(false); >@@ -60,7 +60,7 @@ public: > virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) { } > virtual void onSuccess(PassRefPtr<SerializedScriptValue>) { } > virtual void onSuccess(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBKey>, const IDBKeyPath&) { } >- virtual void onSuccessWithContinuation() { } >+ virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) { }; > virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) { } > virtual void onBlocked() { } > private: >diff --git a/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp b/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp >index 5c01e9ecc31c25fd10d0b187f40d237973361b0b..22778875fa93402078730138e13a34616f435912 100644 >--- a/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp >+++ b/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp >@@ -77,7 +77,7 @@ public: > } > virtual void onError(PassRefPtr<IDBDatabaseError>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<DOMStringList>) OVERRIDE { } >- virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) OVERRIDE { } >+ virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) OVERRIDE > { > m_wasSuccessDBCalled = true; >@@ -86,7 +86,7 @@ public: > virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<SerializedScriptValue>) OVERRIDE { } > virtual void onSuccess(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBKey>, const IDBKeyPath&) OVERRIDE { }; >- virtual void onSuccessWithContinuation() OVERRIDE { } >+ virtual void onSuccess(PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) OVERRIDE { }; > virtual void onSuccessWithPrefetch(const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<IDBKey> >&, const Vector<RefPtr<SerializedScriptValue> >&) OVERRIDE { } > virtual void onBlocked() OVERRIDE { } > private:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 92278
:
154498
|
154738
|
154764
|
155861
|
157544