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

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: check fetchEvent in ServiceWorkerGlobalScopeProxy::onNavigationPreloadError 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 dispached a navigation prelaod
falken 2017/01/18 14:24:58 nit: dispatched
horo 2017/01/18 16:14:57 Done.
569 // request to keep the mojom::URLLoader related objects in it.
falken 2017/01/18 14:24:58 Ah, I see... can you add something to the comment
horo 2017/01/18 16:14:57 Yes. Done.
570 if (!did_navigation_preload_) {
571 fetch_dispatcher_.reset();
572 }
569 ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status); 573 ServiceWorkerMetrics::RecordFetchEventStatus(IsMainResourceLoad(), status);
570 574
571 ServiceWorkerMetrics::URLRequestJobResult result = 575 ServiceWorkerMetrics::URLRequestJobResult result =
572 ServiceWorkerMetrics::REQUEST_JOB_ERROR_BAD_DELEGATE; 576 ServiceWorkerMetrics::REQUEST_JOB_ERROR_BAD_DELEGATE;
573 if (!delegate_->RequestStillValid(&result)) { 577 if (!delegate_->RequestStillValid(&result)) {
574 RecordResult(result); 578 RecordResult(result);
575 DeliverErrorResponse(); 579 DeliverErrorResponse();
576 return; 580 return;
577 } 581 }
578 582
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 876
873 DCHECK(!fetch_dispatcher_); 877 DCHECK(!fetch_dispatcher_);
874 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher( 878 fetch_dispatcher_.reset(new ServiceWorkerFetchDispatcher(
875 CreateFetchRequest(), active_worker, resource_type_, timeout_, 879 CreateFetchRequest(), active_worker, resource_type_, timeout_,
876 request()->net_log(), 880 request()->net_log(),
877 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent, 881 base::Bind(&ServiceWorkerURLRequestJob::DidPrepareFetchEvent,
878 weak_factory_.GetWeakPtr(), active_worker), 882 weak_factory_.GetWeakPtr(), active_worker),
879 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent, 883 base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
880 weak_factory_.GetWeakPtr()))); 884 weak_factory_.GetWeakPtr())));
881 worker_start_time_ = base::TimeTicks::Now(); 885 worker_start_time_ = base::TimeTicks::Now();
882 fetch_dispatcher_->MaybeStartNavigationPreload(request()); 886 did_navigation_preload_ =
887 fetch_dispatcher_->MaybeStartNavigationPreload(request());
883 fetch_dispatcher_->Run(); 888 fetch_dispatcher_->Run();
884 } 889 }
885 890
886 } // namespace content 891 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698