Index: Source/modules/indexeddb/IDBRequest.cpp |
diff --git a/Source/modules/indexeddb/IDBRequest.cpp b/Source/modules/indexeddb/IDBRequest.cpp |
index 86ae6c31d5582c69f8fd98cdd384fef00de728e5..f675ee87f9f3d097f99b01f57e9ce4fa0ac5c381 100644 |
--- a/Source/modules/indexeddb/IDBRequest.cpp |
+++ b/Source/modules/indexeddb/IDBRequest.cpp |
@@ -47,24 +47,24 @@ namespace WebCore { |
DEFINE_GC_INFO(IDBCallbacks); |
-PassRefPtr<IDBRequest> IDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, IDBTransaction* transaction) |
+IDBRequest* IDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, IDBTransaction* transaction) |
{ |
- RefPtr<IDBRequest> request(adoptRef(new IDBRequest(context, source, IDBDatabaseBackendInterface::NormalTask, transaction))); |
+ IDBRequest* request = new IDBRequest(context, source, IDBDatabaseBackendInterface::NormalTask, transaction); |
request->suspendIfNeeded(); |
// Requests associated with IDBFactory (open/deleteDatabase/getDatabaseNames) are not associated with transactions. |
if (transaction) |
- transaction->registerRequest(request.get()); |
- return request.release(); |
+ transaction->registerRequest(request); |
+ return request; |
} |
-PassRefPtr<IDBRequest> IDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, IDBDatabaseBackendInterface::TaskType taskType, IDBTransaction* transaction) |
+IDBRequest* IDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, IDBDatabaseBackendInterface::TaskType taskType, IDBTransaction* transaction) |
{ |
- RefPtr<IDBRequest> request(adoptRef(new IDBRequest(context, source, taskType, transaction))); |
+ IDBRequest* request = new IDBRequest(context, source, taskType, transaction); |
request->suspendIfNeeded(); |
// Requests associated with IDBFactory (open/deleteDatabase/getDatabaseNames) are not associated with transactions. |
if (transaction) |
- transaction->registerRequest(request.get()); |
- return request.release(); |
+ transaction->registerRequest(request); |
+ return request; |
} |
IDBRequest::IDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, IDBDatabaseBackendInterface::TaskType taskType, IDBTransaction* transaction) |
@@ -171,9 +171,6 @@ void IDBRequest::abort() |
if (m_readyState == DONE) |
return; |
- // Enqueued events may be the only reference to this object. |
- RefPtr<IDBRequest> self(this); |
- |
EventQueue* eventQueue = scriptExecutionContext()->eventQueue(); |
for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { |
bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get()); |
@@ -575,4 +572,10 @@ EventTargetData* IDBRequest::ensureEventTargetData() |
return &m_eventTargetData; |
} |
+void IDBRequest::trace(Visitor* visitor) |
+{ |
+ IDBCallbacks::trace(visitor); |
+} |
+ |
+ |
} // namespace WebCore |