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

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

Issue 2516713002: [BlobStorage] Implementing disk. (Closed)
Patch Set: removed cleanup check, as mac doesn't run out event loops Created 4 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
« no previous file with comments | « storage/browser/blob/blob_memory_controller.h ('k') | storage/browser/blob/blob_reader.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: storage/browser/blob/blob_memory_controller.cc
diff --git a/storage/browser/blob/blob_memory_controller.cc b/storage/browser/blob/blob_memory_controller.cc
index 6cc6c3f291f72005a32f017737a24984faece169..f4a002fce198709621fa48b9224837b755bd62ac 100644
--- a/storage/browser/blob/blob_memory_controller.cc
+++ b/storage/browser/blob/blob_memory_controller.cc
@@ -5,6 +5,7 @@
#include "storage/browser/blob/blob_memory_controller.h"
#include <algorithm>
+#include <numeric>
#include "base/callback.h"
#include "base/callback_helpers.h"
@@ -45,6 +46,8 @@ File::Error CreateBlobDirectory(const FilePath& blob_storage_dir) {
base::CreateDirectoryAndGetError(blob_storage_dir, &error);
UMA_HISTOGRAM_ENUMERATION("Storage.Blob.CreateDirectoryResult", -error,
-File::FILE_ERROR_MAX);
+ DLOG_IF(ERROR, error != File::FILE_OK)
+ << "Error creating blob storage directory: " << error;
return error;
}
@@ -74,15 +77,6 @@ std::pair<std::vector<FileCreationInfo>, File::Error> CreateEmptyFiles(
return std::make_pair(std::vector<FileCreationInfo>(),
creation_info.error);
}
-
- // Grab the file info to get the "last modified" time and store the file.
- File::Info file_info;
- bool success = file.GetInfo(&file_info);
- creation_info.error = success ? File::FILE_OK : File::FILE_ERROR_FAILED;
- if (!success) {
- return std::make_pair(std::vector<FileCreationInfo>(),
- creation_info.error);
- }
creation_info.file = std::move(file);
result.push_back(std::move(creation_info));
@@ -134,6 +128,10 @@ FileCreationInfo CreateFileAndWriteItems(
if (bytes_written < 0)
break;
}
+ if (!file.Flush()) {
+ creation_info.error = File::FILE_ERROR_FAILED;
+ return creation_info;
+ }
File::Info info;
bool success = file.GetInfo(&info);
@@ -162,6 +160,10 @@ uint64_t GetTotalSizeAndFileSizes(
for (const auto& size_pair : file_id_to_sizes) {
file_sizes_output->push_back(size_pair.second);
}
+ DCHECK_EQ(std::accumulate(file_sizes_output->begin(),
+ file_sizes_output->end(), 0ull),
+ total_size_output)
+ << "Illegal builder configuration, temporary files must be totally used.";
return total_size_output;
}
@@ -298,7 +300,7 @@ class BlobMemoryController::FileQuotaAllocationTask
}
~FileQuotaAllocationTask() override {}
- void RunDoneCallback(bool success, std::vector<FileCreationInfo> file_info) {
+ void RunDoneCallback(std::vector<FileCreationInfo> file_info, bool success) {
// Make sure we clear the weak pointers we gave to the caller beforehand.
weak_factory_.InvalidateWeakPtrs();
@@ -313,7 +315,7 @@ class BlobMemoryController::FileQuotaAllocationTask
controller_->pending_file_quota_tasks_.erase(my_list_position_);
}
- done_callback_.Run(success, std::move(file_info));
+ done_callback_.Run(std::move(file_info), success);
}
base::WeakPtr<QuotaAllocationTask> GetWeakPtr() {
@@ -341,7 +343,7 @@ class BlobMemoryController::FileQuotaAllocationTask
for (size_t i = 0; i < files.size(); i++) {
files[i].file_reference = std::move(references[i]);
}
- RunDoneCallback(true, std::move(files));
+ RunDoneCallback(std::move(files), true);
}
// The my_list_position_ iterator is stored so that we can remove ourself
@@ -379,6 +381,7 @@ BlobMemoryController::~BlobMemoryController() {}
void BlobMemoryController::DisableFilePaging(base::File::Error reason) {
UMA_HISTOGRAM_ENUMERATION("Storage.Blob.PagingDisabled", -reason,
-File::FILE_ERROR_MAX);
+ DLOG(ERROR) << "Blob storage paging disabled, reason: " << reason;
file_paging_enabled_ = false;
in_flight_memory_used_ = 0;
items_paging_to_file_.clear();
@@ -398,7 +401,7 @@ void BlobMemoryController::DisableFilePaging(base::File::Error reason) {
memory_request->RunDoneCallback(false);
}
for (auto& file_request : old_file_tasks) {
- file_request->RunDoneCallback(false, std::vector<FileCreationInfo>());
+ file_request->RunDoneCallback(std::vector<FileCreationInfo>(), false);
}
}
« no previous file with comments | « storage/browser/blob/blob_memory_controller.h ('k') | storage/browser/blob/blob_reader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698