| Index: content/browser/service_worker/service_worker_response_info.cc
|
| diff --git a/content/browser/service_worker/service_worker_response_info.cc b/content/browser/service_worker/service_worker_response_info.cc
|
| index 88cdb2d07a83946e6fd24295322932cfd5478008..a1c8e3d73d1b650dabf2628b782985e05130fda1 100644
|
| --- a/content/browser/service_worker/service_worker_response_info.cc
|
| +++ b/content/browser/service_worker/service_worker_response_info.cc
|
| @@ -52,11 +52,14 @@ void ServiceWorkerResponseInfo::GetExtraResponseInfo(
|
| response_info->is_in_cache_storage = response_is_in_cache_storage_;
|
| response_info->cache_storage_cache_name = response_cache_storage_cache_name_;
|
| response_info->cors_exposed_header_names = cors_exposed_header_names_;
|
| + response_info->did_service_worker_navigation_preload =
|
| + did_navigation_preload_;
|
| }
|
|
|
| void ServiceWorkerResponseInfo::OnPrepareToRestart(
|
| base::TimeTicks service_worker_start_time,
|
| - base::TimeTicks service_worker_ready_time) {
|
| + base::TimeTicks service_worker_ready_time,
|
| + bool did_navigation_preload) {
|
| ResetData();
|
|
|
| // Update times, if not already set by a previous Job.
|
| @@ -64,6 +67,11 @@ void ServiceWorkerResponseInfo::OnPrepareToRestart(
|
| service_worker_start_time_ = service_worker_start_time;
|
| service_worker_ready_time_ = service_worker_ready_time;
|
| }
|
| + // Don't reset navigation preload flag it if a previous job already set it,
|
| + // since the UseCounter should still reflect that navigation preload occurred
|
| + // for this request.
|
| + if (did_navigation_preload)
|
| + did_navigation_preload_ = true;
|
| }
|
|
|
| void ServiceWorkerResponseInfo::OnStartCompleted(
|
| @@ -76,7 +84,8 @@ void ServiceWorkerResponseInfo::OnStartCompleted(
|
| base::TimeTicks service_worker_ready_time,
|
| bool response_is_in_cache_storage,
|
| const std::string& response_cache_storage_cache_name,
|
| - const ServiceWorkerHeaderList& cors_exposed_header_names) {
|
| + const ServiceWorkerHeaderList& cors_exposed_header_names,
|
| + bool did_navigation_preload) {
|
| was_fetched_via_service_worker_ = was_fetched_via_service_worker;
|
| was_fetched_via_foreign_fetch_ = was_fetched_via_foreign_fetch;
|
| was_fallback_required_ = was_fallback_required;
|
| @@ -91,6 +100,8 @@ void ServiceWorkerResponseInfo::OnStartCompleted(
|
| service_worker_start_time_ = service_worker_start_time;
|
| service_worker_ready_time_ = service_worker_ready_time;
|
| }
|
| +
|
| + did_navigation_preload_ = did_navigation_preload;
|
| }
|
|
|
| void ServiceWorkerResponseInfo::ResetData() {
|
| @@ -100,9 +111,15 @@ void ServiceWorkerResponseInfo::ResetData() {
|
| url_list_via_service_worker_.clear();
|
| response_type_via_service_worker_ =
|
| blink::WebServiceWorkerResponseTypeDefault;
|
| + // Don't reset |service_worker_start_time_| or |service_worker_ready_time_|
|
| + // since it's historical timing information that should persist between job
|
| + // restarts.
|
| response_is_in_cache_storage_ = false;
|
| response_cache_storage_cache_name_ = std::string();
|
| cors_exposed_header_names_.clear();
|
| + // Don't reset the |did_navigation_preload_| flag. This is used for the
|
| + // UseCounter, and if it was ever true for a request, it should remain true
|
| + // even if the job restarts.
|
| }
|
|
|
| ServiceWorkerResponseInfo::ServiceWorkerResponseInfo() {}
|
|
|