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 25d33fa5194e9e5df0e1746007e83fabbfb584e9..f6251434d3be8a1f65569f7b13ccb76937aafccf 100644 |
--- a/content/browser/service_worker/service_worker_version.cc |
+++ b/content/browser/service_worker/service_worker_version.cc |
@@ -94,6 +94,8 @@ template <typename IDMAP, typename... Params> |
void RunIDMapCallbacks(IDMAP* requests, const Params&... params) { |
typename IDMAP::iterator iter(requests); |
while (!iter.IsAtEnd()) { |
+ TRACE_EVENT_ASYNC_END0("ServiceWorker", "ServiceWorkerVersion::Request", |
+ iter.GetCurrentValue()); |
iter.GetCurrentValue()->callback.Run(params...); |
iter.Advance(); |
} |
@@ -108,6 +110,8 @@ bool RunIDMapCallback(IDMap<CallbackType, IDMapOwnPointer>* requests, |
if (!request) |
return false; |
+ TRACE_EVENT_ASYNC_END0("ServiceWorker", "ServiceWorkerVersion::Request", |
+ request); |
request->callback.Run(params...); |
requests->Remove(request_id); |
return true; |
@@ -897,6 +901,8 @@ ServiceWorkerVersion::BaseMojoServiceWrapper::~BaseMojoServiceWrapper() { |
while (!iter.IsAtEnd()) { |
PendingRequest<StatusCallback>* request = iter.GetCurrentValue(); |
if (request->mojo_service == service_name_) { |
+ TRACE_EVENT_ASYNC_END0("ServiceWorker", "ServiceWorkerVersion::Request", |
+ request); |
request->callback.Run(SERVICE_WORKER_ERROR_FAILED); |
worker_->custom_requests_.Remove(iter.GetCurrentKey()); |
} |
@@ -1812,6 +1818,11 @@ template <typename IDMAP> |
void ServiceWorkerVersion::RemoveCallbackAndStopIfRedundant(IDMAP* callbacks, |
int request_id) { |
RestartTick(&idle_time_); |
+ auto* request = callbacks->Lookup(request_id); |
+ if (request) { |
+ TRACE_EVENT_ASYNC_END0("ServiceWorker", "ServiceWorkerVersion::Request", |
+ request); |
+ } |
callbacks->Remove(request_id); |
if (is_redundant()) { |
// The stop should be already scheduled, but try to stop immediately, in |
@@ -1841,8 +1852,12 @@ int ServiceWorkerVersion::AddRequestWithExpiration( |
ServiceWorkerMetrics::EventType event_type, |
base::TimeTicks expiration, |
TimeoutBehavior timeout_behavior) { |
- int request_id = callback_map->Add(new PendingRequest<CallbackType>( |
- callback, base::TimeTicks::Now(), event_type)); |
+ PendingRequest<CallbackType>* request = new PendingRequest<CallbackType>( |
+ callback, base::TimeTicks::Now(), event_type); |
+ int request_id = callback_map->Add(request); |
+ TRACE_EVENT_ASYNC_BEGIN2("ServiceWorker", "ServiceWorkerVersion::Request", |
+ request, "Request id", request_id, "Event type", |
+ ServiceWorkerMetrics::EventTypeToString(event_type)); |
requests_.push(RequestInfo(request_id, request_type, event_type, expiration, |
timeout_behavior)); |
return request_id; |