Index: Source/modules/indexeddb/IDBCursor.h |
diff --git a/Source/modules/indexeddb/IDBCursor.h b/Source/modules/indexeddb/IDBCursor.h |
index cf26440f5e2b0ce4ec1294ce7fd3e5639c27889d..b56cde76bc059f454163ebb98daaafb442e6d95e 100644 |
--- a/Source/modules/indexeddb/IDBCursor.h |
+++ b/Source/modules/indexeddb/IDBCursor.h |
@@ -46,7 +46,7 @@ class IDBRequest; |
class ScriptExecutionContext; |
class SharedBuffer; |
-class IDBCursor : public ScriptWrappable, public RefCounted<IDBCursor> { |
+class IDBCursor : public ScriptWrappable, public WTF::RefCountedBase { |
public: |
static const AtomicString& directionNext(); |
static const AtomicString& directionNextUnique(); |
@@ -80,6 +80,15 @@ public: |
void close(); |
void setValueReady(PassRefPtr<IDBKey>, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SharedBuffer> value); |
PassRefPtr<IDBKey> idbPrimaryKey() { return m_primaryKey; } |
+ IDBRequest* request() { return m_request.get(); } |
+ |
+ void deref() |
alecflett
2013/09/06 17:56:35
can/should be OVERRIDE?
jsbell
2013/09/06 18:07:43
Nope, not here. T::deref() is required by the RefP
|
+ { |
+ if (derefBase()) |
+ delete this; |
+ else if (hasOneRef()) |
+ checkForReferenceCycle(); |
+ } |
protected: |
IDBCursor(PassRefPtr<IDBCursorBackendInterface>, IndexedDB::CursorDirection, IDBRequest*, IDBAny* source, IDBTransaction*); |
@@ -88,6 +97,7 @@ protected: |
private: |
PassRefPtr<IDBObjectStore> effectiveObjectStore(); |
+ void checkForReferenceCycle(); |
bool isDeleted() const; |
RefPtr<IDBCursorBackendInterface> m_backend; |
@@ -95,7 +105,6 @@ private: |
const IndexedDB::CursorDirection m_direction; |
RefPtr<IDBAny> m_source; |
RefPtr<IDBTransaction> m_transaction; |
- IDBTransaction::OpenCursorNotifier m_transactionNotifier; |
bool m_gotValue; |
bool m_keyDirty; |
bool m_primaryKeyDirty; |