Skip to content

Commit 958a7a3

Browse files
chikamune-crChromium LUCI CQ
authored and
Chromium LUCI CQ
committed
[Merge 117] Add InitialServiceWorkerStatus histogram
This CL adds InitialServiceWorkerStatus histogram on navigation. (cherry picked from commit c2f203f) Bug: 1431792 Bug: 1471800 Change-Id: I34a12014f948a9fcbe3155fe687cfd76e651fc79 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4764965 Reviewed-by: Shunya Shishido <sisidovski@chromium.org> Reviewed-by: Takashi Toyoshima <toyoshim@chromium.org> Reviewed-by: Kenichi Ishibashi <bashi@chromium.org> Commit-Queue: Minoru Chikamune <chikamune@chromium.org> Cr-Original-Commit-Position: refs/heads/main@{#1181363} Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4778018 Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org> Reviewed-by: Yoshisato Yanagisawa <yyanagisawa@chromium.org> Reviewed-by: Kouhei Ueno <kouhei@chromium.org> Cr-Commit-Position: refs/branch-heads/5938@{#79} Cr-Branched-From: 2b50cb4-refs/heads/main@{#1181205}
1 parent 1b905d7 commit 958a7a3

File tree

4 files changed

+109
-31
lines changed

4 files changed

+109
-31
lines changed

content/browser/service_worker/service_worker_main_resource_loader.cc

+69-28
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,24 @@ ServiceWorkerMainResourceLoader::ServiceWorkerMainResourceLoader(
159159
scoped_refptr<ServiceWorkerVersion> active_worker =
160160
container_host_->controller();
161161
if (active_worker) {
162-
EmbeddedWorkerStatus running_status = active_worker->running_status();
163-
initial_worker_status_ =
164-
EmbeddedWorkerInstance::StatusToString(running_status);
162+
switch (active_worker->running_status()) {
163+
case blink::EmbeddedWorkerStatus::RUNNING:
164+
initial_service_worker_status_ = InitialServiceWorkerStatus::kRunning;
165+
break;
166+
case blink::EmbeddedWorkerStatus::STARTING:
167+
initial_service_worker_status_ = InitialServiceWorkerStatus::kStarting;
168+
break;
169+
case blink::EmbeddedWorkerStatus::STOPPING:
170+
initial_service_worker_status_ = InitialServiceWorkerStatus::kStopping;
171+
break;
172+
case blink::EmbeddedWorkerStatus::STOPPED:
173+
initial_service_worker_status_ = InitialServiceWorkerStatus::kStopped;
174+
break;
175+
}
165176
if (active_worker->IsWarmingUp()) {
166-
initial_worker_status_ = "WARMING_UP";
177+
initial_service_worker_status_ = InitialServiceWorkerStatus::kWarmingUp;
167178
} else if (active_worker->IsWarmedUp()) {
168-
initial_worker_status_ = "WARMED_UP";
179+
initial_service_worker_status_ = InitialServiceWorkerStatus::kWarmedUp;
169180
}
170181
}
171182

@@ -800,12 +811,31 @@ void ServiceWorkerMainResourceLoader::DeleteIfNeeded() {
800811
delete this;
801812
}
802813

814+
std::string
815+
ServiceWorkerMainResourceLoader::GetInitialServiceWorkerStatusString() {
816+
CHECK(initial_service_worker_status_);
817+
switch (*initial_service_worker_status_) {
818+
case InitialServiceWorkerStatus::kRunning:
819+
return "RUNNING";
820+
case InitialServiceWorkerStatus::kStarting:
821+
return "STARTING";
822+
case InitialServiceWorkerStatus::kStopping:
823+
return "STOPPING";
824+
case InitialServiceWorkerStatus::kStopped:
825+
return "STOPPED";
826+
case InitialServiceWorkerStatus::kWarmingUp:
827+
return "WARMING_UP";
828+
case InitialServiceWorkerStatus::kWarmedUp:
829+
return "WARMED_UP";
830+
}
831+
}
832+
803833
void ServiceWorkerMainResourceLoader::
804834
RecordTimingMetricsForFetchHandlerHandledCase() {
805835
if (!IsEligibleForRecordingTimingMetrics()) {
806836
return;
807837
}
808-
CHECK(initial_worker_status_);
838+
CHECK(initial_service_worker_status_);
809839
RecordFindRegistrationToCompletedTrace();
810840
RecordFindRegistrationToRequestStartTiming();
811841
RecordRequestStartToForwardServiceWorkerTiming();
@@ -824,7 +854,7 @@ void ServiceWorkerMainResourceLoader::
824854
if (!IsEligibleForRecordingTimingMetrics()) {
825855
return;
826856
}
827-
CHECK(initial_worker_status_);
857+
CHECK(initial_service_worker_status_);
828858
RecordFindRegistrationToCompletedTrace();
829859
RecordFindRegistrationToRequestStartTiming();
830860
RecordRequestStartToForwardServiceWorkerTiming();
@@ -842,7 +872,7 @@ void ServiceWorkerMainResourceLoader::
842872
if (!IsEligibleForRecordingTimingMetrics()) {
843873
return;
844874
}
845-
CHECK(initial_worker_status_);
875+
CHECK(initial_service_worker_status_);
846876
RecordFindRegistrationToCompletedTrace();
847877
RecordFindRegistrationToRequestStartTiming();
848878
RecordFindRegistrationToCompletedTiming();
@@ -904,8 +934,17 @@ void ServiceWorkerMainResourceLoader::
904934
request_start - find_registration_start_time_);
905935
base::UmaHistogramMediumTimes(
906936
base::StrCat({kHistogramLoadTiming, ".FindRegistrationToRequestStart.",
907-
*initial_worker_status_}),
937+
GetInitialServiceWorkerStatusString()}),
908938
request_start - find_registration_start_time_);
939+
base::UmaHistogramEnumeration(
940+
"ServiceWorker.LoadTiming.MainFrame.MainResource."
941+
"InitialServiceWorkerStatus",
942+
*initial_service_worker_status_);
943+
base::UmaHistogramEnumeration(
944+
base::StrCat({"ServiceWorker.LoadTiming.MainFrame.MainResource."
945+
"InitialServiceWorkerStatus.",
946+
ComposeNavigationTypeString(resource_request_)}),
947+
*initial_service_worker_status_);
909948
}
910949

