Index: content/browser/indexed_db/indexed_db_backing_store.cc |
diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc |
index 0db7b6141b3d341fc3a0ad0766afc9f011721146..d50584c4eab1bc048c9b774d53369925f67053f1 100644 |
--- a/content/browser/indexed_db/indexed_db_backing_store.cc |
+++ b/content/browser/indexed_db/indexed_db_backing_store.cc |
@@ -2242,8 +2242,7 @@ class IndexedDBBackingStore::Transaction::ChainedBlobWriterImpl |
: waiting_for_callback_(false), |
database_id_(database_id), |
backing_store_(backing_store), |
- callback_(callback), |
- aborted_(false) { |
+ callback_(callback) { |
blobs_.swap(*blobs); |
iter_ = blobs_.begin(); |
backing_store->task_runner()->PostTask( |
@@ -2261,8 +2260,8 @@ class IndexedDBBackingStore::Transaction::ChainedBlobWriterImpl |
if (delegate_.get()) // Only present for Blob, not File. |
content::BrowserThread::DeleteSoon( |
content::BrowserThread::IO, FROM_HERE, delegate_.release()); |
- if (aborted_) { |
- self_ref_ = NULL; |
+ if (aborted_self_ref_.get()) { |
+ aborted_self_ref_ = NULL; |
return; |
} |
if (iter_->size() != -1 && iter_->size() != bytes_written) |
@@ -2278,38 +2277,36 @@ class IndexedDBBackingStore::Transaction::ChainedBlobWriterImpl |
void Abort() override { |
if (!waiting_for_callback_) |
return; |
- self_ref_ = this; |
- aborted_ = true; |
+ aborted_self_ref_ = this; |
} |
private: |
- ~ChainedBlobWriterImpl() override {} |
+ ~ChainedBlobWriterImpl() override { DCHECK(!waiting_for_callback_); } |
void WriteNextFile() { |
DCHECK(!waiting_for_callback_); |
- DCHECK(!aborted_); |
+ DCHECK(!aborted_self_ref_.get()); |
if (iter_ == blobs_.end()) { |
- DCHECK(!self_ref_.get()); |
callback_->Run(true); |
return; |
} else { |
+ waiting_for_callback_ = true; |
if (!backing_store_->WriteBlobFile(database_id_, *iter_, this)) { |
+ waiting_for_callback_ = false; |
callback_->Run(false); |
return; |
} |
- waiting_for_callback_ = true; |
} |
} |
bool waiting_for_callback_; |
- scoped_refptr<ChainedBlobWriterImpl> self_ref_; |
+ scoped_refptr<ChainedBlobWriterImpl> aborted_self_ref_; |
WriteDescriptorVec blobs_; |
WriteDescriptorVec::const_iterator iter_; |
int64 database_id_; |
IndexedDBBackingStore* backing_store_; |
scoped_refptr<IndexedDBBackingStore::BlobWriteCallback> callback_; |
scoped_ptr<FileWriterDelegate> delegate_; |
- bool aborted_; |
DISALLOW_COPY_AND_ASSIGN(ChainedBlobWriterImpl); |
}; |