From 29349a2e0abfef6feaddbe484089fb224096356b Mon Sep 17 00:00:00 2001 From: "jsbell@chromium.org" Date: Sat, 30 Jun 2012 03:09:32 +0000 Subject: [PATCH] IndexedDB: Keep direction on IDBCursor to avoid calls to back end https://bugs.webkit.org/show_bug.cgi?id=90114 Source/WebCore: Reviewed by Tony Chang. Let IDBCursor handle direction() accessor locally, without a call to the IDBCursorBackendImpl which (in some ports) may reside in a different process. Not a heavily called function, but further reduces the surface area exposed by the XXXInterface classes. No new tests - no functional changes. * Modules/indexeddb/IDBCursor.cpp: (WebCore::IDBCursor::create): Accept direction, known at creation time. (WebCore::IDBCursor::IDBCursor): Stash in member. (WebCore::IDBCursor::direction): Use local copy (WebCore::IDBCursor::stringToDirection): Return enum value, not int. * Modules/indexeddb/IDBCursor.h: (IDBCursor): * Modules/indexeddb/IDBCursorBackendImpl.cpp: Remove accessor. * Modules/indexeddb/IDBCursorBackendImpl.h: (IDBCursorBackendImpl): * Modules/indexeddb/IDBCursorBackendInterface.h: Remove accessor. * Modules/indexeddb/IDBCursorWithValue.cpp: (WebCore::IDBCursorWithValue::create): (WebCore::IDBCursorWithValue::IDBCursorWithValue): * Modules/indexeddb/IDBCursorWithValue.h: (IDBCursorWithValue): * Modules/indexeddb/IDBIndex.cpp: Prep IDBRequest with cursor direction too. (WebCore::IDBIndex::openCursor): (WebCore::IDBIndex::openKeyCursor): * Modules/indexeddb/IDBObjectStore.cpp: Ditto. (WebCore::IDBObjectStore::openCursor): * Modules/indexeddb/IDBRequest.cpp: Stash direction for pending cursor too. (WebCore::IDBRequest::IDBRequest): (WebCore::IDBRequest::setCursorDetails): (WebCore::IDBRequest::onSuccess): Apply stashed direction to new cursor. * Modules/indexeddb/IDBRequest.h: (IDBRequest): Source/WebKit/chromium: Stop plumbing IDBCursorBackendInterface::direction() through API. Reviewed by Tony Chang. * src/IDBCursorBackendProxy.cpp: * src/IDBCursorBackendProxy.h: (IDBCursorBackendProxy): * src/WebIDBCursorImpl.cpp: * src/WebIDBCursorImpl.h: (WebIDBCursorImpl): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121612 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebCore/ChangeLog | 42 ++++++++++++++++++++++ Source/WebCore/Modules/indexeddb/IDBCursor.cpp | 13 +++---- Source/WebCore/Modules/indexeddb/IDBCursor.h | 7 ++-- .../Modules/indexeddb/IDBCursorBackendImpl.cpp | 6 ---- .../Modules/indexeddb/IDBCursorBackendImpl.h | 1 - .../Modules/indexeddb/IDBCursorBackendInterface.h | 1 - .../Modules/indexeddb/IDBCursorWithValue.cpp | 8 ++--- .../WebCore/Modules/indexeddb/IDBCursorWithValue.h | 4 +-- Source/WebCore/Modules/indexeddb/IDBIndex.cpp | 9 +++-- .../WebCore/Modules/indexeddb/IDBObjectStore.cpp | 4 +-- Source/WebCore/Modules/indexeddb/IDBRequest.cpp | 8 +++-- Source/WebCore/Modules/indexeddb/IDBRequest.h | 4 ++- Source/WebKit/chromium/ChangeLog | 16 +++++++++ .../WebKit/chromium/src/IDBCursorBackendProxy.cpp | 5 --- Source/WebKit/chromium/src/IDBCursorBackendProxy.h | 1 - Source/WebKit/chromium/src/WebIDBCursorImpl.cpp | 5 --- Source/WebKit/chromium/src/WebIDBCursorImpl.h | 1 - 17 files changed, 89 insertions(+), 46 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index cbf2c26..26c7ead 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,3 +1,45 @@ +2012-06-29 Joshua Bell + + IndexedDB: Keep direction on IDBCursor to avoid calls to back end + https://bugs.webkit.org/show_bug.cgi?id=90114 + + Reviewed by Tony Chang. + + Let IDBCursor handle direction() accessor locally, without a call to + the IDBCursorBackendImpl which (in some ports) may reside in a different + process. Not a heavily called function, but further reduces the surface + area exposed by the XXXInterface classes. + + No new tests - no functional changes. + + * Modules/indexeddb/IDBCursor.cpp: + (WebCore::IDBCursor::create): Accept direction, known at creation time. + (WebCore::IDBCursor::IDBCursor): Stash in member. + (WebCore::IDBCursor::direction): Use local copy + (WebCore::IDBCursor::stringToDirection): Return enum value, not int. + * Modules/indexeddb/IDBCursor.h: + (IDBCursor): + * Modules/indexeddb/IDBCursorBackendImpl.cpp: Remove accessor. + * Modules/indexeddb/IDBCursorBackendImpl.h: + (IDBCursorBackendImpl): + * Modules/indexeddb/IDBCursorBackendInterface.h: Remove accessor. + * Modules/indexeddb/IDBCursorWithValue.cpp: + (WebCore::IDBCursorWithValue::create): + (WebCore::IDBCursorWithValue::IDBCursorWithValue): + * Modules/indexeddb/IDBCursorWithValue.h: + (IDBCursorWithValue): + * Modules/indexeddb/IDBIndex.cpp: Prep IDBRequest with cursor direction too. + (WebCore::IDBIndex::openCursor): + (WebCore::IDBIndex::openKeyCursor): + * Modules/indexeddb/IDBObjectStore.cpp: Ditto. + (WebCore::IDBObjectStore::openCursor): + * Modules/indexeddb/IDBRequest.cpp: Stash direction for pending cursor too. + (WebCore::IDBRequest::IDBRequest): + (WebCore::IDBRequest::setCursorDetails): + (WebCore::IDBRequest::onSuccess): Apply stashed direction to new cursor. + * Modules/indexeddb/IDBRequest.h: + (IDBRequest): + 2012-06-29 Tony Chang Allow align-self: stretch to cause the item size to shrink below its intrinsic size diff --git a/Source/WebCore/Modules/indexeddb/IDBCursor.cpp b/Source/WebCore/Modules/indexeddb/IDBCursor.cpp index a5ca5c7..5e90251 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursor.cpp +++ b/Source/WebCore/Modules/indexeddb/IDBCursor.cpp @@ -42,9 +42,9 @@ namespace WebCore { -PassRefPtr IDBCursor::create(PassRefPtr backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) +PassRefPtr IDBCursor::create(PassRefPtr backend, Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) { - return adoptRef(new IDBCursor(backend, request, source, transaction)); + return adoptRef(new IDBCursor(backend, direction, request, source, transaction)); } const AtomicString& IDBCursor::directionNext() @@ -72,9 +72,10 @@ const AtomicString& IDBCursor::directionPrevUnique() } -IDBCursor::IDBCursor(PassRefPtr backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) +IDBCursor::IDBCursor(PassRefPtr backend, Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) : m_backend(backend) , m_request(request) + , m_direction(direction) , m_source(source) , m_transaction(transaction) , m_transactionNotifier(transaction, this) @@ -95,7 +96,7 @@ const String& IDBCursor::direction() const { IDB_TRACE("IDBCursor::direction"); ExceptionCode ec = 0; - const AtomicString& direction = directionToString(m_backend->direction(), ec); + const AtomicString& direction = directionToString(m_direction, ec); ASSERT(!ec); return direction; } @@ -293,7 +294,7 @@ PassRefPtr IDBCursor::effectiveObjectStore() return index->objectStore(); } -unsigned short IDBCursor::stringToDirection(const String& directionString, ExceptionCode& ec) +IDBCursor::Direction IDBCursor::stringToDirection(const String& directionString, ExceptionCode& ec) { if (directionString == IDBCursor::directionNext()) return IDBCursor::NEXT; @@ -305,7 +306,7 @@ unsigned short IDBCursor::stringToDirection(const String& directionString, Excep return IDBCursor::PREV_NO_DUPLICATE; ec = IDBDatabaseException::IDB_TYPE_ERR; - return 0; + return IDBCursor::NEXT; } const AtomicString& IDBCursor::directionToString(unsigned short direction, ExceptionCode& ec) diff --git a/Source/WebCore/Modules/indexeddb/IDBCursor.h b/Source/WebCore/Modules/indexeddb/IDBCursor.h index 4f4564e..fd46cbb 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursor.h +++ b/Source/WebCore/Modules/indexeddb/IDBCursor.h @@ -59,10 +59,10 @@ public: static const AtomicString& directionPrev(); static const AtomicString& directionPrevUnique(); - static unsigned short stringToDirection(const String& modeString, ExceptionCode&); + static IDBCursor::Direction stringToDirection(const String& modeString, ExceptionCode&); static const AtomicString& directionToString(unsigned short mode, ExceptionCode&); - static PassRefPtr create(PassRefPtr, IDBRequest*, IDBAny* source, IDBTransaction*); + static PassRefPtr create(PassRefPtr, Direction, IDBRequest*, IDBAny* source, IDBTransaction*); virtual ~IDBCursor(); // FIXME: Try to modify the code generator so this is unneeded. @@ -90,7 +90,7 @@ public: bool valueIsDirty() { return m_valueIsDirty; } protected: - IDBCursor(PassRefPtr, IDBRequest*, IDBAny* source, IDBTransaction*); + IDBCursor(PassRefPtr, Direction, IDBRequest*, IDBAny* source, IDBTransaction*); virtual bool isKeyCursor() const { return true; } private: @@ -98,6 +98,7 @@ private: RefPtr m_backend; RefPtr m_request; + const Direction m_direction; RefPtr m_source; RefPtr m_transaction; IDBTransaction::OpenCursorNotifier m_transactionNotifier; diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp index 0a14a6f..fe58988 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp +++ b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.cpp @@ -63,12 +63,6 @@ IDBCursorBackendImpl::~IDBCursorBackendImpl() m_objectStore.clear(); } -unsigned short IDBCursorBackendImpl::direction() const -{ - IDB_TRACE("IDBCursorBackendImpl::direction"); - return m_direction; -} - PassRefPtr IDBCursorBackendImpl::key() const { IDB_TRACE("IDBCursorBackendImpl::key"); diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h index 89dde4f..153016f 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h +++ b/Source/WebCore/Modules/indexeddb/IDBCursorBackendImpl.h @@ -53,7 +53,6 @@ public: } virtual ~IDBCursorBackendImpl(); - virtual unsigned short direction() const; virtual PassRefPtr key() const; virtual PassRefPtr primaryKey() const; virtual PassRefPtr value() const; diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h b/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h index 9712328..48d3a18 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h +++ b/Source/WebCore/Modules/indexeddb/IDBCursorBackendInterface.h @@ -53,7 +53,6 @@ public: ObjectStoreCursor }; - virtual unsigned short direction() const = 0; virtual PassRefPtr key() const = 0; virtual PassRefPtr primaryKey() const = 0; virtual PassRefPtr value() const = 0; diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.cpp b/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.cpp index 30d242c..b90ba3d 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.cpp +++ b/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.cpp @@ -33,9 +33,9 @@ namespace WebCore { -PassRefPtr IDBCursorWithValue::create(PassRefPtr backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) +PassRefPtr IDBCursorWithValue::create(PassRefPtr backend, Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) { - return adoptRef(new IDBCursorWithValue(backend, request, source, transaction)); + return adoptRef(new IDBCursorWithValue(backend, direction, request, source, transaction)); } PassRefPtr IDBCursorWithValue::fromCursor(PassRefPtr prpCursor) @@ -44,8 +44,8 @@ PassRefPtr IDBCursorWithValue::fromCursor(PassRefPtr backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) - : IDBCursor(backend, request, source, transaction) +IDBCursorWithValue::IDBCursorWithValue(PassRefPtr backend, Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction) + : IDBCursor(backend, direction, request, source, transaction) { } diff --git a/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.h b/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.h index 9b396ba..cbb850a 100644 --- a/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.h +++ b/Source/WebCore/Modules/indexeddb/IDBCursorWithValue.h @@ -34,7 +34,7 @@ namespace WebCore { class IDBCursorWithValue : public IDBCursor { public: - static PassRefPtr create(PassRefPtr, IDBRequest*, IDBAny* source, IDBTransaction*); + static PassRefPtr create(PassRefPtr, Direction, IDBRequest*, IDBAny* source, IDBTransaction*); static PassRefPtr fromCursor(PassRefPtr); virtual ~IDBCursorWithValue(); @@ -45,7 +45,7 @@ protected: virtual bool isKeyCursor() const OVERRIDE { return false; } private: - IDBCursorWithValue(PassRefPtr, IDBRequest*, IDBAny* source, IDBTransaction*); + IDBCursorWithValue(PassRefPtr, Direction, IDBRequest*, IDBAny* source, IDBTransaction*); }; } // namespace WebCore diff --git a/Source/WebCore/Modules/indexeddb/IDBIndex.cpp b/Source/WebCore/Modules/indexeddb/IDBIndex.cpp index fd93949..fec9680 100644 --- a/Source/WebCore/Modules/indexeddb/IDBIndex.cpp +++ b/Source/WebCore/Modules/indexeddb/IDBIndex.cpp @@ -69,12 +69,12 @@ PassRefPtr IDBIndex::openCursor(ScriptExecutionContext* context, Pas ec = IDBDatabaseException::TRANSACTION_INACTIVE_ERR; return 0; } - unsigned short direction = IDBCursor::stringToDirection(directionString, ec); + IDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, ec); if (ec) return 0; RefPtr request = IDBRequest::create(context, IDBAny::create(this), m_transaction.get()); - request->setCursorType(IDBCursorBackendInterface::IndexCursor); + request->setCursorDetails(IDBCursorBackendInterface::IndexCursor, direction); m_backend->openCursor(keyRange, direction, request, m_transaction->backend(), ec); if (ec) { request->markEarlyDeath(); @@ -152,13 +152,12 @@ PassRefPtr IDBIndex::openKeyCursor(ScriptExecutionContext* context, ec = IDBDatabaseException::TRANSACTION_INACTIVE_ERR; return 0; } - - unsigned short direction = IDBCursor::stringToDirection(directionString, ec); + IDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, ec); if (ec) return 0; RefPtr request = IDBRequest::create(context, IDBAny::create(this), m_transaction.get()); - request->setCursorType(IDBCursorBackendInterface::IndexKeyCursor); + request->setCursorDetails(IDBCursorBackendInterface::IndexKeyCursor, direction); m_backend->openKeyCursor(keyRange, direction, request, m_transaction->backend(), ec); if (ec) { request->markEarlyDeath(); diff --git a/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp b/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp index 6c06415..65f222b 100644 --- a/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp +++ b/Source/WebCore/Modules/indexeddb/IDBObjectStore.cpp @@ -375,12 +375,12 @@ PassRefPtr IDBObjectStore::openCursor(ScriptExecutionContext* contex ec = IDBDatabaseException::TRANSACTION_INACTIVE_ERR; return 0; } - unsigned short direction = IDBCursor::stringToDirection(directionString, ec); + IDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, ec); if (ec) return 0; RefPtr request = IDBRequest::create(context, IDBAny::create(this), m_transaction.get()); - request->setCursorType(IDBCursorBackendInterface::ObjectStoreCursor); + request->setCursorDetails(IDBCursorBackendInterface::ObjectStoreCursor, direction); m_backend->openCursor(range, direction, request, m_transaction->backend(), ec); if (ec) { request->markEarlyDeath(); diff --git a/Source/WebCore/Modules/indexeddb/IDBRequest.cpp b/Source/WebCore/Modules/indexeddb/IDBRequest.cpp index 0fda681..0885cac 100644 --- a/Source/WebCore/Modules/indexeddb/IDBRequest.cpp +++ b/Source/WebCore/Modules/indexeddb/IDBRequest.cpp @@ -61,6 +61,7 @@ IDBRequest::IDBRequest(ScriptExecutionContext* context, PassRefPtr sourc , m_cursorFinished(false) , m_contextStopped(false) , m_cursorType(IDBCursorBackendInterface::InvalidCursorType) + , m_cursorDirection(IDBCursor::NEXT) , m_cursor(0) { if (m_transaction) { @@ -187,10 +188,11 @@ void IDBRequest::abort() onError(IDBDatabaseError::create(IDBDatabaseException::IDB_ABORT_ERR, "The transaction was aborted, so the request cannot be fulfilled.")); } -void IDBRequest::setCursorType(IDBCursorBackendInterface::CursorType cursorType) +void IDBRequest::setCursorDetails(IDBCursorBackendInterface::CursorType cursorType, IDBCursor::Direction direction) { ASSERT(m_cursorType == IDBCursorBackendInterface::InvalidCursorType); m_cursorType = cursorType; + m_cursorDirection = direction; } void IDBRequest::setCursor(PassRefPtr cursor) @@ -237,9 +239,9 @@ void IDBRequest::onSuccess(PassRefPtr backend) ASSERT(m_cursorType != IDBCursorBackendInterface::InvalidCursorType); RefPtr cursor; if (m_cursorType == IDBCursorBackendInterface::IndexKeyCursor) - cursor = IDBCursor::create(backend, this, m_source.get(), m_transaction.get()); + cursor = IDBCursor::create(backend, m_cursorDirection, this, m_source.get(), m_transaction.get()); else - cursor = IDBCursorWithValue::create(backend, this, m_source.get(), m_transaction.get()); + cursor = IDBCursorWithValue::create(backend, m_cursorDirection, this, m_source.get(), m_transaction.get()); setResultCursor(cursor, m_cursorType); enqueueEvent(createSuccessEvent()); diff --git a/Source/WebCore/Modules/indexeddb/IDBRequest.h b/Source/WebCore/Modules/indexeddb/IDBRequest.h index 88a7e60..4907244 100644 --- a/Source/WebCore/Modules/indexeddb/IDBRequest.h +++ b/Source/WebCore/Modules/indexeddb/IDBRequest.h @@ -40,6 +40,7 @@ #include "EventTarget.h" #include "IDBAny.h" #include "IDBCallbacks.h" +#include "IDBCursor.h" namespace WebCore { @@ -73,7 +74,7 @@ public: void markEarlyDeath(); bool resetReadyState(IDBTransaction*); - void setCursorType(IDBCursorBackendInterface::CursorType); + void setCursorDetails(IDBCursorBackendInterface::CursorType, IDBCursor::Direction); void setCursor(PassRefPtr); void finishCursor(); IDBAny* source(); @@ -134,6 +135,7 @@ private: // Only used if the result type will be a cursor. IDBCursorBackendInterface::CursorType m_cursorType; + IDBCursor::Direction m_cursorDirection; RefPtr m_cursor; EventTargetData m_eventTargetData; diff --git a/Source/WebKit/chromium/ChangeLog b/Source/WebKit/chromium/ChangeLog index ad626aa..3ebaf0f 100644 --- a/Source/WebKit/chromium/ChangeLog +++ b/Source/WebKit/chromium/ChangeLog @@ -1,3 +1,19 @@ +2012-06-29 Joshua Bell + + IndexedDB: Keep direction on IDBCursor to avoid calls to back end + https://bugs.webkit.org/show_bug.cgi?id=90114 + + Stop plumbing IDBCursorBackendInterface::direction() through API. + + Reviewed by Tony Chang. + + * src/IDBCursorBackendProxy.cpp: + * src/IDBCursorBackendProxy.h: + (IDBCursorBackendProxy): + * src/WebIDBCursorImpl.cpp: + * src/WebIDBCursorImpl.h: + (WebIDBCursorImpl): + 2012-06-29 Adam Barth [Chromium] WebFontRendering.cpp requires some OS(ANDROID) ifdefs to build downstream diff --git a/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp b/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp index 2a62b92..ca390ba 100644 --- a/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp +++ b/Source/WebKit/chromium/src/IDBCursorBackendProxy.cpp @@ -54,11 +54,6 @@ IDBCursorBackendProxy::~IDBCursorBackendProxy() { } -unsigned short IDBCursorBackendProxy::direction() const -{ - return m_idbCursor->direction(); -} - PassRefPtr IDBCursorBackendProxy::key() const { return m_idbCursor->key(); diff --git a/Source/WebKit/chromium/src/IDBCursorBackendProxy.h b/Source/WebKit/chromium/src/IDBCursorBackendProxy.h index 24a3e42..9e4b570 100644 --- a/Source/WebKit/chromium/src/IDBCursorBackendProxy.h +++ b/Source/WebKit/chromium/src/IDBCursorBackendProxy.h @@ -42,7 +42,6 @@ public: static PassRefPtr create(PassOwnPtr); virtual ~IDBCursorBackendProxy(); - virtual unsigned short direction() const; virtual PassRefPtr key() const; virtual PassRefPtr primaryKey() const; virtual PassRefPtr value() const; diff --git a/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp b/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp index 6f10efe..e9c0e04 100644 --- a/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp +++ b/Source/WebKit/chromium/src/WebIDBCursorImpl.cpp @@ -47,11 +47,6 @@ WebIDBCursorImpl::~WebIDBCursorImpl() { } -unsigned short WebIDBCursorImpl::direction() const -{ - return m_idbCursorBackend->direction(); -} - WebIDBKey WebIDBCursorImpl::key() const { return m_idbCursorBackend->key(); diff --git a/Source/WebKit/chromium/src/WebIDBCursorImpl.h b/Source/WebKit/chromium/src/WebIDBCursorImpl.h index 4186751..f0d387b 100644 --- a/Source/WebKit/chromium/src/WebIDBCursorImpl.h +++ b/Source/WebKit/chromium/src/WebIDBCursorImpl.h @@ -44,7 +44,6 @@ public: WebIDBCursorImpl(WTF::PassRefPtr); virtual ~WebIDBCursorImpl(); - virtual unsigned short direction() const; virtual WebIDBKey key() const; virtual WebIDBKey primaryKey() const; virtual WebSerializedScriptValue value() const; -- 2.7.4