911950
void ServiceWorkerMainResourceLoader::
@@ -916,7 +955,7 @@ void ServiceWorkerMainResourceLoader::
916955
load_timing.service_worker_start_time - load_timing.request_start);
917956
base::UmaHistogramTimes(
918957
base::StrCat({kHistogramLoadTiming, ".StartToForwardServiceWorker.",
919-
*initial_worker_status_}),
958+
GetInitialServiceWorkerStatusString()}),
920959
load_timing.service_worker_start_time - load_timing.request_start);
921960
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(
922961
"ServiceWorker", "RequestStartToForwardServiceWorker", this,
@@ -940,29 +979,31 @@ void ServiceWorkerMainResourceLoader::
940979
base::UmaHistogramMediumTimes(
941980
base::StrCat({kHistogramLoadTiming,
942981
".ForwardServiceWorkerToWorkerReady2.",
943-
*initial_worker_status_}),
982+
GetInitialServiceWorkerStatusString()}),
944983
time);
945984
base::UmaHistogramMediumTimes(
946985
base::StrCat({kHistogramLoadTiming,
947986
".ForwardServiceWorkerToWorkerReady2.",
948987
navigation_type_string}),
949988
time);
950989
base::UmaHistogramMediumTimes(
951-
base::StrCat({kHistogramLoadTiming,
952-
".ForwardServiceWorkerToWorkerReady2.",
953-
*initial_worker_status_, ".", navigation_type_string}),
990+
base::StrCat(
991+
{kHistogramLoadTiming, ".ForwardServiceWorkerToWorkerReady2.",
992+
GetInitialServiceWorkerStatusString(), ".", navigation_type_string}),
954993
time);
955994
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP1(
956995
"ServiceWorker",
957996
base::StrCat({"ForwardServiceWorkerToWorkerReady.",
958-
*initial_worker_status_, ".", navigation_type_string})
997+
GetInitialServiceWorkerStatusString(), ".",
998+
navigation_type_string})
959999
.c_str(),
960-
this, load_timing.service_worker_start_time, "*initial_worker_status_",
961-
*initial_worker_status_);
1000+
this, load_timing.service_worker_start_time,
1001+
"initial_service_worker_status", GetInitialServiceWorkerStatusString());
9621002
TRACE_EVENT_NESTABLE_ASYNC_END_WITH_TIMESTAMP0(
9631003
"ServiceWorker",
9641004
base::StrCat({"ForwardServiceWorkerToWorkerReady.",
965-
*initial_worker_status_, ".", navigation_type_string})
1005+
GetInitialServiceWorkerStatusString(), ".",
1006+
navigation_type_string})
9661007
.c_str(),
9671008
this, load_timing.service_worker_ready_time);
9681009
}
@@ -977,7 +1018,7 @@ void ServiceWorkerMainResourceLoader::
9771018
load_timing.service_worker_ready_time);
9781019
base::UmaHistogramTimes(
9791020
base::StrCat({kHistogramLoadTiming, ".WorkerReadyToFetchHandlerStart.",
980-
*initial_worker_status_}),
1021+
GetInitialServiceWorkerStatusString()}),
9811022
fetch_event_timing_->dispatch_event_time -
9821023
load_timing.service_worker_ready_time);
9831024
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(
@@ -997,7 +1038,7 @@ void ServiceWorkerMainResourceLoader::
9971038
fetch_event_timing_->dispatch_event_time);
9981039
base::UmaHistogramTimes(base::StrCat({kHistogramLoadTiming,
9991040
".FetchHandlerStartToFetchHandlerEnd.",
1000-
*initial_worker_status_}),
1041+
GetInitialServiceWorkerStatusString()}),
10011042
fetch_event_timing_->respond_with_settled_time -
10021043
fetch_event_timing_->dispatch_event_time);
10031044
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(
@@ -1018,7 +1059,7 @@ void ServiceWorkerMainResourceLoader::
10181059
fetch_event_timing_->respond_with_settled_time);
10191060
base::UmaHistogramTimes(
10201061
base::StrCat({kHistogramLoadTiming, ".FetchHandlerEndToResponseReceived.",
1021-
*initial_worker_status_}),
1062+
GetInitialServiceWorkerStatusString()}),
10221063
load_timing.receive_headers_end -
10231064
fetch_event_timing_->respond_with_settled_time);
10241065
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(
@@ -1037,7 +1078,7 @@ void ServiceWorkerMainResourceLoader::
10371078
completion_time_ - load_timing.receive_headers_end);
10381079
base::UmaHistogramMediumTimes(
10391080
base::StrCat({kHistogramLoadTiming, ".ResponseReceivedToCompleted2.",
1040-
*initial_worker_status_}),
1081+
GetInitialServiceWorkerStatusString()}),
10411082
completion_time_ - load_timing.receive_headers_end);
10421083
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP1(
10431084
"ServiceWorker", "ResponseReceivedToCompleted", this,
@@ -1058,7 +1099,7 @@ void ServiceWorkerMainResourceLoader::
10581099
{kHistogramLoadTiming, ".ResponseReceivedToCompleted2.",
10591100
blink::ServiceWorkerLoaderHelpers::FetchResponseSourceToSuffix(
10601101
response_source_),
1061-
".", *initial_worker_status_}),
1102+
".", GetInitialServiceWorkerStatusString()}),
10621103
completion_time_ - load_timing.receive_headers_end);
10631104
}
10641105

