Chromium Code Reviews| 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 b5cc88416ca6f89b5c319c100d175ac2460b0f8e..48a65a2601889a3c9f837495f7cec57fc9fa10a9 100644 |
| --- a/content/child/blob_storage/blob_transport_controller.cc |
| +++ b/content/child/blob_storage/blob_transport_controller.cc |
| @@ -49,7 +49,7 @@ using storage::kBlobStorageIPCThresholdBytes; |
| using storage::BlobItemBytesResponse; |
| using storage::BlobItemBytesRequest; |
| -using storage::IPCBlobCreationCancelCode; |
| +using storage::BlobStatus; |
| namespace content { |
| using ConsolidatedItem = BlobConsolidation::ConsolidatedItem; |
| @@ -115,10 +115,7 @@ base::Optional<base::Time> WriteSingleRequestToDisk( |
| return base::make_optional(info.last_modified); |
| } |
| -// This returns either the responses, or if they're empty, an error code. |
| -std::pair<std::vector<storage::BlobItemBytesResponse>, |
| - IPCBlobCreationCancelCode> |
| -WriteDiskRequests( |
| +std::pair<BlobStatus, std::vector<BlobItemBytesResponse>> WriteDiskRequests( |
| scoped_refptr<BlobConsolidation> consolidation, |
| std::unique_ptr<std::vector<BlobItemBytesRequest>> requests, |
| const std::vector<IPC::PlatformFileForTransit>& file_handles) { |
| @@ -136,8 +133,8 @@ WriteDiskRequests( |
| base::Optional<base::Time> last_modified = WriteSingleRequestToDisk( |
| consolidation.get(), request, &files[request.handle_index]); |
| if (!last_modified) { |
| - return std::make_pair(std::vector<storage::BlobItemBytesResponse>(), |
| - IPCBlobCreationCancelCode::FILE_WRITE_FAILED); |
| + return std::make_pair(BlobStatus::FILE_WRITE_FAILED, |
| + std::vector<storage::BlobItemBytesResponse>()); |
| } |
| last_modified_times[request.handle_index] = last_modified.value(); |
| } |
| @@ -147,7 +144,7 @@ WriteDiskRequests( |
| last_modified_times[request.handle_index]; |
| } |
| - return std::make_pair(responses, IPCBlobCreationCancelCode::UNKNOWN); |
| + return std::make_pair(BlobStatus::DONE, responses); |
| } |
| } // namespace |
| @@ -171,7 +168,6 @@ void BlobTransportController::InitiateBlobTransfer( |
| } |
| std::vector<storage::DataElement> descriptions; |
| - std::set<std::string> referenced_blobs = consolidation->referenced_blobs(); |
| BlobTransportController::GetDescriptions( |
| consolidation.get(), kBlobStorageIPCThresholdBytes, &descriptions); |
| // I post the task first to make sure that we store our consolidation before |
| @@ -182,10 +178,8 @@ void BlobTransportController::InitiateBlobTransfer( |
| base::Unretained(BlobTransportController::GetInstance()), uuid, |
| base::Passed(std::move(consolidation)), |
| base::Passed(std::move(main_runner)))); |
| - // TODO(dmurph): Merge register and start messages. |
| - sender->Send(new BlobStorageMsg_RegisterBlobUUID(uuid, content_type, "", |
| - referenced_blobs)); |
| - sender->Send(new BlobStorageMsg_StartBuildingBlob(uuid, descriptions)); |
| + sender->Send( |
| + new BlobStorageMsg_RegisterBlob(uuid, content_type, "", descriptions)); |
| } |
| void BlobTransportController::OnMemoryRequest( |
| @@ -304,15 +298,15 @@ void BlobTransportController::OnMemoryRequest( |
| sender->Send(new BlobStorageMsg_MemoryItemResponse(uuid, responses)); |
| } |
| -void BlobTransportController::OnCancel( |
| - const std::string& uuid, |
| - storage::IPCBlobCreationCancelCode code) { |
| - DVLOG(1) << "Received blob cancel for blob " << uuid |
| - << " with code: " << static_cast<int>(code); |
| - ReleaseBlobConsolidation(uuid); |
| -} |
| - |
| -void BlobTransportController::OnDone(const std::string& uuid) { |
| +void BlobTransportController::OnBlobStatus(const std::string& uuid, |
| + storage::BlobStatus code) { |
| + if (storage::BlobStatusIsError(code)) { |
| + DVLOG(1) << "Received blob error for blob " << uuid |
| + << " with code: " << static_cast<int>(code); |
| + ReleaseBlobConsolidation(uuid); |
|
michaeln
2016/07/15 02:12:07
since ReleaseBlobConsolidation() happens in all ca
dmurph
2016/07/15 20:18:15
Done.
|
| + return; |
| + } |
| + DCHECK(code == storage::BlobStatus::DONE); |
| ReleaseBlobConsolidation(uuid); |
| } |
| @@ -388,16 +382,15 @@ BlobTransportController::~BlobTransportController() {} |
| void BlobTransportController::OnFileWriteComplete( |
| IPC::Sender* sender, |
| const std::string& uuid, |
| - const std::pair<std::vector<BlobItemBytesResponse>, |
| - IPCBlobCreationCancelCode>& result) { |
| + const std::pair<BlobStatus, std::vector<BlobItemBytesResponse>>& result) { |
| if (blob_storage_.find(uuid) == blob_storage_.end()) |
| return; |
| - if (!result.first.empty()) { |
| - sender->Send(new BlobStorageMsg_MemoryItemResponse(uuid, result.first)); |
| + if (BlobStatusIsError(result.first)) { |
| + sender->Send(new BlobStorageMsg_SendBlobStatus(uuid, result.first)); |
| + ReleaseBlobConsolidation(uuid); |
| return; |
| } |
| - sender->Send(new BlobStorageMsg_CancelBuildingBlob(uuid, result.second)); |
| - ReleaseBlobConsolidation(uuid); |
| + sender->Send(new BlobStorageMsg_MemoryItemResponse(uuid, result.second)); |
| } |
| void BlobTransportController::StoreBlobDataForRequests( |