blob: b82ced5757f23cc17c8192011bc49dba18ed3a1f [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of Service histograms
along with a detailed description for each histogram.
For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md
Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->
<histogram-configuration>
<histograms>
<variants name="EmbeddedWorkerInitialStatus">
<variant name="" summary=""/>
<variant name=".RUNNING"
summary="The service worker was in RUNNING state when
ServiceWorkerMainResourceLoader was created."/>
<variant name=".STARTING"
summary="The service worker was in STARTING state when
ServiceWorkerMainResourceLoader was created."/>
<variant name=".STOPPED"
summary="The service worker was in STOPPED state when
ServiceWorkerMainResourceLoader was created."/>
<variant name=".STOPPING"
summary="The service worker was in STOPPING state when
ServiceWorkerMainResourceLoader was created."/>
</variants>
<variants name="NavigationType">
<variant name="" summary=""/>
<variant name=".CrossOriginNavigation"
summary="This is only recorded when navigation is cross origin
navigation."/>
<variant name=".SameOriginNavigation"
summary="This is only recorded when navigation is same origin
navigation."/>
</variants>
<variants name="ServiceWorkerCacheClientType">
<variant name="BackgroundSyncManager"
summary="Collected from a BackgroundSyncManager instance"/>
<variant name="Cache" summary="Collected from a CacheStorageCache instance"/>
<variant name="CacheStorage"
summary="Collected from a CacheStorage instance"/>
</variants>
<variants name="ServiceWorkerCacheProcessType">
<variant name="Browser"
summary="Measurements taken in the browser process on the IO thread"/>
<variant name="Renderer"
summary="Measurements taken in the renderer process on the javascript
thread"/>
</variants>
<variants name="ServiceWorkerCacheSchedulerOpClientType">
<variant name="Cache" summary="Collected from a CacheStorageCache instance"/>
<variant name="CacheStorage"
summary="Collected from a CacheStorage instance"/>
</variants>
<variants name="ServiceWorkerEventType">
<variant name="ACTIVATE"/>
<variant name="BACKGROUND_FETCH_ABORT"/>
<variant name="BACKGROUND_FETCH_CLICK"/>
<variant name="BACKGROUND_FETCH_FAIL"/>
<variant name="BACKGROUND_FETCH_SUCCESS"/>
<variant name="COOKIE_CHANGE"/>
<variant name="FETCH_FENCED_FRAME"/>
<variant name="FETCH_MAIN_FRAME"/>
<variant name="FETCH_SHARED_WORKER"/>
<variant name="FETCH_SUB_FRAME"/>
<variant name="FETCH_SUB_RESOURCE"/>
<variant name="INSTALL"/>
<variant name="LONG_RUNNING_MESSAGE"/>
<variant name="MESSAGE"/>
<variant name="NAVIGATION_HINT"/>
<variant name="NOTIFICATION_CLICK"/>
<variant name="NOTIFICATION_CLOSE"/>
<variant name="PUSH"/>
<variant name="SYNC"/>
<variant name="UNKNOWN"/>
</variants>
<variants name="ServiceWorkerFetchEventResult">
<variant name="GOT_RESPONSE"/>
<variant name="SHOULD_FALLBACK"/>
</variants>
<variants name="ServiceWorkerResponseSource">
<variant name="" summary=""/>
<variant name=".CacheStorage" summary="The response came from CacheStorage."/>
<variant name=".HttpCache" summary="The response came from HttpCache."/>
<variant name=".Network" summary="The response directly came from network."/>
<variant name=".Unspecified"
summary="The source of a response was unspecified."/>
</variants>
<variants name="ServiceWorkerSchedulerOp">
<variant name="Close"/>
<variant name="Delete"/>
<variant name="GetAllMatched"/>
<variant name="Has"/>
<variant name="Init"/>
<variant name="Keys"/>
<variant name="Match"/>
<variant name="MatchAll"/>
<variant name="Open"/>
<variant name="Put"/>
<variant name="Size"/>
<variant name="SizeThenClose"/>
<variant name="WriteIndex"/>
<variant name="WriteSideData"/>
</variants>
<histogram name="ServiceWorker.AbortPaymentEvent.Time" units="ms"
expires_after="2023-10-18">
<owner>rouslan@chromium.org</owner>
<owner>web-payments-team@google.com</owner>
<owner>jinho.bang@samsung.com</owner>
<summary>
The time taken between dispatching an AbortPaymentEvent to a Service Worker
and receiving a message that it finished handling the event. Includes the
time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.ActivateEvent.Time" units="ms"
expires_after="2023-09-10">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Execution time of ServiceWorkerGlobalScope.onactivate. Includes the time for
waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.ActivateEventStatus"
enum="ServiceWorkerStatusCode" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of dispatching the activate event to the worker. This is recorded
to both ServiceWorker.ActivateEventStatus and whichever of
ServiceWorker.ActivateEventStatus_InShutdown
ServiceWorker.ActivateEventStatus_NotInShutdown is appropriate. (InShutdown
means the context was null or ServiceWorkerProcessManger::Shutdown was
called.)
</summary>
</histogram>
<histogram name="ServiceWorker.BackgroundFetchAbortEvent.Time" units="ms"
expires_after="2022-06-30">
<owner>nator@chromium.org</owner>
<owner>peter@chromium.org</owner>
<owner>rayankans@chromium.org</owner>
<summary>
The time taken between dispatching a BackgroundFetchAbortEvent to a Service
Worker and receiving a message that it finished handling the event. Includes
the time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.BackgroundFetchClickEvent.Time" units="ms"
expires_after="2022-06-30">
<owner>nator@chromium.org</owner>
<owner>peter@chromium.org</owner>
<owner>rayankans@chromium.org</owner>
<summary>
The time taken between dispatching a BackgroundFetchClickEvent to a Service
Worker and receiving a message that it finished handling the event. Includes
the time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.BackgroundFetchFailEvent.Time" units="ms"
expires_after="2022-06-30">
<owner>nator@chromium.org</owner>
<owner>peter@chromium.org</owner>
<owner>rayankans@chromium.org</owner>
<summary>
The time taken between dispatching a BackgroundFetchFailEvent to a Service
Worker and receiving a message that it finished handling the event. Includes
the time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.BackgroundFetchSuccessEvent.Time" units="ms"
expires_after="2022-06-30">
<owner>nator@chromium.org</owner>
<owner>peter@chromium.org</owner>
<owner>rayankans@chromium.org</owner>
<summary>
The time taken between dispatching a BackgroundFetchSuccessEvent to a
Service Worker and receiving a message that it finished handling the event.
Includes the time for the waitUntil() promise to settle. This event is sent
when the background fetch succeeds.
</summary>
</histogram>
<histogram name="ServiceWorker.BackgroundSyncEvent.Time" units="ms"
expires_after="2022-06-30">
<owner>nator@chromium.org</owner>
<owner>rayankans@chromium.org</owner>
<summary>
The time taken between dispatching a SyncEvent to a Service Worker and
receiving a message that it finished handling the event. Includes the time
for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.CacheStorageInstalledScript.CachedMetadataSize"
units="bytes" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The length of cached metadata of scripts which are stored to the
CacheStorage by the installing service worker.
</summary>
</histogram>
<histogram
name="ServiceWorker.CacheStorageInstalledScript.CachedMetadataTotalSize"
units="bytes" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The total length of cached metadata of scripts which are stored to the
CacheStorage by the installing service worker.
</summary>
</histogram>
<histogram name="ServiceWorker.CacheStorageInstalledScript.Count" units="count"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The counts of scripts which are stored to the CacheStorage by the installing
service worker.
</summary>
</histogram>
<histogram name="ServiceWorker.CacheStorageInstalledScript.ScriptSize"
units="bytes" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The length of scripts which are stored to the CacheStorage by the installing
service worker.
</summary>
</histogram>
<histogram name="ServiceWorker.CacheStorageInstalledScript.ScriptTotalSize"
units="bytes" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The total length of scripts which are stored to the CacheStorage by the
installing service worker.
</summary>
</histogram>
<histogram name="ServiceWorker.CanMakePaymentEvent.Time" units="ms"
expires_after="2023-10-18">
<owner>rouslan@chromium.org</owner>
<owner>web-payments-team@google.com</owner>
<owner>jinho.bang@samsung.com</owner>
<summary>
The time taken between dispatching an CanMakePaymentEvent to a Service
Worker and receiving a message that it finished handling the event. Includes
the time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.Database.DestroyDatabaseResult"
enum="ServiceWorkerDatabaseStatus" expires_after="2023-10-09">
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of destroy database operations in ServiceWorkerDatabase.
</summary>
</histogram>
<histogram name="ServiceWorker.Database.OpenResult"
enum="ServiceWorkerDatabaseStatus" expires_after="never">
<!-- expires-never: core storage metric; consumed in separate dashboard (go/chrome-storage-dashboard) -->
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of opening a database for ServiceWorkerDatabase.
</summary>
</histogram>
<histogram name="ServiceWorker.Database.ReadResult"
enum="ServiceWorkerDatabaseStatus" expires_after="2023-10-09">
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>Records result of read operations in ServiceWorkerDatabase.</summary>
</histogram>
<histogram name="ServiceWorker.Database.WriteResult"
enum="ServiceWorkerDatabaseStatus" expires_after="2023-10-09">
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of write operations in ServiceWorkerDatabase.
</summary>
</histogram>
<histogram name="ServiceWorker.DiskCache.InitResult" units="units"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of opening a disk cache for ServiceWorkerDiskCache.
</summary>
</histogram>
<histogram name="ServiceWorker.DiskCache.ReadResponseResult"
enum="ServiceWorkerReadResponseResult" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of reading response from ServiceWorkerDiskCache.
</summary>
</histogram>
<histogram name="ServiceWorker.DiskCache.WriteResponseResult"
enum="ServiceWorkerWriteResponseResult" expires_after="2024-03-28">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of writing response into ServiceWorkerDiskCache. This is not
recorded when response has no body. Note that this is recorded on every
write operation, and can there can be multiple write operations for the same
response if it is large enough.
</summary>
</histogram>
<histogram name="ServiceWorker.EmbeddedWorkerInstanceClient.StartWorker"
enum="ServiceWorkerRendererStartWorker" expires_after="M81">
<owner>panicker@chromium.org</owner>
<summary>
Records when StartWorker is received on the renderer. This is used to
surface discrepancy between StartWorker being sent on the browser side and
not getting received by renderer.
EmbeddedWorkerInstance.Start.TimeToSendStartWorker should be used as a
baseline. TODO(panicker): This should be removed after investigation of
crbug/790903, potentially in M68.
</summary>
</histogram>
<histogram name="ServiceWorker.EvaluateTopLevelScript.{ResultStatus}.Time"
units="ms" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Execution time of the service worker's top level script. The metric is
recorded for each startup of service workers. Recorded only when the
evaluation was {ResultStatus}.
</summary>
<token key="ResultStatus">
<variant name="Failed" summary="failed"/>
<variant name="Succeeded" summary="succeeded"/>
</token>
</histogram>
<histogram name="ServiceWorker.ExtendableMessageEvent.Time" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken between dispatching an ExtendableMessageEvent to a Service
Worker and receiving a message that it finished handling the event. Includes
the time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.FetchEvent.Fallback.Time" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken between dispatching a FetchEvent to a Service Worker and
receiving a fallback-to-network reply.
This histogram was expired between roughly 2021-08-01 and 2021-09-30.
</summary>
</histogram>
<histogram name="ServiceWorker.FetchEvent.HasResponse.Time" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken between dispatching a FetchEvent to a Service Worker and
receiving a response. Includes the time for the respondWith() promise to
settle.
</summary>
</histogram>
<histogram name="ServiceWorker.FetchEvent.MainResource.Status"
enum="ServiceWorkerStatusCode" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of dispatching a fetch event to a Service Worker for a main
resource request (i.e., a request for a navigation or a shared worker).
</summary>
</histogram>
<histogram name="ServiceWorker.FetchEvent.QueuingTime" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time that a fetch event was queued. The start time is when the event is
created on the service worker thread and added to the
ServiceWorkerEventQueue. The end time is when the event is dequeued and the
event handler starts to execute.
</summary>
</histogram>
<histogram name="ServiceWorker.FetchEvent.Subresource.Status"
enum="ServiceWorkerStatusCode" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of dispatching a fetch event to a Service Worker for a
subresource request (i.e., not a navigation or a shared worker request).
</summary>
</histogram>
<histogram name="ServiceWorker.FetchEvent.{Resource}.FetchResponseFrom"
enum="ServiceWorkerFetchResponseFrom" expires_after="2023-10-20">
<owner>sisidovski@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of the RaceNetworkRequest. RaceNetworkRequest runs a race between
the network request which bypasses ServiceWorker, and the other request
which goes through the fetch handler. This metric is recorded for
{Resource}.
</summary>
<token key="Resource">
<variant name="MainResource" summary="main resource"/>
<variant name="Subresource" summary="subresource"/>
</token>
</histogram>
<histogram name="ServiceWorker.FetchHandler.SkipReason"
enum="ServiceWorkerFetchHandlerSkipReason" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The reason why the service worker fetch handler has been skipped. If the
fetch handler has not been skipped for any reasons, it is just recorded as
not skipped instead.
</summary>
</histogram>
<histogram name="ServiceWorker.FetchHandler.TypeAtContinueWithActivatedVersion"
enum="ServiceWorkerFetchHandlerType" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The type of the fetch handler recorded just before dispatching the fetch
handler. This represent the fetch handler type, and does not represent if
the fetch handler is skipped or not.
</summary>
</histogram>
<histogram
name="ServiceWorker.FindRegistrationForClientUrl.IsCalledForNavigation"
enum="Boolean" expires_after="2023-12-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Whether FindRegistrationForClientUrl() is called for navigation or not. This
is recorded when FindRegistrationForClientUrl() function is called.
</summary>
</histogram>
<histogram
name="ServiceWorker.FindRegistrationForClientUrl.SkippedMojoCall.OnNavigation"
enum="BooleanSkipped" expires_after="2023-12-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Whether FindRegistrationForClientUrl() could skip calling mojo API by using
scope cache. This is recorded only when FindRegistrationForClientUrl() is
used for navigation.
</summary>
</histogram>
<histogram name="ServiceWorker.FindRegistrationForClientUrl.Time" units="ms"
expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Execution time of FindRegistrationForClientUrl until continuation is called.
The metric is not recorded during startup.
</summary>
</histogram>
<histogram name="ServiceWorker.FoundServiceWorkerRegistrationOnNavigation"
enum="BooleanFound" expires_after="2023-12-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Whether ServiceWorkerControlleeRequestHandler::MaybeCreateLoader found a
service worker registration after looking up the registration by using
FindRegistrationForClientUrl.
</summary>
</histogram>
<histogram name="ServiceWorker.InstallEvent.All.FetchCount" units="fetches"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The number of network fetches performed by the install event handler.
</summary>
</histogram>
<histogram name="ServiceWorker.InstallEvent.{type}.Status"
enum="ServiceWorkerStatusCode" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of dispatching the install event to the worker. This histogram
includes data for {type}.
</summary>
<token key="type">
<variant name="All" summary="all install events"/>
<variant name="WithFetch"
summary="install events that made network fetches"/>
</token>
</histogram>
<histogram name="ServiceWorker.InstallEvent.{type}.Time" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken between dispatching an InstallEvent to a Service Worker and
receiving a message that it finished handling the event. Includes the time
for the waitUntil() promise to settle. This histogram includes data for
{type}.
</summary>
<token key="type">
<variant name="All" summary="all install events"/>
<variant name="WithFetch"
summary="install events that made network fetches"/>
</token>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.FetchHandlerEndToFallbackNetwork{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) renderer process sends an IPC message to notify that
a resource loading request needs to be fall back to network, to (b) browser
process received the IPC. Recorded when no fetch event handler provided a
response to the request.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.FetchHandlerEndToResponseReceived{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) renderer process sends an IPC message to notify that
a promise of respondWith() is settled, to (b) browser process received the
IPC message. Recorded when a fetch event handler handled the request and
provided a response to the request.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.FetchHandlerStartToFetchHandlerEndByFetchResult_{ServiceWorkerFetchEventResult}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) a fetch event is dispatched, to (b) respondWith() is
settled for the fetch event, or fetch event dispatch is finished without
respondWith() being called.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
The records are breakdown by FetchEventResult.
</summary>
<token key="ServiceWorkerFetchEventResult"
variants="ServiceWorkerFetchEventResult"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.FetchHandlerStartToFetchHandlerEnd{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) a fetch event is dispatched, to (b) respondWith() is
settled for the fetch event, or fetch event dispatch is finished without
respondWith() being called.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.ForwardServiceWorkerToWorkerReady2{EmbeddedWorkerInitialStatus}{NavigationType}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) a resource loading request is routed to service
worker path, to (b) a service worker is ready to handle the request.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}{NavigationType}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
<token key="NavigationType" variants="NavigationType"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.ResponseReceivedToCompleted2{ServiceWorkerResponseSource}{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) response headers from service worker are received,
to (b) reading response body is completed. Recorded when a fetch event
handler handled the request.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{ServiceWorkerResponseSource} {EmbeddedWorkerInitialStatus}
</summary>
<token key="ServiceWorkerResponseSource"
variants="ServiceWorkerResponseSource"/>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.StartToCompleted{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of a navigation request, to (b) reading
response body is completed. Recorded when a fetch event handler handled the
request.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.StartToFallbackNetwork{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of a navigation request, to (b) browser
process received the IPC. Recorded when no fetch event handler provided a
response to the request.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.StartToForwardServiceWorker{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of a navigation request, to (b) the
request is forwarded to a service worker code path. This includes looking up
a service worker registration and throttling.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.MainFrame.MainResource.WorkerReadyToFetchHandlerStart{EmbeddedWorkerInitialStatus}"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) browser process sends an IPC message to dispatch a
fetch event, to (b) a renderer process received the IPC message and is about
to dispatch a fetch event.
Recorded for each navigation request (including redirects) where there is a
fetch event handler and the fetch event was successfully dispatched to the
service worker.
{EmbeddedWorkerInitialStatus}
</summary>
<token key="EmbeddedWorkerInitialStatus"
variants="EmbeddedWorkerInitialStatus"/>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.Subresource.FetchHandlerEndToFallbackNetwork"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) service worker sends a mojo message to notify that a
resource loading request needs to be fall back to network, to (b) the mojo
message is received on the other side of mojo endpoint (a background thread
executing subresource loading). Recorded when no fetch event handler
provided a response to the request.
Recorded for each subresource request where there is a fetch event handler
and the fetch event was successfully dispatched to the service worker.
</summary>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.Subresource.FetchHandlerEndToResponseReceived"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) service worker sends a mojo message to notify that a
promise of respondWith() is settled, to (b) the mojo message is received on
the other side of mojo endpoint (a background thread executing subresource
loading). Recorded when a fetch event handler handled the request and
provided a response to the request.
Recorded for each subresource request where there is a fetch event handler
and the fetch event was successfully dispatched to the service worker.
</summary>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.Subresource.ForwardServiceWorkerToWorkerReady"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) a subresource request is routed to the URLLoader (on
a background thread) for service worker controlled loads starts handling a
subresource request, to (b) a service worker is ready to handle the request.
Recorded for each subresource request where there is a fetch event handler
and the fetch event was successfully dispatched to the service worker.
</summary>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.Subresource.ResponseReceivedToCompleted2"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) response headers from service worker are received,
to (b) reading response body is completed. Only recorded when a fetch event
handler handled the request.
Recorded for each subresource request where there is a fetch event handler
and the fetch event was successfully dispatched to the service worker.
</summary>
</histogram>
<histogram
name="ServiceWorker.LoadTiming.Subresource.WorkerReadyToFetchHandlerEnd"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) a fetch event is dispatched, to (b) respondWith() is
settled for the fetch event, or fetch event dispatch is finished without
respondWith() being called.
Recorded for each subresource request where there is a fetch event handler
and the fetch event was successfully dispatched to the service worker.
</summary>
</histogram>
<histogram
name="ServiceWorker.LoadTopLevelScript.{ResultStatus}.{WhetherAlreadyInstalledOrNot}.Time"
units="ms" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Loading time of the service worker's top level script. The metric is
recorded for each startup of service workers. Recorded only when the loading
was {ResultStatus}, and the service worker scripts were
{WhetherAlreadyInstalledOrNot}.
</summary>
<token key="WhetherAlreadyInstalledOrNot">
<variant name="AlreadyInstalled" summary="already installed"/>
<variant name="NewlyInstalled" summary="newly installed"/>
</token>
<token key="ResultStatus">
<variant name="FailedToFetchClassicScript"
summary="failed to fetch classic script"/>
<variant name="FailedToFetchModuleScript"
summary="failed to fetch module script"/>
<variant name="Succeeded" summary="succeeded"/>
</token>
</histogram>
<histogram name="ServiceWorker.MainFrame.MainResource.FetchResult"
enum="ServiceWorkerFetchEventResult" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records the fetch result after the fetch handler has been dispatched. This
is recorded after dispatching the fetch event handler to a service worker,
and it executed the handler without error (i.e. abort or timeout).
</summary>
</histogram>
<histogram name="ServiceWorker.MaybeStartWorker.Purpose"
enum="ServiceWorkerMetrics.EventType" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records the purpose for potentially starting a service worker. This is
recorded every time a running worker is required whether it needs to be
started or not in the ServiceWorkerVersion::RunAfterStartWorker() method.
</summary>
</histogram>
<histogram name="ServiceWorker.MaybeStartWorker.RunningStatus"
enum="EmbeddedWorkerStatus" expires_after="2023-10-08">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Record the current status of a service worker when we need it to be running
for some purpose. If the status is STOPPED or STOPPING then the service
worker will be started. This is recorded from
ServiceWorkerVersion::RunAfterStartWorker().
See also ServiceWorker.MaybeStartWorker.RunningStatusByPurpose_* for the
breakdown by event type.
</summary>
</histogram>
<histogram
name="ServiceWorker.MaybeStartWorker.RunningStatusByPurpose_{ServiceWorkerEventType}"
enum="EmbeddedWorkerStatus" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Record the current status of a service worker when we need it to be running
broken down by the purpose for needing a worker. If the status is STOPPED or
STOPPING then the service worker will be started. This is recorded from
ServiceWorkerVersion::RunAfterStartWorker(). (see
ServiceWorker.MaybeStartWorker.RunningStatus for all attempts).
</summary>
<token key="ServiceWorkerEventType" variants="ServiceWorkerEventType"/>
</histogram>
<histogram name="ServiceWorker.NumberOfRegisteredFetchHandlers"
units="handlers" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The number of fetch handlers registered in a service worker script. This
metrics is recorded every time a service worker starts and only includes
fetch event handlers registered at script evaluation time.
</summary>
</histogram>
<histogram
name="ServiceWorker.OnBrowserStartup.FirstFindRegistrationForClientUrl.Time"
units="ms" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Execution time of FindRegistrationForClientUrl until continuation is called.
It is recorded only once on browser startup.
</summary>
</histogram>
<histogram
name="ServiceWorker.OnBrowserStartup.SkipServiceWorkerOnFirstNavigation"
enum="BooleanSkipped" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Whether the first navigation requires checking the existence of service
worker registration in DB. It is recorded only once on browser startup.
</summary>
</histogram>
<histogram name="ServiceWorker.OnStarted.UpdatedFetchHandlerType"
enum="ServiceWorkerFetchHandlerType" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The type of the fetch handler type to be stored in the database for update.
During the start of ServiceWorker, the fetch handler type is decided, and
sent via OnStarted. If the fetch handler type is different from the fetch
handler type already recognized and stored before, it will eventually be
updated when it is read from the database next time.
This metrics records the name of the new fetch handler detected.
ServiceWorker.OnStarted.UpdatedFetchHandlerTypeBySourceType_* for the
breakdown by the source fetch handler type.
</summary>
</histogram>
<histogram
name="ServiceWorker.OnStarted.UpdatedFetchHandlerTypeBySourceType_{SourceType}"
enum="ServiceWorkerFetchHandlerType" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The type of the fetch handler type to be stored in the database for update
per the source fetch handler type {SourceType} (See
ServiceWorker.OnStarted.UpdatedFetchHandlerType for all attenpts).
During the start of ServiceWorker, the fetch handler type is decided, and
sent via OnStarted. If the fetch handler type is different from the fetch
handler type already recognized and stored before, it will eventually be
updated when it is read from the database next time.
This metrics records the name of the new fetch handler detected.
</summary>
<token key="SourceType">
<variant name="EMPTY_FETCH_HANDLER"
summary="skippable empty fetch handler"/>
<variant name="NO_HANDLER" summary="no fetch handler"/>
<variant name="NOT_SKIPPABLE" summary="not skippable fetch handler"/>
</token>
</histogram>
<histogram name="ServiceWorker.PaymentRequestEvent.Time" units="ms"
expires_after="2023-10-18">
<owner>rouslan@chromium.org</owner>
<owner>web-payments-team@google.com</owner>
<owner>jinho.bang@samsung.com</owner>
<summary>
The time taken between dispatching an PaymentRequestEvent to a Service
Worker and receiving a message that it finished handling the event. Includes
the time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.PeriodicBackgroundSyncEvent.Time" units="ms"
expires_after="2023-10-01">
<owner>nator@chromium.org</owner>
<owner>platform-capabilities@chromium.org</owner>
<summary>
The time taken between dispatching a PeriodicSyncEvent to a Service Worker
and receiving a message that it finished handling the event. Includes the
time for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.PushEvent.Time" units="ms"
expires_after="2022-10-30">
<owner>peter@chromium.org</owner>
<owner>knollr@chromium.org</owner>
<summary>
The time taken between dispatching a PushEvent to a Service Worker and
receiving a message that it finished handling the event. Includes the time
for the waitUntil() promise to settle.
</summary>
</histogram>
<histogram name="ServiceWorker.RegisteredStorageKeyCount" units="origins"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The number of StorageKeys that have a service worker registration. Recorded
near browser startup, when the service worker storage system is initialized.
</summary>
</histogram>
<histogram name="ServiceWorker.ResourceSha256Checksums.Update.Status"
enum="ServiceWorkerStatusCode" expires_after="2023-10-10">
<owner>sisidovski@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of the checksum update operation. Each ServiceWorker resource
should have a sha256 cehcksum hash string in the database, and that will be
updated when there is a change in ServiceWorker scripts, or the field is
empty.
</summary>
</histogram>
<histogram name="ServiceWorker.SkipCallingFindRegistrationForClientUrl"
enum="BooleanSkipped" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Whether the navigation requires checking the existence of service worker
registration by using FindRegistrationForClientUrl(). This metric is not
recorded during startup.
</summary>
</histogram>
<histogram name="ServiceWorker.StartNewWorker.Time" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken to start a Service Worker that has not yet installed, from
process allocation to ACK of started from the renderer (which occurs after
script execution). This may include script download time. The metric is not
recorded if DevTools was ever attached to the Service Worker during startup.
See also ServiceWorker.StartWorker.Time for installed workers.
This histogram was expired between approximately Feb through Sep 2021.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.ClockConsistency"
enum="CrossProcessTimeDelta" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Recorded on each successful service worker startup.
ServiceWorker.StartTiming.* uses timing data from both the renderer process
and browser process. This histogram describes whether the clocks are known
to be accurate and consistent accross processes, and whether the actual
timing data for this worker startup was consistent, i.e., TimeTicks did not
go backwards.
If the clocks and timing were inconsistent, ServiceWorker.StartTiming.*
metrics (other than this one) are not recorded.
This histogram was expired between roughly 2021-07-30 and 2021-09-31.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.Duration" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken to start a service worker that is already installed, from
start of the start sequence (finding a renderer) to ACK of started from the
renderer (which occurs after script execution). The metric is not recorded
if DevTools was ever attached to the Service Worker during startup. It does
not include time, if any, waiting for the service worker to finish stopping
before asking it to start, if that occurred.
This histogram was expired between roughly 2021-07-30 and 2021-09-31.
</summary>
</histogram>
<histogram
name="ServiceWorker.StartTiming.ReceivedStartWorkerToScriptEvaluationStart"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the renderer receiving the start worker IPC message,
to (b) initial JavaScript evaluation starting on the worker thread. Recorded
when ServiceWorker.StartTiming.Duration is recorded.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.ScriptEvaluationEndToEnd" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) initial JavaScript evaluation finishing on the
worker thread, to (b) the browser receiving the worker started IPC message
(the final step of worker startup). Recorded when
ServiceWorker.StartTiming.Duration is recorded.
</summary>
</histogram>
<histogram
name="ServiceWorker.StartTiming.ScriptEvaluationStartToScriptEvaluationEnd"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) initial JavaScript evaluation starting on the worker
thread, to (b) initial JavaScript evaluation finishing on the worker thread.
Recorded when ServiceWorker.StartTiming.Duration is recorded.
</summary>
</histogram>
<histogram
name="ServiceWorker.StartTiming.SentStartWorkerToReceivedStartWorker"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the browser sending the start worker IPC message, to
(b) the renderer receiving the start worker IPC message. Recorded when
ServiceWorker.StartTiming.Duration is recorded.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.StartToReceivedStartWorker"
units="ms" expires_after="2023-10-23">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of service worker startup, to (b) the
renderer receiving the start worker IPC message. Recorded when
ServiceWorker.StartTiming.Duration is recorded.
This histogram was expired between roughly 2021-07-30 and 2021-09-31.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.StartToScriptEvaluationEnd"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of service worker startup, to (b) initial
JavaScript evaluation finishing on the worker thread. Recorded when
ServiceWorker.StartTiming.Duration is recorded.
This histogram was expired between roughly 2021-07-30 and 2021-09-31.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.StartToScriptEvaluationStart"
units="ms" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of service worker startup, to (b) initial
JavaScript evaluation starting on the worker thread. Recorded when
ServiceWorker.StartTiming.Duration is recorded.
This histogram was expired between roughly 2021-07-30 and 2021-09-31.
</summary>
</histogram>
<histogram name="ServiceWorker.StartTiming.StartToSentStartWorker" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken from (a) the start of service worker startup, to (b) the
browser sending the start worker IPC message. Recorded when
ServiceWorker.StartTiming.Duration is recorded.
</summary>
</histogram>
<histogram name="ServiceWorker.StartWorker.Purpose"
enum="ServiceWorkerMetrics.EventType" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The purpose for starting up a service worker. Recorded only for installed
workers.
This histogram was expired between approximately Feb through Sep 2021.
</summary>
</histogram>
<histogram name="ServiceWorker.StartWorker.Status"
enum="ServiceWorkerStatusCode" expires_after="2023-10-08">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of trying to start a Service Worker that is already installed.
See also ServiceWorker.StartNewWorker.Status for new workers. See also
ServiceWorker.StartWorker.StatusByPurpose_* for the breakdown by event type.
</summary>
</histogram>
<histogram
name="ServiceWorker.StartWorker.StatusByPurpose_{ServiceWorkerEventType}"
enum="ServiceWorkerStatusCode" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The result of trying to start a service worker for the event type
{ServiceWorkerEventType} (see ServiceWorker.StartWorker.Status for all start
attempts). Only recorded for installed workers.
</summary>
<token key="ServiceWorkerEventType" variants="ServiceWorkerEventType"/>
</histogram>
<histogram name="ServiceWorker.StartWorker.Time" units="ms"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken to start a Service Worker that is already installed, from
process allocation to ACK of started from the renderer (which occurs after
script execution). The metric is not recorded if DevTools was ever attached
to the Service Worker during startup. See also
ServiceWorker.StartNewWorker.Time for new workers.
</summary>
</histogram>
<histogram name="ServiceWorker.StartWorker.Timeout.StartPurpose"
enum="ServiceWorkerMetrics.EventType" expires_after="2023-10-30">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records the start purpose for a service worker that timed out while starting
up. Recorded only for installed workers.
This histogram was expired between approximately Feb through Sep 2021.
</summary>
</histogram>
<histogram name="ServiceWorker.StartWorker.TimeoutPhase"
enum="EmbeddedWorkerStartingPhase" expires_after="2023-10-30">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The phase the ServiceWorker was in when ServiceWorker startup timed out.
This histogram was expired between approximately Feb through Sep 2021.
</summary>
</histogram>
<histogram name="ServiceWorker.Storage.DeleteAndStartOverResult"
enum="ServiceWorkerDeleteAndStartOverResult" expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records result of storage recovery operations in ServiceWorkerStorage.
</summary>
</histogram>
<histogram
name="ServiceWorker.Storage.FindForClientUrlInDB.ScopeCountForStorageKey"
units="count" expires_after="2023-12-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The scope count for a given StorageKey. This is recorded when
ServiceWorkerStorage::FindForClientUrlInDB() function is called.
</summary>
</histogram>
<histogram name="ServiceWorker.Storage.FindForClientUrlInDB.Time" units="ms"
expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Execution time of ServiceWorkerStorage::FindForClientUrlInDB which is used
by FindRegistrationForClientUrl.
</summary>
</histogram>
<histogram name="ServiceWorker.Storage.PurgeResourceResult"
enum="NetErrorCodes" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Records successes and failures of purging a stale resource in
ServiceWorkerStorage.
</summary>
</histogram>
<histogram name="ServiceWorker.Storage.ReadInitialDataFromDB.Time" units="ms"
expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Execution time of ServiceWorkerStorage::ReadInitialDataFromDB which reads
RegisteredStorageKey from a database.
</summary>
</histogram>
<histogram
name="ServiceWorker.Storage.RegisteredStorageKeyCacheInitialization.Time"
units="ms" expires_after="2023-10-01">
<owner>chikamune@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The cache creation time of service worker registration key on UI thread.
Includes asynchronous call, thread hopping and the time of
ServiceWorker.Storage.ReadInitialDataFromDB.Time.
</summary>
</histogram>
<histogram name="ServiceWorker.Storage.RetryCountForRecovery" units="retries"
expires_after="2023-10-01">
<owner>yyanagisawa@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The counts of retries to recover after a Storage Service crash. Logged after
a recovery, or the maximum number of retries is exceeded. See
ServiceWorkerRegistry::OnRemoteStorageDisconnected() for the maximum number
of retries.
</summary>
</histogram>
<histogram name="ServiceWorker.Storage.RetryQueueSizeForRecovery" units="tasks"
expires_after="2022-10-04">
<owner>joenotcharles@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The number of queued tasks that are waiting to be re-posted after recovering
from a Storage Service crash. Logged at the same time as
ServiceWorker.Storage.RetryCountForRecovery.
</summary>
</histogram>
<histogram name="ServiceWorker.Subresource.Fallbacked.Type2"
enum="ResourceType" expires_after="2023-10-01">
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Type of subresources that is controlled with a service worker, but did not
handled by a service worker (i.e. did not get replied via respondWith). This
metric is taken every time a subresource load finishes.
See ServiceWorker.Subresource.Handled.Type for handled cases.
</summary>
</histogram>
<histogram name="ServiceWorker.Subresource.Handled.Type2" enum="ResourceType"
expires_after="2023-10-01">
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
Type of subresources that is controlled with a service worker, and handled
by a service worker (i.e. get replied via respondWith). This metric is taken
every time a subresource load finishes.
See ServiceWorker.Subresource.Fallbacked.Type for fallbacked cases.
</summary>
</histogram>
<histogram name="ServiceWorker.WorkaroundForCrBug1342408Applied" units="cases"
expires_after="2023-10-01">
<owner>yyanagisawa@google.com</owner>
<owner>chrome-worker@google.com</owner>
<summary>
True if the workaround for crbug.com/1342408 has been applied. Otherwise,
false. The workaround is applied when the response stream call back is
called.
This information is used to understand if we need to continue this
workaround or not.
</summary>
</histogram>
<histogram name="ServiceWorker.{operation}Time" units="ms"
expires_after="2023-10-01">
<owner>cduvall@chromium.org</owner>
<owner>chrome-worker@google.com</owner>
<summary>
The time taken to query the content settings in the browser process for the
{operation} operation. This is recorded each time a sync call is made.
</summary>
<token key="operation">
<variant name="AllowCacheStorage"/>
<variant name="AllowIndexedDB"/>
<variant name="AllowWebLocks"/>
<variant name="RequestFileSystemAccess"/>
</token>
</histogram>
<histogram name="ServiceWorkerCache.Cache.Browser.Match.Initialized" units="ms"
expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time to perform a 'match' operation on a given Cache when that cache is
known to be fully initialized. This includes measurements for hits, misses,
and errors.
</summary>
</histogram>
<histogram name="ServiceWorkerCache.Cache.Browser.Match.RelatedFetchEvent"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time to perform a 'match' operation on a given Cache when the operation
was initiated from a service worker currently processing a FetchEvent with a
matching request URL. This includes measurements for hits, misses, and
errors.
</summary>
</histogram>
<histogram
name="ServiceWorkerCache.Cache.{ServiceWorkerCacheProcessType}.Match.{MatchType}"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time to perform 'match' operations of type {MatchType} on the Cache
object in the ServiceWorker Cache API. This histogram was temporarily
disabled from M96 through early 12/2021.
</summary>
<token key="ServiceWorkerCacheProcessType"
variants="ServiceWorkerCacheProcessType"/>
<token key="MatchType">
<variant name="Hit"
summary="The time to perform a 'match' operation on a given Cache
that successfully results in a Response."/>
<variant name="IgnoreSearch"
summary="The time to perform a 'match' operation on a given Cache
with the 'ignoreSearch' option set. This includes
measurements for hits, misses, and errors."/>
<variant name="Miss"
summary="The time to perform a 'match' operation on a given Cache
that completes successfully, but does not find a matching
entry."/>
</token>
</histogram>
<histogram
name="ServiceWorkerCache.Cache.{ServiceWorkerCacheProcessType}.{ProcessOps}"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time to perform the {ProcessOps} operation on the Cache object in the
ServiceWorker Cache API. This histogram was temporarily disabled from M96
through early 12/2021.
</summary>
<token key="ServiceWorkerCacheProcessType"
variants="ServiceWorkerCacheProcessType"/>
<token key="ProcessOps">
<variant name="DeleteOne"
summary="The time to delete a single Request/Response entry from a
Cache. This measurement includes times for both existing or
non-existant entries."/>
<variant name="Keys"
summary="The time to perform the 'keys' operation on a given Cache.
This includes measurements for both invocations targeting
all entries or only entries for a specific request
parameter."/>
<variant name="Match"
summary="The time to perform a 'match' operation on a given Cache.
This includes measurements for all invocations, including
hits, misses, errors, etc."/>
<variant name="MatchAll"
summary="The time to perform a 'matchAll' operation on a given Cache.
This includes measurements for all invocations, including
hits, misses, and errors. In addition requests for all Cache
entries and for specific request params are included
together in this histogram."/>
<variant name="PutMany"
summary="The time to put a multiple Request/Response entries into a
given Cache. This may or may not include deleting existing
entries that match any of the Requests. This includes
measurements for both successes and failures."/>
<variant name="PutOne"
summary="The time to put a single Request/Response entry into a given
Cache. This may or may not include deleting an existing
entry matching the Request. This includes measurements for
both successes and failures."/>
</token>
</histogram>
<histogram
name="ServiceWorkerCache.CacheStorage.{ServiceWorkerCacheProcessType}.{ProcessOps}"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time to perform the {ProcessOps} operations on the CacheStorage object
in the ServiceWorker Cache API. This histogram was temporarily disabled from
M96 through early 12/2021.
</summary>
<token key="ServiceWorkerCacheProcessType"
variants="ServiceWorkerCacheProcessType"/>
<token key="ProcessOps">
<variant name="Delete"
summary="The time to 'delete' a Cache from the origin's CacheStorage.
If the Cache is still in use then the actual deletion may be
deferred until the last reference is dropped. Additional
time due to deferral is not included in this measurement."/>
<variant name="Has"
summary="The time to perform the 'has' operation on the origin's
CacheStorage."/>
<variant name="Keys"
summary="The time to perform the 'keys' operation on the origin's
CacheStorage."/>
<variant name="MatchAllCaches"
summary="The time to perform a 'match' operation against all caches
associated with the origin's CacheStorage. This histogram
includes measurements for hits, misses, and errors."/>
<variant name="MatchOneCache"
summary="The time to perform a 'match' operation against a single
cache associated with the origin's CacheStorage. This
histogram includes measurements for hits, misses, and
errors."/>
<variant name="Open"
summary="The time to 'open' a Cache in the origin's CacheStorage.
Some opening operations may happen asynchronously after the
'open' returns a Cache object. That deferred asynchronous
work is not included in this measurement."/>
</token>
</histogram>
<histogram name="ServiceWorkerCache.CreateCacheStorageResult"
enum="BooleanCreated" expires_after="M77">
<owner>jkarlin@chromium.org</owner>
<summary>
Whether a new ServiceWorkerCacheStorage and its directory were successfully
created on disk.
</summary>
</histogram>
<histogram name="ServiceWorkerCache.ErrorStorageType"
enum="CacheStorageErrorStorageType" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
Records where the generic kErrorStorage value is triggered within the
cache_storage code. This histogram was temporarily disabled from late
10/2021 to early 12/2021.
</summary>
</histogram>
<histogram name="ServiceWorkerCache.ListOriginsIndexValidity"
enum="CacheStorageIndexResult" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The result from parsing and validating the index protobuf while calculating
the list of cache_storage origins.
</summary>
</histogram>
<histogram
name="ServiceWorkerCache.{ServiceWorkerCacheClientType}.Scheduler.OperationDuration2"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time in ms from when an operation is started until it completes. This
histogram differs from the old OperationDuration in that it uses a different
bucket size to measure longer values.
</summary>
<token key="ServiceWorkerCacheClientType"
variants="ServiceWorkerCacheClientType"/>
</histogram>
<histogram
name="ServiceWorkerCache.{ServiceWorkerCacheClientType}.Scheduler.QueueDuration2"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time in ms from when an operation is started until it completes. This
histogram differs from the old OperationDuration in that it uses a different
bucket size to measure longer values.
</summary>
<token key="ServiceWorkerCacheClientType"
variants="ServiceWorkerCacheClientType"/>
</histogram>
<histogram
name="ServiceWorkerCache.{ServiceWorkerCacheClientType}.Scheduler.QueueLength"
units="operations" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The number of operations in the scheduling queue just before enqueuing a new
operation.
</summary>
<token key="ServiceWorkerCacheClientType"
variants="ServiceWorkerCacheClientType"/>
</histogram>
<histogram
name="ServiceWorkerCache.{ServiceWorkerCacheSchedulerOpClientType}.Scheduler.OperationDuration2.{ServiceWorkerSchedulerOp}"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time in ms from when an operation is started until it completes for the
{ServiceWorkerCacheSchedulerOpClientType} instance.
</summary>
<token key="ServiceWorkerCacheSchedulerOpClientType"
variants="ServiceWorkerCacheSchedulerOpClientType"/>
<token key="ServiceWorkerSchedulerOp" variants="ServiceWorkerSchedulerOp"/>
</histogram>
<histogram
name="ServiceWorkerCache.{ServiceWorkerCacheSchedulerOpClientType}.Scheduler.QueueDuration2.{ServiceWorkerSchedulerOp}"
units="ms" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The time in ms from when an operation is started until it completes for the
{ServiceWorkerCacheSchedulerOpClientType} instance.
</summary>
<token key="ServiceWorkerCacheSchedulerOpClientType"
variants="ServiceWorkerCacheSchedulerOpClientType"/>
<token key="ServiceWorkerSchedulerOp" variants="ServiceWorkerSchedulerOp"/>
</histogram>
<histogram
name="ServiceWorkerCache.{ServiceWorkerCacheSchedulerOpClientType}.Scheduler.QueueLength.{ServiceWorkerSchedulerOp}"
units="operations" expires_after="2024-03-23">
<owner>ayui@chromium.org</owner>
<owner>chrome-owp-storage@google.com</owner>
<summary>
The number of operations in the scheduling queue just before enqueuing a new
operation for the {ServiceWorkerCacheSchedulerOpClientType} instance.
</summary>
<token key="ServiceWorkerCacheSchedulerOpClientType"
variants="ServiceWorkerCacheSchedulerOpClientType"/>
<token key="ServiceWorkerSchedulerOp" variants="ServiceWorkerSchedulerOp"/>
</histogram>
</histograms>
</histogram-configuration>