| Index: content/browser/background_fetch/background_fetch_context.cc | 
| diff --git a/content/browser/background_fetch/background_fetch_context.cc b/content/browser/background_fetch/background_fetch_context.cc | 
| index 55773de7211e66e8bc174fcde5c538af05a9c6ac..a6dfc65bf78c7db17c1be21ad27782dfc729e133 100644 | 
| --- a/content/browser/background_fetch/background_fetch_context.cc | 
| +++ b/content/browser/background_fetch/background_fetch_context.cc | 
| @@ -50,6 +50,8 @@ void BackgroundFetchContext::ShutdownOnIO() { | 
| // any status to the DataManager. | 
| for (auto& job : job_map_) | 
| job.second->Shutdown(); | 
| + | 
| +  job_map_.clear(); | 
| } | 
|  | 
| void BackgroundFetchContext::CreateRequest( | 
| @@ -68,8 +70,19 @@ void BackgroundFetchContext::CreateRequest( | 
| // the JobData to get information about individual requests for the job. | 
| job_map_[job_info.guid()] = base::MakeUnique<BackgroundFetchJobController>( | 
| job_info.guid(), browser_context_, storage_partition_, | 
| -        std::move(job_data)); | 
| +        std::move(job_data), | 
| +        base::BindOnce(&BackgroundFetchContext::DidCompleteJob, this, | 
| +                       job_info.guid())); | 
| } | 
| } | 
|  | 
| +void BackgroundFetchContext::DidCompleteJob(const std::string& job_guid) { | 
| +  DCHECK(job_map_.find(job_guid) != job_map_.end()); | 
| + | 
| +  job_map_.erase(job_guid); | 
| + | 
| +  // TODO(harkness): Once the caller receives the message, inform the | 
| +  // DataManager that it can clean up the pending job. | 
| +} | 
| + | 
| }  // namespace content | 
|  |