Index: content/browser/background_fetch/background_fetch_data_manager.cc |
diff --git a/content/browser/background_fetch/background_fetch_data_manager.cc b/content/browser/background_fetch/background_fetch_data_manager.cc |
index 5def082d44ad09db2ad89496d84f98cf182835fb..3be8436f7e92f2553a133659d60944f3d632990b 100644 |
--- a/content/browser/background_fetch/background_fetch_data_manager.cc |
+++ b/content/browser/background_fetch/background_fetch_data_manager.cc |
@@ -8,6 +8,7 @@ |
#include "content/browser/background_fetch/background_fetch_context.h" |
#include "content/browser/background_fetch/background_fetch_job_response_data.h" |
#include "content/browser/background_fetch/background_fetch_request_info.h" |
+#include "content/browser/blob_storage/chrome_blob_storage_context.h" |
#include "content/public/browser/blob_handle.h" |
#include "content/public/browser/browser_context.h" |
#include "content/public/browser/download_interrupt_reasons.h" |
@@ -97,6 +98,18 @@ BackgroundFetchDataManager::GetRequestInfo(const std::string& job_guid, |
void BackgroundFetchDataManager::GetJobResponse( |
const std::string& job_guid, |
const BackgroundFetchResponseCompleteCallback& callback) { |
+ BrowserThread::PostTaskAndReplyWithResult( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&ChromeBlobStorageContext::GetFor, browser_context_), |
+ base::Bind(&BackgroundFetchDataManager::DidGetBlobStorageContext, |
+ weak_ptr_factory_.GetWeakPtr(), job_guid, callback)); |
+} |
+ |
+void BackgroundFetchDataManager::DidGetBlobStorageContext( |
+ const std::string& job_guid, |
+ const BackgroundFetchResponseCompleteCallback& callback, |
+ ChromeBlobStorageContext* blob_context) { |
+ DCHECK(blob_context); |
BackgroundFetchJobInfo* job_info = job_map_[job_guid].get(); |
DCHECK(job_info); |
@@ -105,6 +118,9 @@ void BackgroundFetchDataManager::GetJobResponse( |
job_info->set_job_response_data( |
base::MakeUnique<BackgroundFetchJobResponseData>(job_info->num_requests(), |
callback)); |
+ BackgroundFetchJobResponseData* job_response_data = |
+ job_info->job_response_data(); |
+ DCHECK(job_response_data); |
// Iterate over the requests and create blobs for each response. |
for (size_t request_index = 0; request_index < job_info->num_requests(); |
@@ -115,28 +131,14 @@ void BackgroundFetchDataManager::GetJobResponse( |
// TODO(harkness): Only create a blob response if the request was |
// successful. Otherwise create an error response. |
- content::BrowserContext::CreateFileBackedBlob( |
- browser_context_, request_info->file_path(), 0 /* offset */, |
- request_info->received_bytes(), |
- base::Time() /* expected_modification_time */, |
- base::Bind(&BackgroundFetchDataManager::DidGetRequestResponse, |
- weak_ptr_factory_.GetWeakPtr(), job_guid, request_index)); |
- } |
-} |
+ std::unique_ptr<BlobHandle> blob_handle = |
+ blob_context->CreateFileBackedBlob( |
+ request_info->file_path(), 0 /* offset */, |
+ request_info->received_bytes(), |
+ base::Time() /* expected_modification_time */); |
-void BackgroundFetchDataManager::DidGetRequestResponse( |
- const std::string& job_guid, |
- int request_sequence_number, |
- std::unique_ptr<BlobHandle> blob_handle) { |
- BackgroundFetchJobInfo* job_info = job_map_[job_guid].get(); |
- DCHECK(job_info); |
- |
- BackgroundFetchJobResponseData* job_response_data = |
- job_info->job_response_data(); |
- DCHECK(job_response_data); |
- |
- job_response_data->AddResponse(request_sequence_number, |
- std::move(blob_handle)); |
+ job_response_data->AddResponse(*request_info.get(), std::move(blob_handle)); |
+ } |
} |
bool BackgroundFetchDataManager::UpdateRequestState( |