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

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

Issue 2652603002: service worker: Add UMA for navigation preload response timing. (Closed)
Patch Set: ws 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..d274cf353bf3b4c0a573073cd1fc1502b9682d32 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,35 @@ 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::Bind(&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;
+ }
+ // Don't expect this to happen, but don't ruin the UMA if it does.
horo 2017/01/24 01:48:33 Do we actually need this check?? I think DCHECK()
falken 2017/01/24 04:41:18 I wasn't sure if OnReceivedResposne() is gaurantee
+ if (reported_navigation_preload_metrics_) {
+ NOTREACHED();
+ return;
+ }
+ 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

Powered by Google App Engine
This is Rietveld 408576698