Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: storage/browser/blob/blob_reader.cc

Issue 1513783005: [Blob] Fix for resetting reader. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: storage/browser/blob/blob_reader.cc
diff --git a/storage/browser/blob/blob_reader.cc b/storage/browser/blob/blob_reader.cc
index 9c6375d5c7d3b2a782f4554068333d8f81bca628..fefcbf2b64320fd110126a5453c1fef9c7668948 100644
--- a/storage/browser/blob/blob_reader.cc
+++ b/storage/browser/blob/blob_reader.cc
@@ -13,7 +13,6 @@
#include "base/time/time.h"
#include "base/trace_event/trace_event.h"
#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
#include "net/disk_cache/disk_cache.h"
#include "storage/browser/blob/blob_data_handle.h"
#include "storage/browser/blob/blob_data_snapshot.h"
@@ -43,7 +42,6 @@ BlobReader::BlobReader(
base::SequencedTaskRunner* file_task_runner)
: file_stream_provider_(file_stream_provider.Pass()),
file_task_runner_(file_task_runner),
- net_error_(net::OK),
weak_factory_(this) {
if (blob_handle) {
blob_data_ = blob_handle->CreateSnapshot().Pass();
@@ -51,7 +49,6 @@ BlobReader::BlobReader(
}
BlobReader::~BlobReader() {
- STLDeleteValues(&index_to_reader_);
}
BlobReader::Status BlobReader::CalculateSize(
@@ -61,7 +58,7 @@ BlobReader::Status BlobReader::CalculateSize(
if (!blob_data_.get()) {
return ReportError(net::ERR_FILE_NOT_FOUND);
}
-
+ dirty_ = true;
net_error_ = net::OK;
total_size_ = 0;
const auto& items = blob_data_->items();
@@ -187,6 +184,7 @@ BlobReader::Status BlobReader::Read(net::IOBuffer* buffer,
void BlobReader::Kill() {
DeleteCurrentFileReader();
weak_factory_.InvalidateWeakPtrs();
+ read_buf_ = nullptr;
}
bool BlobReader::IsInMemory() const {
@@ -505,14 +503,14 @@ FileStreamReader* BlobReader::GetOrCreateFileReaderAtIndex(size_t index) {
return nullptr;
auto it = index_to_reader_.find(index);
if (it != index_to_reader_.end()) {
- DCHECK(it->second);
- return it->second;
+ DCHECK(it->second.get());
+ return it->second.get();
}
scoped_ptr<FileStreamReader> reader = CreateFileStreamReader(item, 0);
FileStreamReader* ret_value = reader.get();
if (!ret_value)
return nullptr;
- index_to_reader_[index] = reader.release();
+ index_to_reader_[index] = std::move(reader);
return ret_value;
}
@@ -551,19 +549,11 @@ scoped_ptr<FileStreamReader> BlobReader::CreateFileStreamReader(
void BlobReader::SetFileReaderAtIndex(size_t index,
scoped_ptr<FileStreamReader> reader) {
- auto found = index_to_reader_.find(current_item_index_);
- if (found != index_to_reader_.end()) {
- if (found->second) {
- delete found->second;
- }
- if (!reader.get()) {
- index_to_reader_.erase(found);
- return;
- }
- found->second = reader.release();
- } else if (reader.get()) {
- index_to_reader_[current_item_index_] = reader.release();
+ if (!reader.get()) {
+ index_to_reader_.erase(index);
+ return;
}
+ index_to_reader_[index] = std::move(reader);
}
} // namespace storage

Powered by Google App Engine
This is Rietveld 408576698