Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(884)

Side by Side Diff: content/browser/service_worker/service_worker_url_request_job.cc

Issue 2645493002: Increase the lifetime of Navigation Preload related objects. (Closed)
Patch Set: Keep the URL loader related assetsalive while the FetchEvent is onging. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_url_request_job.h" 5 #include "content/browser/service_worker/service_worker_url_request_job.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame( 558 ServiceWorkerMetrics::RecordActivatedWorkerPreparationTimeForMainFrame(
559 worker_ready_time_ - request()->creation_time(), initial_worker_status_, 559 worker_ready_time_ - request()->creation_time(), initial_worker_status_,
560 version->embedded_worker()->start_situation()); 560 version->embedded_worker()->start_situation());
561 } 561 }
562 562
563 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent( 563 void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
564 ServiceWorkerStatusCode status, 564 ServiceWorkerStatusCode status,
565 ServiceWorkerFetchEventResult fetch_result, 565 ServiceWorkerFetchEventResult fetch_result,
566 const ServiceWorkerResponse& response, 566 const ServiceWorkerResponse& response,
567 const scoped_refptr<ServiceWorkerVersion>& version) { 567 const scoped_refptr<ServiceWorkerVersion>& version) {
568 fetch_dispatcher_.reset(); 568 // Do not clear |fetch_dispatcher_| if it has dispatched a navigation prelaod
falken 2017/01/19 05:26:47 preload
horo 2017/01/19 05:48:57 Done.
569 // request to keep the mojom::URLLoader related objects in it, because the
570 // preload response might still need to be streamed even after calling
571 // respondWith().
572 if (!did_navigation_preload_) {
573 fetch_dispatcher_.reset();
574 }
569 ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status); 575 ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status);
570 576
571 ServiceWorkerMetrics::URLRequestJobResult result = 577 ServiceWorkerMetrics::URLRequestJobResult result =
572 ServiceWorkerMetrics::REQUEST_JOB_ERROR_BAD_DELEGATE; 578 ServiceWorkerMetrics::REQUEST_JOB_ERROR_BAD_DELEGATE;
573 if (!delegate_->RequestStillValid(&result)) { 579 if (!delegate_->RequestStillValid(&result)) {
574 RecordResult(result); 580 RecordResult(result);
575 DeliverErrorResponse(); 581 DeliverErrorResponse();
576 return; 582 return;
577 } 583 }
578 584
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 878
873 DCHECK(!fetch_dispatcher_); 879 DCHECK(!fetch_dispatcher_);
874 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( 880 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher(
875 CreateFetchRequest(), active_worker, resource_type_, timeout_, 881 CreateFetchRequest(), active_worker, resource_type_, timeout_,
876 request()->net_log(), 882 request()->net_log(),
877 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, 883 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent,
878 weak_factory_.GetWeakPtr(), active_worker), 884 weak_factory_.GetWeakPtr(), active_worker),
879 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, 885 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
880 weak_factory_.GetWeakPtr()))); 886 weak_factory_.GetWeakPtr())));
881 worker_start_time_ = base::TimeTicks::Now(); 887 worker_start_time_ = base::TimeTicks::Now();
882 fetch_dispatcher_->MaybeStartNavigationPreload(request()); 888 did_navigation_preload_ =
889 fetch_dispatcher_->MaybeStartNavigationPreload(request());
883 fetch_dispatcher_->Run(); 890 fetch_dispatcher_->Run();
884 } 891 }
885 892
886 } // namespace content 893 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698