| Index: content/browser/background_fetch/background_fetch_job_controller.cc
|
| diff --git a/content/browser/background_fetch/background_fetch_job_controller.cc b/content/browser/background_fetch/background_fetch_job_controller.cc
|
| index 6cd049404b3874fdddb3a26b01e7df50522ae908..36a6fa3cb271d7e3a4ce1c6b4e0e52d2e80b11ca 100644
|
| --- a/content/browser/background_fetch/background_fetch_job_controller.cc
|
| +++ b/content/browser/background_fetch/background_fetch_job_controller.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/memory/ptr_util.h"
|
| #include "content/browser/background_fetch/background_fetch_constants.h"
|
| #include "content/browser/background_fetch/background_fetch_data_manager.h"
|
| +#include "content/common/service_worker/service_worker_types.h"
|
| #include "content/public/browser/browser_context.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/download_interrupt_reasons.h"
|
| @@ -49,12 +50,14 @@ class BackgroundFetchJobController::Core : public DownloadItem::Observer {
|
| BrowserContext::GetDownloadManager(browser_context_);
|
| DCHECK(download_manager);
|
|
|
| + const ServiceWorkerFetchRequest& fetch_request = request->fetch_request();
|
| +
|
| std::unique_ptr<DownloadUrlParameters> download_parameters(
|
| - base::MakeUnique<DownloadUrlParameters>(request->GetURL(),
|
| + base::MakeUnique<DownloadUrlParameters>(fetch_request.url,
|
| request_context_.get()));
|
|
|
| // TODO(peter): The |download_parameters| should be populated with all the
|
| - // properties set in the |request|'s ServiceWorkerFetchRequest member.
|
| + // properties set in the |fetch_request| structure.
|
|
|
| download_parameters->set_callback(base::Bind(&Core::DidStartRequest,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| @@ -64,25 +67,24 @@ class BackgroundFetchJobController::Core : public DownloadItem::Observer {
|
| }
|
|
|
| // DownloadItem::Observer overrides:
|
| - void OnDownloadUpdated(DownloadItem* item) override {
|
| + void OnDownloadUpdated(DownloadItem* download_item) override {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
|
|
| - auto iter = downloads_.find(item);
|
| + auto iter = downloads_.find(download_item);
|
| DCHECK(iter != downloads_.end());
|
|
|
| - const scoped_refptr<BackgroundFetchRequestInfo>& request = iter->second;
|
| + scoped_refptr<BackgroundFetchRequestInfo> request = iter->second;
|
|
|
| - switch (item->GetState()) {
|
| + switch (download_item->GetState()) {
|
| case DownloadItem::DownloadState::COMPLETE:
|
| - // TODO(peter): Populate the responses' information in the |request|.
|
| -
|
| - item->RemoveObserver(this);
|
| + request->PopulateResponseFromDownloadItem(download_item);
|
| + download_item->RemoveObserver(this);
|
|
|
| // Inform the host about |host| having completed.
|
| BrowserThread::PostTask(
|
| BrowserThread::IO, FROM_HERE,
|
| base::Bind(&BackgroundFetchJobController::DidCompleteRequest,
|
| - io_parent_, request));
|
| + io_parent_, std::move(request)));
|
|
|
| // Clear the local state for the |request|, it no longer is our concern.
|
| downloads_.erase(iter);
|
| @@ -103,12 +105,12 @@ class BackgroundFetchJobController::Core : public DownloadItem::Observer {
|
| }
|
| }
|
|
|
| - void OnDownloadDestroyed(DownloadItem* item) override {
|
| + void OnDownloadDestroyed(DownloadItem* download_item) override {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - DCHECK_EQ(downloads_.count(item), 1u);
|
| - downloads_.erase(item);
|
| + DCHECK_EQ(downloads_.count(download_item), 1u);
|
| + downloads_.erase(download_item);
|
|
|
| - item->RemoveObserver(this);
|
| + download_item->RemoveObserver(this);
|
| }
|
|
|
| private:
|
| @@ -122,6 +124,8 @@ class BackgroundFetchJobController::Core : public DownloadItem::Observer {
|
| DCHECK_EQ(interrupt_reason, DOWNLOAD_INTERRUPT_REASON_NONE);
|
| DCHECK(download_item);
|
|
|
| + request->PopulateDownloadState(download_item, interrupt_reason);
|
| +
|
| // TODO(peter): The above two DCHECKs are assumptions our implementation
|
| // currently makes, but are not fit for production. We need to handle such
|
| // failures gracefully.
|
|
|