Index: Source/modules/indexeddb/IDBDatabaseBackendImpl.cpp |
diff --git a/Source/modules/indexeddb/IDBDatabaseBackendImpl.cpp b/Source/modules/indexeddb/IDBDatabaseBackendImpl.cpp |
index 57d9567d07c228c1dd51520e507518e883ef37ce..7cd6d9c3e9e62ff416a951db38194dbc0fce656b 100644 |
--- a/Source/modules/indexeddb/IDBDatabaseBackendImpl.cpp |
+++ b/Source/modules/indexeddb/IDBDatabaseBackendImpl.cpp |
@@ -41,6 +41,8 @@ |
namespace WebCore { |
+DEFINE_GC_MAP(IDBDatabaseBackendInterface); |
+ |
class CreateObjectStoreOperation : public IDBTransactionBackendImpl::Operation { |
public: |
static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBBackingStore> backingStore, const IDBObjectStoreMetadata& objectStoreMetadata) |
@@ -79,13 +81,13 @@ private: |
class IDBDatabaseBackendImpl::VersionChangeOperation : public IDBTransactionBackendImpl::Operation { |
public: |
- static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t transactionId, int64_t version, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks) |
+ static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBackendImpl* database, int64_t transactionId, int64_t version, PassRefPtr<IDBCallbacks> callbacks, IDBDatabaseCallbacks* databaseCallbacks) |
{ |
return adoptPtr(new VersionChangeOperation(database, transactionId, version, callbacks, databaseCallbacks)); |
} |
virtual void perform(IDBTransactionBackendImpl*); |
private: |
- VersionChangeOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t transactionId, int64_t version, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks) |
+ VersionChangeOperation(IDBDatabaseBackendImpl* database, int64_t transactionId, int64_t version, PassRefPtr<IDBCallbacks> callbacks, IDBDatabaseCallbacks* databaseCallbacks) |
: m_database(database) |
, m_transactionId(transactionId) |
, m_version(version) |
@@ -94,65 +96,65 @@ private: |
{ |
} |
- RefPtr<IDBDatabaseBackendImpl> m_database; |
+ Persistent<IDBDatabaseBackendImpl> m_database; |
int64_t m_transactionId; |
int64_t m_version; |
RefPtr<IDBCallbacks> m_callbacks; |
- RefPtr<IDBDatabaseCallbacks> m_databaseCallbacks; |
+ Persistent<IDBDatabaseCallbacks> m_databaseCallbacks; |
}; |
class CreateObjectStoreAbortOperation : public IDBTransactionBackendImpl::Operation { |
public: |
- static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId) |
+ static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBackendImpl* database, int64_t objectStoreId) |
{ |
return adoptPtr(new CreateObjectStoreAbortOperation(database, objectStoreId)); |
} |
virtual void perform(IDBTransactionBackendImpl*); |
private: |
- CreateObjectStoreAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId) |
+ CreateObjectStoreAbortOperation(IDBDatabaseBackendImpl* database, int64_t objectStoreId) |
: m_database(database) |
, m_objectStoreId(objectStoreId) |
{ |
} |
- const RefPtr<IDBDatabaseBackendImpl> m_database; |
+ const Persistent<IDBDatabaseBackendImpl> m_database; |
const int64_t m_objectStoreId; |
}; |
class DeleteObjectStoreAbortOperation : public IDBTransactionBackendImpl::Operation { |
public: |
- static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBDatabaseBackendImpl> database, const IDBObjectStoreMetadata& objectStore) |
+ static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBackendImpl* database, const IDBObjectStoreMetadata& objectStore) |
{ |
return adoptPtr(new DeleteObjectStoreAbortOperation(database, objectStore)); |
} |
virtual void perform(IDBTransactionBackendImpl*); |
private: |
- DeleteObjectStoreAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, const IDBObjectStoreMetadata& objectStoreMetadata) |
+ DeleteObjectStoreAbortOperation(IDBDatabaseBackendImpl* database, const IDBObjectStoreMetadata& objectStoreMetadata) |
: m_database(database) |
, m_objectStoreMetadata(objectStoreMetadata) |
{ |
} |
- RefPtr<IDBDatabaseBackendImpl> m_database; |
+ Persistent<IDBDatabaseBackendImpl> m_database; |
IDBObjectStoreMetadata m_objectStoreMetadata; |
}; |
class IDBDatabaseBackendImpl::VersionChangeAbortOperation : public IDBTransactionBackendImpl::Operation { |
public: |
- static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBDatabaseBackendImpl> database, const String& previousVersion, int64_t previousIntVersion) |
+ static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBackendImpl* database, const String& previousVersion, int64_t previousIntVersion) |
{ |
return adoptPtr(new VersionChangeAbortOperation(database, previousVersion, previousIntVersion)); |
} |
virtual void perform(IDBTransactionBackendImpl*); |
private: |
- VersionChangeAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, const String& previousVersion, int64_t previousIntVersion) |
+ VersionChangeAbortOperation(IDBDatabaseBackendImpl* database, const String& previousVersion, int64_t previousIntVersion) |
: m_database(database) |
, m_previousVersion(previousVersion) |
, m_previousIntVersion(previousIntVersion) |
{ |
} |
- RefPtr<IDBDatabaseBackendImpl> m_database; |
+ Persistent<IDBDatabaseBackendImpl> m_database; |
String m_previousVersion; |
int64_t m_previousIntVersion; |
}; |
@@ -199,40 +201,40 @@ private: |
class CreateIndexAbortOperation : public IDBTransactionBackendImpl::Operation { |
public: |
- static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId, int64_t indexId) |
+ static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBackendImpl* database, int64_t objectStoreId, int64_t indexId) |
{ |
return adoptPtr(new CreateIndexAbortOperation(database, objectStoreId, indexId)); |
} |
virtual void perform(IDBTransactionBackendImpl*); |
private: |
- CreateIndexAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId, int64_t indexId) |
+ CreateIndexAbortOperation(IDBDatabaseBackendImpl* database, int64_t objectStoreId, int64_t indexId) |
: m_database(database) |
, m_objectStoreId(objectStoreId) |
, m_indexId(indexId) |
{ |
} |
- const RefPtr<IDBDatabaseBackendImpl> m_database; |
+ const Persistent<IDBDatabaseBackendImpl> m_database; |
const int64_t m_objectStoreId; |
const int64_t m_indexId; |
}; |
class DeleteIndexAbortOperation : public IDBTransactionBackendImpl::Operation { |
public: |
- static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
+ static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(IDBDatabaseBackendImpl* database, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
{ |
return adoptPtr(new DeleteIndexAbortOperation(database, objectStoreId, indexMetadata)); |
} |
virtual void perform(IDBTransactionBackendImpl*); |
private: |
- DeleteIndexAbortOperation(PassRefPtr<IDBDatabaseBackendImpl> database, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
+ DeleteIndexAbortOperation(IDBDatabaseBackendImpl* database, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) |
: m_database(database) |
, m_objectStoreId(objectStoreId) |
, m_indexMetadata(indexMetadata) |
{ |
} |
- const RefPtr<IDBDatabaseBackendImpl> m_database; |
+ const Persistent<IDBDatabaseBackendImpl> m_database; |
const int64_t m_objectStoreId; |
const IDBIndexMetadata m_indexMetadata; |
}; |
@@ -425,17 +427,17 @@ private: |
class IDBDatabaseBackendImpl::PendingOpenCall { |
public: |
- static PassOwnPtr<PendingOpenCall> create(PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks, int64_t transactionId, int64_t version) |
+ static PassOwnPtr<PendingOpenCall> create(PassRefPtr<IDBCallbacks> callbacks, IDBDatabaseCallbacks* databaseCallbacks, int64_t transactionId, int64_t version) |
{ |
return adoptPtr(new PendingOpenCall(callbacks, databaseCallbacks, transactionId, version)); |
} |
PassRefPtr<IDBCallbacks> callbacks() { return m_callbacks; } |
- PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks() { return m_databaseCallbacks; } |
+ IDBDatabaseCallbacks* databaseCallbacks() { return m_databaseCallbacks; } |
int64_t version() { return m_version; } |
int64_t transactionId() const { return m_transactionId; } |
private: |
- PendingOpenCall(PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks, int64_t transactionId, int64_t version) |
+ PendingOpenCall(PassRefPtr<IDBCallbacks> callbacks, IDBDatabaseCallbacks* databaseCallbacks, int64_t transactionId, int64_t version) |
: m_callbacks(callbacks) |
, m_databaseCallbacks(databaseCallbacks) |
, m_version(version) |
@@ -443,7 +445,7 @@ private: |
{ |
} |
RefPtr<IDBCallbacks> m_callbacks; |
- RefPtr<IDBDatabaseCallbacks> m_databaseCallbacks; |
+ Persistent<IDBDatabaseCallbacks> m_databaseCallbacks; |
int64_t m_version; |
const int64_t m_transactionId; |
}; |
@@ -464,12 +466,12 @@ private: |
RefPtr<IDBCallbacks> m_callbacks; |
}; |
-PassRefPtr<IDBDatabaseBackendImpl> IDBDatabaseBackendImpl::create(const String& name, IDBBackingStore* database, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier) |
+IDBDatabaseBackendImpl* IDBDatabaseBackendImpl::create(const String& name, IDBBackingStore* database, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier) |
{ |
- RefPtr<IDBDatabaseBackendImpl> backend = adoptRef(new IDBDatabaseBackendImpl(name, database, factory, uniqueIdentifier)); |
+ IDBDatabaseBackendImpl* backend = new IDBDatabaseBackendImpl(name, database, factory, uniqueIdentifier); |
if (!backend->openInternal()) |
return 0; |
- return backend.release(); |
+ return backend; |
} |
namespace { |
@@ -1172,18 +1174,17 @@ void IDBDatabaseBackendImpl::processPendingCalls() |
} |
} |
-void IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, PassRefPtr<IDBDatabaseCallbacks> callbacks, const Vector<int64_t>& objectStoreIds, unsigned short mode) |
+void IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, IDBDatabaseCallbacks* callbacks, const Vector<int64_t>& objectStoreIds, unsigned short mode) |
{ |
RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::create(transactionId, callbacks, objectStoreIds, static_cast<IndexedDB::TransactionMode>(mode), this); |
ASSERT(!m_transactions.contains(transactionId)); |
m_transactions.add(transactionId, transaction.get()); |
} |
-void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> prpCallbacks, PassRefPtr<IDBDatabaseCallbacks> prpDatabaseCallbacks, int64_t transactionId, int64_t version) |
+void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> prpCallbacks, IDBDatabaseCallbacks* databaseCallbacks, int64_t transactionId, int64_t version) |
{ |
ASSERT(m_backingStore.get()); |
RefPtr<IDBCallbacks> callbacks = prpCallbacks; |
- RefPtr<IDBDatabaseCallbacks> databaseCallbacks = prpDatabaseCallbacks; |
if (!m_pendingDeleteCalls.isEmpty() || m_runningVersionChangeTransaction) { |
m_pendingOpenCalls.append(PendingOpenCall::create(callbacks, databaseCallbacks, transactionId, version)); |
@@ -1220,7 +1221,7 @@ void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> prpCallback |
if (version == IDBDatabaseMetadata::NoIntVersion) { |
if (!isNewDatabase) { |
- m_databaseCallbacksSet.add(RefPtr<IDBDatabaseCallbacks>(databaseCallbacks)); |
+ m_databaseCallbacksSet.add(databaseCallbacks); |
callbacks->onSuccess(this, this->metadata()); |
return; |
} |
@@ -1241,10 +1242,9 @@ void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> prpCallback |
callbacks->onSuccess(this, this->metadata()); |
} |
-void IDBDatabaseBackendImpl::runIntVersionChangeTransaction(PassRefPtr<IDBCallbacks> prpCallbacks, PassRefPtr<IDBDatabaseCallbacks> prpDatabaseCallbacks, int64_t transactionId, int64_t requestedVersion) |
+void IDBDatabaseBackendImpl::runIntVersionChangeTransaction(PassRefPtr<IDBCallbacks> prpCallbacks, IDBDatabaseCallbacks* databaseCallbacks, int64_t transactionId, int64_t requestedVersion) |
{ |
RefPtr<IDBCallbacks> callbacks = prpCallbacks; |
- RefPtr<IDBDatabaseCallbacks> databaseCallbacks = prpDatabaseCallbacks; |
ASSERT(callbacks); |
for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.begin(); it != m_databaseCallbacksSet.end(); ++it) { |
// Front end ensures the event is not fired at connections that have closePending set. |
@@ -1314,9 +1314,8 @@ void IDBDatabaseBackendImpl::deleteDatabaseFinal(PassRefPtr<IDBCallbacks> callba |
callbacks->onSuccess(); |
} |
-void IDBDatabaseBackendImpl::close(PassRefPtr<IDBDatabaseCallbacks> prpCallbacks) |
+void IDBDatabaseBackendImpl::close(IDBDatabaseCallbacks* callbacks) |
{ |
- RefPtr<IDBDatabaseCallbacks> callbacks = prpCallbacks; |
ASSERT(m_databaseCallbacksSet.contains(callbacks)); |
// Close outstanding transactions from the closing connection. This can not happen |
@@ -1385,4 +1384,12 @@ void IDBDatabaseBackendImpl::VersionChangeAbortOperation::perform(IDBTransaction |
m_database->m_metadata.intVersion = m_previousIntVersion; |
} |
+void IDBDatabaseBackendImpl::trace(Visitor* visitor) const |
+{ |
+ visitor->visit(m_factory); |
Mads Ager (chromium)
2013/11/28 10:24:46
These are now called |trace|.
haraken
2013/12/02 09:13:27
Done.
|
+ for (DatabaseCallbacksSet::const_iterator it = m_databaseCallbacksSet.begin(); it != m_databaseCallbacksSet.end(); ++it) { |
Mads Ager (chromium)
2013/11/28 10:24:46
We should extend the visitor to understand ListHas
haraken
2013/12/02 09:13:27
Done. Please double-check a change to Visitor.h :)
|
+ visitor->visit(*it); |
+ } |
+} |
+ |
} // namespace WebCore |