| Index: content/browser/indexed_db/indexed_db_transaction.cc
|
| diff --git a/content/browser/indexed_db/indexed_db_transaction.cc b/content/browser/indexed_db/indexed_db_transaction.cc
|
| index 975a14e2229834f3dc5b4284f361ea0a5aec3074..6c6d4c7518bfe17b8ab4d77c48556411e4942a40 100644
|
| --- a/content/browser/indexed_db/indexed_db_transaction.cc
|
| +++ b/content/browser/indexed_db/indexed_db_transaction.cc
|
| @@ -226,6 +226,13 @@ void IndexedDBTransaction::Start() {
|
| RunTasksIfStarted();
|
| }
|
|
|
| +void IndexedDBTransaction::GrabSnapshotThenStart() {
|
| + DCHECK(!backing_store_transaction_begun_);
|
| + transaction_->Begin();
|
| + backing_store_transaction_begun_ = true;
|
| + Start();
|
| +}
|
| +
|
| class BlobWriteCallbackImpl : public IndexedDBBackingStore::BlobWriteCallback {
|
| public:
|
| explicit BlobWriteCallbackImpl(
|
| @@ -363,10 +370,8 @@ leveldb::Status IndexedDBTransaction::CommitPhaseTwo() {
|
| "txn.id", id());
|
| callbacks_->OnComplete(*this);
|
| }
|
| - if (!pending_observers_.empty() && connection_) {
|
| + if (!pending_observers_.empty() && connection_)
|
| connection_->ActivatePendingObservers(std::move(pending_observers_));
|
| - pending_observers_.clear();
|
| - }
|
|
|
| database_->TransactionFinished(this, true);
|
| // RemoveTransaction will delete |this|.
|
| @@ -481,6 +486,7 @@ void IndexedDBTransaction::CloseOpenCursors() {
|
| void IndexedDBTransaction::AddPendingObserver(
|
| int32_t observer_id,
|
| const IndexedDBObserver::Options& options) {
|
| + DCHECK_NE(mode(), blink::WebIDBTransactionModeVersionChange);
|
| pending_observers_.push_back(base::MakeUnique<IndexedDBObserver>(
|
| observer_id, object_store_ids_, options));
|
| }
|
| @@ -509,13 +515,12 @@ void IndexedDBTransaction::AddObservation(
|
| it->second->observations.push_back(std::move(observation));
|
| }
|
|
|
| -void IndexedDBTransaction::RecordObserverForLastObservation(
|
| - int32_t connection_id,
|
| - int32_t observer_id) {
|
| +::indexed_db::mojom::ObserverChangesPtr*
|
| +IndexedDBTransaction::GetPendingChangesForConnection(int32_t connection_id) {
|
| auto it = connection_changes_map_.find(connection_id);
|
| - DCHECK(it != connection_changes_map_.end());
|
| - it->second->observation_index_map[observer_id].push_back(
|
| - it->second->observations.size() - 1);
|
| + if (it != connection_changes_map_.end())
|
| + return &it->second;
|
| + return nullptr;
|
| }
|
|
|
| } // namespace content
|
|
|