| Index: content/browser/service_worker/service_worker_fetch_dispatcher.cc
|
| diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
|
| index 85cf9d7db3ad27aae10f29f51f41cb6f0955f03d..5cf2c8e08d1cacfa82a25a0ef689c235dbae8bd2 100644
|
| --- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
|
| +++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
|
| @@ -73,8 +73,11 @@ class DelegatingURLLoader final : public mojom::URLLoader {
|
| // wrapped client.
|
| class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
|
| public:
|
| - explicit DelegatingURLLoaderClient(mojom::URLLoaderClientPtr client)
|
| - : binding_(this), client_(std::move(client)) {}
|
| + explicit DelegatingURLLoaderClient(mojom::URLLoaderClientPtr client,
|
| + base::OnceClosure on_response)
|
| + : binding_(this),
|
| + client_(std::move(client)),
|
| + on_response_(std::move(on_response)) {}
|
| ~DelegatingURLLoaderClient() override {
|
| if (!completed_) {
|
| // Let the service worker know that the request has been canceled.
|
| @@ -97,6 +100,8 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
|
| const ResourceResponseHead& head,
|
| mojom::DownloadedTempFilePtr downloaded_file) override {
|
| client_->OnReceiveResponse(head, std::move(downloaded_file));
|
| + DCHECK(on_response_);
|
| + std::move(on_response_).Run();
|
| }
|
| void OnReceiveRedirect(const net::RedirectInfo& redirect_info,
|
| const ResourceResponseHead& head) override {
|
| @@ -120,6 +125,7 @@ class DelegatingURLLoaderClient final : public mojom::URLLoaderClient {
|
| private:
|
| mojo::AssociatedBinding<mojom::URLLoaderClient> binding_;
|
| mojom::URLLoaderClientPtr client_;
|
| + base::OnceClosure on_response_;
|
| bool completed_ = false;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(DelegatingURLLoaderClient);
|
| @@ -402,7 +408,8 @@ void ServiceWorkerFetchDispatcher::Complete(
|
| }
|
|
|
| bool ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
|
| - net::URLRequest* original_request) {
|
| + net::URLRequest* original_request,
|
| + base::OnceClosure on_response) {
|
| if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME &&
|
| resource_type_ != RESOURCE_TYPE_SUB_FRAME) {
|
| return false;
|
| @@ -476,7 +483,7 @@ bool ServiceWorkerFetchDispatcher::MaybeStartNavigationPreload(
|
| preload_handle_->url_loader_client_request =
|
| mojo::MakeRequest(&url_loader_client_ptr);
|
| auto url_loader_client = base::MakeUnique<DelegatingURLLoaderClient>(
|
| - std::move(url_loader_client_ptr));
|
| + std::move(url_loader_client_ptr), std::move(on_response));
|
| mojom::URLLoaderClientAssociatedPtrInfo url_loader_client_associated_ptr_info;
|
| url_loader_client->Bind(&url_loader_client_associated_ptr_info,
|
| url_loader_factory.associated_group());
|
|
|