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 c27216b20bd7527d79d90b5035b2762f056a90cc..0f6c85fb43d874ce563a3a086cccce55319f667b 100644 |
--- a/content/browser/indexed_db/indexed_db_backing_store.cc |
+++ b/content/browser/indexed_db/indexed_db_backing_store.cc |
@@ -2678,13 +2678,14 @@ leveldb::Status IndexedDBBackingStore::Transaction::GetBlobInfoForRecord( |
NOTREACHED(); |
return InternalInconsistencyStatus(); |
} |
- scoped_ptr<LevelDBIterator> it = transaction()->CreateIterator(); |
std::string encoded_key = blob_entry_key.Encode(); |
- leveldb::Status s = it->Seek(encoded_key); |
+ bool found; |
+ std::string encoded_value; |
+ leveldb::Status s = transaction()->Get(encoded_key, &encoded_value, &found); |
if (!s.ok()) |
return s; |
- if (it->IsValid() && CompareKeys(it->Key(), encoded_key) == 0) { |
- if (!DecodeBlobData(it->Value().as_string(), &value->blob_info)) { |
+ if (found) { |
+ if (!DecodeBlobData(encoded_value, &value->blob_info)) { |
INTERNAL_READ_ERROR(GET_BLOB_INFO_FOR_RECORD); |
return InternalInconsistencyStatus(); |
} |
@@ -3981,7 +3982,6 @@ bool IndexedDBBackingStore::Transaction::CollectBlobFilesToRemove() { |
// Look up all old files to remove as part of the transaction, store their |
// names in blobs_to_remove_, and remove their old blob data entries. |
if (iter != blob_change_map_.end()) { |
- scoped_ptr<LevelDBIterator> db_iter = transaction_->CreateIterator(); |
for (; iter != blob_change_map_.end(); ++iter) { |
BlobEntryKey blob_entry_key; |
StringPiece key_piece(iter->second->key()); |
@@ -3996,11 +3996,13 @@ bool IndexedDBBackingStore::Transaction::CollectBlobFilesToRemove() { |
else |
DCHECK_EQ(database_id_, blob_entry_key.database_id()); |
std::string blob_entry_key_bytes = blob_entry_key.Encode(); |
- db_iter->Seek(blob_entry_key_bytes); |
- if (db_iter->IsValid() && |
- !CompareKeys(db_iter->Key(), blob_entry_key_bytes)) { |
+ bool found; |
+ std::string blob_entry_value_bytes; |
+ leveldb::Status s = transaction_->Get( |
+ blob_entry_key_bytes, &blob_entry_value_bytes, &found); |
+ if (s.ok() && found) { |
std::vector<IndexedDBBlobInfo> blob_info; |
- if (!DecodeBlobData(db_iter->Value().as_string(), &blob_info)) { |
+ if (!DecodeBlobData(blob_entry_value_bytes, &blob_info)) { |
INTERNAL_READ_ERROR_UNTESTED(TRANSACTION_COMMIT_METHOD); |
transaction_ = NULL; |
return false; |