@@ -1069,7 +1110,7 @@ void ServiceWorkerMainResourceLoader::
10691110
completion_time_ - find_registration_start_time_);
10701111
base::UmaHistogramMediumTimes(
10711112
base::StrCat({kHistogramLoadTiming, ".FindRegistrationToCompleted.",
1072-
*initial_worker_status_}),
1113+
GetInitialServiceWorkerStatusString()}),
10731114
completion_time_ - find_registration_start_time_);
10741115
}
10751116

@@ -1080,7 +1121,7 @@ void ServiceWorkerMainResourceLoader::RecordRequestStartToCompletedTiming(
10801121
completion_time_ - request_start);
10811122
base::UmaHistogramMediumTimes(
10821123
base::StrCat({kHistogramLoadTiming, ".StartToCompleted.",
1083-
*initial_worker_status_}),
1124+
GetInitialServiceWorkerStatusString()}),
10841125
completion_time_ - request_start);
10851126
}
10861127

@@ -1092,7 +1133,7 @@ void ServiceWorkerMainResourceLoader::
10921133
completion_time_ - find_registration_start_time_);
10931134
base::UmaHistogramMediumTimes(
10941135
base::StrCat({kHistogramLoadTiming, ".FindRegistrationToFallbackNetwork.",
1095-
*initial_worker_status_}),
1136+
GetInitialServiceWorkerStatusString()}),
10961137
completion_time_ - find_registration_start_time_);
10971138
}
10981139

@@ -1103,7 +1144,7 @@ void ServiceWorkerMainResourceLoader::RecordStartToFallbackNetworkTiming() {
11031144
completion_time_ - load_timing.request_start);
11041145
base::UmaHistogramMediumTimes(
11051146
base::StrCat({kHistogramLoadTiming, ".StartToFallbackNetwork.",
1106-
*initial_worker_status_}),
1147+
GetInitialServiceWorkerStatusString()}),
11071148
completion_time_ - load_timing.request_start);
11081149
}
11091150

