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

Side by Side Diff: storage/browser/blob/blob_reader.cc

Issue 2389583002: Remove stl_util's deletion functions from storage/. (Closed)
Patch Set: nits Created 4 years, 2 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "storage/browser/blob/blob_reader.h" 5 #include "storage/browser/blob/blob_reader.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <limits> 11 #include <limits>
12 #include <memory> 12 #include <memory>
13 #include <utility> 13 #include <utility>
14 14
15 #include "base/bind.h" 15 #include "base/bind.h"
16 #include "base/callback_helpers.h" 16 #include "base/callback_helpers.h"
17 #include "base/sequenced_task_runner.h" 17 #include "base/sequenced_task_runner.h"
18 #include "base/stl_util.h"
19 #include "base/time/time.h" 18 #include "base/time/time.h"
20 #include "base/trace_event/trace_event.h" 19 #include "base/trace_event/trace_event.h"
21 #include "net/base/io_buffer.h" 20 #include "net/base/io_buffer.h"
22 #include "net/base/net_errors.h" 21 #include "net/base/net_errors.h"
23 #include "net/disk_cache/disk_cache.h" 22 #include "net/disk_cache/disk_cache.h"
24 #include "storage/browser/blob/blob_data_handle.h" 23 #include "storage/browser/blob/blob_data_handle.h"
25 #include "storage/browser/blob/blob_data_snapshot.h" 24 #include "storage/browser/blob/blob_data_snapshot.h"
26 #include "storage/browser/fileapi/file_stream_reader.h" 25 #include "storage/browser/fileapi/file_stream_reader.h"
27 #include "storage/browser/fileapi/file_system_context.h" 26 #include "storage/browser/fileapi/file_system_context.h"
28 #include "storage/browser/fileapi/file_system_url.h" 27 #include "storage/browser/fileapi/file_system_url.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 : file_stream_provider_(std::move(file_stream_provider)), 68 : file_stream_provider_(std::move(file_stream_provider)),
70 file_task_runner_(file_task_runner), 69 file_task_runner_(file_task_runner),
71 net_error_(net::OK), 70 net_error_(net::OK),
72 weak_factory_(this) { 71 weak_factory_(this) {
73 if (blob_handle && !blob_handle->IsBroken()) { 72 if (blob_handle && !blob_handle->IsBroken()) {
74 blob_handle_.reset(new BlobDataHandle(*blob_handle)); 73 blob_handle_.reset(new BlobDataHandle(*blob_handle));
75 } 74 }
76 } 75 }
77 76
78 BlobReader::~BlobReader() { 77 BlobReader::~BlobReader() {
79 base::STLDeleteValues(&index_to_reader_);
80 } 78 }
81 79
82 BlobReader::Status BlobReader::CalculateSize( 80 BlobReader::Status BlobReader::CalculateSize(
83 const net::CompletionCallback& done) { 81 const net::CompletionCallback& done) {
84 DCHECK(!total_size_calculated_); 82 DCHECK(!total_size_calculated_);
85 DCHECK(size_callback_.is_null()); 83 DCHECK(size_callback_.is_null());
86 if (!blob_handle_.get() || blob_handle_->IsBroken()) { 84 if (!blob_handle_.get() || blob_handle_->IsBroken()) {
87 return ReportError(net::ERR_FILE_NOT_FOUND); 85 return ReportError(net::ERR_FILE_NOT_FOUND);
88 } 86 }
89 if (blob_handle_->IsBeingBuilt()) { 87 if (blob_handle_->IsBeingBuilt()) {
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 611
614 FileStreamReader* BlobReader::GetOrCreateFileReaderAtIndex(size_t index) { 612 FileStreamReader* BlobReader::GetOrCreateFileReaderAtIndex(size_t index) {
615 const auto& items = blob_data_->items(); 613 const auto& items = blob_data_->items();
616 DCHECK_LT(index, items.size()); 614 DCHECK_LT(index, items.size());
617 const BlobDataItem& item = *items.at(index); 615 const BlobDataItem& item = *items.at(index);
618 if (!IsFileType(item.type())) 616 if (!IsFileType(item.type()))
619 return nullptr; 617 return nullptr;
620 auto it = index_to_reader_.find(index); 618 auto it = index_to_reader_.find(index);
621 if (it != index_to_reader_.end()) { 619 if (it != index_to_reader_.end()) {
622 DCHECK(it->second); 620 DCHECK(it->second);
623 return it->second; 621 return it->second.get();
624 } 622 }
625 std::unique_ptr<FileStreamReader> reader = CreateFileStreamReader(item, 0); 623 std::unique_ptr<FileStreamReader> reader = CreateFileStreamReader(item, 0);
626 FileStreamReader* ret_value = reader.get(); 624 FileStreamReader* ret_value = reader.get();
627 if (!ret_value) 625 if (!ret_value)
628 return nullptr; 626 return nullptr;
629 index_to_reader_[index] = reader.release(); 627 index_to_reader_[index] = std::move(reader);
630 return ret_value; 628 return ret_value;
631 } 629 }
632 630
633 std::unique_ptr<FileStreamReader> BlobReader::CreateFileStreamReader( 631 std::unique_ptr<FileStreamReader> BlobReader::CreateFileStreamReader(
634 const BlobDataItem& item, 632 const BlobDataItem& item,
635 uint64_t additional_offset) { 633 uint64_t additional_offset) {
636 DCHECK(IsFileType(item.type())); 634 DCHECK(IsFileType(item.type()));
637 635
638 switch (item.type()) { 636 switch (item.type()) {
639 case DataElement::TYPE_FILE: 637 case DataElement::TYPE_FILE:
(...skipping 15 matching lines...) Expand all
655 break; 653 break;
656 } 654 }
657 655
658 NOTREACHED(); 656 NOTREACHED();
659 return nullptr; 657 return nullptr;
660 } 658 }
661 659
662 void BlobReader::SetFileReaderAtIndex( 660 void BlobReader::SetFileReaderAtIndex(
663 size_t index, 661 size_t index,
664 std::unique_ptr<FileStreamReader> reader) { 662 std::unique_ptr<FileStreamReader> reader) {
665 auto found = index_to_reader_.find(current_item_index_); 663 if (reader)
666 if (found != index_to_reader_.end()) { 664 index_to_reader_[index] = std::move(reader);
667 if (found->second) { 665 else
668 delete found->second; 666 index_to_reader_.erase(index);
669 }
670 if (!reader.get()) {
671 index_to_reader_.erase(found);
672 return;
673 }
674 found->second = reader.release();
675 } else if (reader.get()) {
676 index_to_reader_[current_item_index_] = reader.release();
677 }
678 } 667 }
679 668
680 } // namespace storage 669 } // namespace storage
OLDNEW
« no previous file with comments | « storage/browser/blob/blob_reader.h ('k') | storage/browser/fileapi/copy_or_move_operation_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698