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

Unified Diff: content/browser/service_worker/service_worker_url_request_job.cc

Issue 2660423002: M57: service worker: Add UMA for navigation preload response timing. (Closed)
Patch Set: 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_url_request_job.cc
diff --git a/content/browser/service_worker/service_worker_url_request_job.cc b/content/browser/service_worker/service_worker_url_request_job.cc
index f69a0ac376a99a62458a61cead649368117f6733..afa3704c0828b4cfdeb044b6387deb6e72f58350 100644
--- a/content/browser/service_worker/service_worker_url_request_job.cc
+++ b/content/browser/service_worker/service_worker_url_request_job.cc
@@ -555,9 +555,11 @@ void ServiceWorkerURLRequestJob::DidPrepareFetchEvent(
}
if (version->should_exclude_from_uma())
return;
+ worker_start_situation_ = version->embedded_worker()->start_situation();
ServiceWorkerMetrics::RecordActivatedWorkerPreparationForMainFrame(
worker_ready_time_ - request()->creation_time(), initial_worker_status_,
- version->embedded_worker()->start_situation(), did_navigation_preload_);
+ worker_start_situation_, did_navigation_preload_);
+ MaybeReportNavigationPreloadMetrics();
}
void ServiceWorkerURLRequestJob::DidDispatchFetchEvent(
@@ -885,9 +887,31 @@ void ServiceWorkerURLRequestJob::RequestBodyFileSizesResolved(bool success) {
base::Bind(&ServiceWorkerURLRequestJob::DidDispatchFetchEvent,
weak_factory_.GetWeakPtr())));
worker_start_time_ = base::TimeTicks::Now();
- did_navigation_preload_ =
- fetch_dispatcher_->MaybeStartNavigationPreload(request());
+ did_navigation_preload_ = fetch_dispatcher_->MaybeStartNavigationPreload(
+ request(),
+ base::BindOnce(&ServiceWorkerURLRequestJob::OnNavigationPreloadResponse,
+ weak_factory_.GetWeakPtr()));
fetch_dispatcher_->Run();
}
+void ServiceWorkerURLRequestJob::OnNavigationPreloadResponse() {
+ DCHECK(navigation_preload_response_time_.is_null());
+ navigation_preload_response_time_ = base::TimeTicks::Now();
+ MaybeReportNavigationPreloadMetrics();
+}
+
+void ServiceWorkerURLRequestJob::MaybeReportNavigationPreloadMetrics() {
+ if (worker_start_time_.is_null() || worker_ready_time_.is_null() ||
+ navigation_preload_response_time_.is_null()) {
+ return;
+ }
+ DCHECK(!reported_navigation_preload_metrics_);
+ reported_navigation_preload_metrics_ = true;
+
+ ServiceWorkerMetrics::RecordNavigationPreloadResponse(
+ worker_ready_time_ - worker_start_time_,
+ navigation_preload_response_time_ - worker_start_time_,
+ initial_worker_status_, worker_start_situation_);
+}
+
} // namespace content
« no previous file with comments | « content/browser/service_worker/service_worker_url_request_job.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698