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

Unified Diff: content/child/blob_storage/blob_transport_controller.cc

Issue 2550113003: Revert of [BlobStorage] Implementing disk. (Closed)
Patch Set: 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 | « content/browser/blob_storage/chrome_blob_storage_context.cc ('k') | content/test/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/blob_storage/blob_transport_controller.cc
diff --git a/content/child/blob_storage/blob_transport_controller.cc b/content/child/blob_storage/blob_transport_controller.cc
index 1b01792079edee0775759258403c09ecddfb653d..5db46a24726647bcf614777b5eb9322ae038a877 100644
--- a/content/child/blob_storage/blob_transport_controller.cc
+++ b/content/child/blob_storage/blob_transport_controller.cc
@@ -90,23 +90,27 @@
return true;
}
-bool WriteSingleRequestToDisk(const BlobConsolidation* consolidation,
- const BlobItemBytesRequest& request,
- File* file) {
+base::Optional<base::Time> WriteSingleRequestToDisk(
+ const BlobConsolidation* consolidation,
+ const BlobItemBytesRequest& request,
+ File* file) {
if (!file->IsValid())
- return false;
+ return base::nullopt;
int64_t seek_distance = file->Seek(
File::FROM_BEGIN, base::checked_cast<int64_t>(request.handle_offset));
bool seek_failed = seek_distance < 0;
UMA_HISTOGRAM_BOOLEAN("Storage.Blob.RendererFileSeekFailed", seek_failed);
- if (seek_failed)
- return false;
+ if (seek_failed) {
+ return base::nullopt;
+ }
BlobConsolidation::ReadStatus status = consolidation->VisitMemory(
request.renderer_item_index, request.renderer_item_offset, request.size,
base::Bind(&WriteSingleChunk, file));
if (status != BlobConsolidation::ReadStatus::OK)
- return false;
- return true;
+ return base::nullopt;
+ File::Info info;
+ file->GetInfo(&info);
+ return base::make_optional(info.last_modified);
}
base::Optional<std::vector<BlobItemBytesResponse>> WriteDiskRequests(
@@ -114,6 +118,8 @@
std::unique_ptr<std::vector<BlobItemBytesRequest>> requests,
const std::vector<IPC::PlatformFileForTransit>& file_handles) {
std::vector<BlobItemBytesResponse> responses;
+ std::vector<base::Time> last_modified_times;
+ last_modified_times.resize(file_handles.size());
// We grab ownership of the file handles here. When this vector is destroyed
// it will close the files.
std::vector<File> files;
@@ -122,24 +128,13 @@
files.emplace_back(IPC::PlatformFileForTransitToFile(file_handle));
}
for (const auto& request : *requests) {
- if (!WriteSingleRequestToDisk(consolidation.get(), request,
- &files[request.handle_index])) {
+ base::Optional<base::Time> last_modified = WriteSingleRequestToDisk(
+ consolidation.get(), request, &files[request.handle_index]);
+ if (!last_modified) {
return base::nullopt;
}
- }
- // The last modified time needs to be collected after we flush the file.
- std::vector<base::Time> last_modified_times;
- last_modified_times.resize(file_handles.size());
- for (size_t i = 0; i < files.size(); ++i) {
- auto& file = files[i];
- if (!file.Flush())
- return base::nullopt;
- File::Info info;
- if (!file.GetInfo(&info))
- return base::nullopt;
- last_modified_times[i] = info.last_modified;
- }
-
+ last_modified_times[request.handle_index] = last_modified.value();
+ }
for (const auto& request : *requests) {
responses.push_back(BlobItemBytesResponse(request.request_number));
responses.back().time_file_modified =
« no previous file with comments | « content/browser/blob_storage/chrome_blob_storage_context.cc ('k') | content/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698