| Index: content/browser/indexed_db/indexed_db_database.cc
|
| diff --git a/content/browser/indexed_db/indexed_db_database.cc b/content/browser/indexed_db/indexed_db_database.cc
|
| index 97f47a04d14cd726d5f86b16f2b6c7a9502a7995..22821eae381118f369be5b58e5a5f19ff186e29f 100644
|
| --- a/content/browser/indexed_db/indexed_db_database.cc
|
| +++ b/content/browser/indexed_db/indexed_db_database.cc
|
| @@ -541,6 +541,26 @@ void IndexedDBDatabase::Abort(int64_t transaction_id,
|
| transaction->Abort(error);
|
| }
|
|
|
| +void IndexedDBDatabase::AddPendingObserver(int64_t transaction_id,
|
| + int64_t observer_id) {
|
| + IndexedDBTransaction* transaction = GetTransaction(transaction_id);
|
| + if (!transaction)
|
| + return;
|
| + transaction->AddPendingObserver(observer_id);
|
| +}
|
| +
|
| +void IndexedDBDatabase::RemovePendingObservers(
|
| + IndexedDBConnection* connection,
|
| + const std::vector<int32_t>& pending_observer_ids) {
|
| + TransactionMap::iterator it;
|
| + for (it = transactions_.begin(); it != transactions_.end(); it++) {
|
| + // Avoid call to RemovePendingObservers for transactions on other
|
| + // connections.
|
| + if (it->second->getConnection() == connection)
|
| + it->second->RemovePendingObservers(pending_observer_ids);
|
| + }
|
| +}
|
| +
|
| void IndexedDBDatabase::GetAll(int64_t transaction_id,
|
| int64_t object_store_id,
|
| int64_t index_id,
|
| @@ -1665,7 +1685,7 @@ void IndexedDBDatabase::CreateTransaction(
|
| // The transaction will add itself to this database's coordinator, which
|
| // manages the lifetime of the object.
|
| TransactionCreated(IndexedDBClassFactory::Get()->CreateIndexedDBTransaction(
|
| - transaction_id, connection->callbacks(),
|
| + transaction_id, connection->weakPtr(), connection->callbacks(),
|
| std::set<int64_t>(object_store_ids.begin(), object_store_ids.end()), mode,
|
| this, new IndexedDBBackingStore::Transaction(backing_store_.get())));
|
| }
|
|
|