@@ -1115,7 +1156,7 @@ void ServiceWorkerMainResourceLoader::
11151156
completion_time_ - fetch_event_timing_->respond_with_settled_time);
11161157
base::UmaHistogramTimes(
11171158
base::StrCat({kHistogramLoadTiming, ".FetchHandlerEndToFallbackNetwork.",
1118-
*initial_worker_status_}),
1159+
GetInitialServiceWorkerStatusString()}),
11191160
completion_time_ - fetch_event_timing_->respond_with_settled_time);
11201161
TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(
11211162
"ServiceWorker", "FetchHandlerEndToFallbackNetwork", this,

content/browser/service_worker/service_worker_main_resource_loader.h

+14-3
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ class CONTENT_EXPORT ServiceWorkerMainResourceLoader
189189
void OnConnectionClosed();
190190
void DeleteIfNeeded();
191191

192+
std::string GetInitialServiceWorkerStatusString();
192193
bool IsEligibleForRecordingTimingMetrics();
193194
void RecordFindRegistrationToCompletedTrace();
194195
// Called when the fetch handler handles the request.
@@ -266,9 +267,19 @@ class CONTENT_EXPORT ServiceWorkerMainResourceLoader
266267
mojo::Receiver<network::mojom::URLLoader> receiver_{this};
267268

268269
Status status_ = Status::kNotStarted;
269-
// `initial_worker_status_` stores one of the string representations of
270-
// EmbeddedWorkerStatus or "WARMING_UP" or "WARMED_UP".
271-
absl::optional<std::string> initial_worker_status_;
270+
271+
// These values are persisted to logs. Entries should not be renumbered and
272+
// numeric values should never be reused.
273+
enum class InitialServiceWorkerStatus {
274+
kRunning = 0,
275+
kStarting = 1,
276+
kStopping = 2,
277+
kStopped = 3,
278+
kWarmingUp = 4,
279+
kWarmedUp = 5,
280+
kMaxValue = kWarmedUp,
281+
};
282+
absl::optional<InitialServiceWorkerStatus> initial_service_worker_status_;
272283
bool is_detached_ = false;
273284

274285
scoped_refptr<network::SharedURLLoaderFactory>

tools/metrics/histograms/enums.xml

+9
Original file line numberDiff line numberDiff line change
@@ -53855,6 +53855,15 @@ Unsupported non-ascii characters will cause issues with xml presubmits.
5385553855
<int value="3" label="3G"/>
5385653856
</enum>
5385753857

53858+
<enum name="InitialServiceWorkerStatus">
53859+
<int value="0" label="kRunning"/>
53860+
<int value="1" label="kStarting"/>
53861+
<int value="2" label="kStopping"/>
53862+
<int value="3" label="kStopped"/>
53863+
<int value="4" label="kWarmingUp"/>
53864+
<int value="5" label="kWarmedUp"/>
53865+
</enum>
53866+
5385853867
<enum name="InitiatorAccess">
5385953868
<int value="0" label="Initiator absent"/>
5386053869
<int value="1" label="No access"/>

tools/metrics/histograms/metadata/service/histograms.xml

+17
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,23 @@ chromium-metrics-reviews@google.com.
786786
<token key="NavigationType" variants="NavigationType"/>
787787
</histogram>
788788

789+
<histogram
790+
name="ServiceWorker.LoadTiming.MainFrame.MainResource.InitialServiceWorkerStatus{NavigationType}"
791+
enum="InitialServiceWorkerStatus" expires_after="2023-12-04">
792+
<owner>chikamune@chromium.org</owner>
793+
<owner>chrome-worker@google.com</owner>
794+
<summary>
795+
The initial service worker status.
796+
797+
Recorded for each navigation request (including redirects) where there is a
798+
fetch event handler and the fetch event was successfully dispatched to the
799+
service worker.
800+
801+
{NavigationType}
802+
</summary>
803+
<token key="NavigationType" variants="NavigationType"/>
804+
</histogram>
805+
789806
<histogram
790807
name="ServiceWorker.LoadTiming.MainFrame.MainResource.ResponseReceivedToCompleted2{ServiceWorkerResponseSource}{EmbeddedWorkerInitialStatus}"
791808
units="ms" expires_after="2024-06-01">

0 commit comments

Comments
 (0)