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

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

Issue 2218943002: Introduce ServiceWorker.EventDispatchingDelay UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated mpearson@'s comment Created 4 years, 4 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_version.cc
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 13f1305c6966e2bd2b31f80ee933473ebea0e7fb..fb22db42dea541943905818470e2f64d03ae67be 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -550,8 +550,8 @@ int ServiceWorkerVersion::StartRequestWithCustomTimeout(
<< "Event of type " << static_cast<int>(event_type)
<< " can only be dispatched to an active worker: " << status();
- PendingRequest* request =
- new PendingRequest(error_callback, base::TimeTicks::Now(), event_type);
+ PendingRequest* request = new PendingRequest(
+ error_callback, base::Time::Now(), base::TimeTicks::Now(), event_type);
int request_id = pending_requests_.Add(request);
TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", "ServiceWorkerVersion::Request",
request, "Request id", request_id, "Event type",
@@ -562,15 +562,20 @@ int ServiceWorkerVersion::StartRequestWithCustomTimeout(
return request_id;
}
-bool ServiceWorkerVersion::FinishRequest(int request_id, bool was_handled) {
+bool ServiceWorkerVersion::FinishRequest(int request_id,
+ bool was_handled,
+ base::Time dispatch_event_time) {
PendingRequest* request = pending_requests_.Lookup(request_id);
if (!request)
return false;
// TODO(kinuko): Record other event statuses too.
metrics_->RecordEventHandledStatus(request->event_type, was_handled);
ServiceWorkerMetrics::RecordEventDuration(
- request->event_type, base::TimeTicks::Now() - request->start_time,
+ request->event_type, base::TimeTicks::Now() - request->start_time_ticks,
was_handled);
+ ServiceWorkerMetrics::RecordEventDispatchingDelay(
+ request->event_type, dispatch_event_time - request->start_time,
+ site_for_uma());
RestartTick(&idle_time_);
TRACE_EVENT_ASYNC_END1("ServiceWorker", "ServiceWorkerVersion::Request",
@@ -767,9 +772,13 @@ bool ServiceWorkerVersion::RequestInfo::operator>(
ServiceWorkerVersion::PendingRequest::PendingRequest(
const StatusCallback& callback,
- const base::TimeTicks& time,
+ base::Time time,
+ const base::TimeTicks& time_ticks,
ServiceWorkerMetrics::EventType event_type)
- : error_callback(callback), start_time(time), event_type(event_type) {}
+ : error_callback(callback),
+ start_time(time),
+ start_time_ticks(time_ticks),
+ event_type(event_type) {}
ServiceWorkerVersion::PendingRequest::~PendingRequest() {}
@@ -991,14 +1000,16 @@ void ServiceWorkerVersion::OnGetClientsFinished(int request_id,
void ServiceWorkerVersion::OnSimpleEventResponse(
int request_id,
- blink::WebServiceWorkerEventResult result) {
+ blink::WebServiceWorkerEventResult result,
+ base::Time dispatch_event_time) {
// Copy error callback before calling FinishRequest.
PendingRequest* request = pending_requests_.Lookup(request_id);
DCHECK(request) << "Invalid request id";
StatusCallback callback = request->error_callback;
FinishRequest(request_id,
- result == blink::WebServiceWorkerEventResultCompleted);
+ result == blink::WebServiceWorkerEventResultCompleted,
+ dispatch_event_time);
ServiceWorkerStatusCode status = SERVICE_WORKER_OK;
if (result == blink::WebServiceWorkerEventResultRejected)

Powered by Google App Engine
This is Rietveld 408576698