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

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

Issue 962543005: Service Worker: Add metrics and timeout for starting a Service Worker. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: self-review Created 5 years, 10 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/embedded_worker_instance.cc
diff --git a/content/browser/service_worker/embedded_worker_instance.cc b/content/browser/service_worker/embedded_worker_instance.cc
index 8d589eae349080d314afbfff5736af395f6c24b9..de98044598ee5b4ba110377c359f95a10af1eda0 100644
--- a/content/browser/service_worker/embedded_worker_instance.cc
+++ b/content/browser/service_worker/embedded_worker_instance.cc
@@ -145,6 +145,7 @@ void EmbeddedWorkerInstance::Start(int64 service_worker_version_id,
DCHECK(status_ == STOPPED);
start_timing_ = base::TimeTicks::Now();
status_ = STARTING;
+ starting_phase_ = ALLOCATE_PROCESS;
network_accessed_for_script_ = false;
scoped_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
new EmbeddedWorkerMsg_StartWorker_Params());
@@ -266,6 +267,7 @@ void EmbeddedWorkerInstance::ProcessAllocated(
// Register this worker to DevToolsManager on UI thread, then continue to
// call SendStartWorker on IO thread.
+ starting_phase_ = REGISTER_TO_DEVTOOLS;
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
@@ -305,6 +307,8 @@ void EmbeddedWorkerInstance::SendStartWorker(
// allocation time.
start_timing_ = base::TimeTicks::Now();
}
+
+ starting_phase_ = SEND_START_WORKER;
ServiceWorkerStatusCode status =
registry_->SendStartWorker(params.Pass(), process_id_);
if (status != SERVICE_WORKER_OK) {
@@ -321,6 +325,7 @@ void EmbeddedWorkerInstance::OnReadyForInspection() {
}
void EmbeddedWorkerInstance::OnScriptLoaded(int thread_id) {
+ starting_phase_ = SCRIPT_LOADED;
if (!start_timing_.is_null()) {
if (network_accessed_for_script_) {
UMA_HISTOGRAM_TIMES("EmbeddedWorkerInstance.ScriptLoadWithNetworkAccess",
@@ -342,6 +347,7 @@ void EmbeddedWorkerInstance::OnScriptLoadFailed() {
}
void EmbeddedWorkerInstance::OnScriptEvaluated(bool success) {
+ starting_phase_ = SCRIPT_EVALUATED;
if (success && !start_timing_.is_null()) {
UMA_HISTOGRAM_TIMES("EmbeddedWorkerInstance.ScriptEvaluate",
base::TimeTicks::Now() - start_timing_);
@@ -434,7 +440,48 @@ void EmbeddedWorkerInstance::RemoveListener(Listener* listener) {
}
void EmbeddedWorkerInstance::OnNetworkAccessedForScriptLoad() {
+ starting_phase_ = SCRIPT_DOWNLOAD;
network_accessed_for_script_ = true;
}
+// static
+std::string EmbeddedWorkerInstance::StatusToString(Status status) {
+ switch (status) {
+ case STOPPED:
+ return "STOPPED";
+ case STARTING:
+ return "STARTING";
+ case RUNNING:
+ return "RUNNING";
+ case STOPPING:
+ return "STOPPING";
+ }
+ NOTREACHED() << status;
+ return std::string();
+}
+
+// static
+std::string EmbeddedWorkerInstance::StartingPhaseToString(StartingPhase phase) {
+ switch (phase) {
+ case NOT_STARTING:
+ return "Not in STARTING status";
+ case ALLOCATE_PROCESS:
+ return "Allocate process";
+ case REGISTER_TO_DEVTOOLS:
+ return "Register to DevTools";
+ case SEND_START_WORKER:
+ return "Send StartWorker message to renderer";
+ case SCRIPT_DOWNLOAD:
kinuko 2015/03/02 03:19:33 nit: This one looks slightly inconsistent from oth
falken 2015/03/02 04:19:16 Adjusted the names a bit, how's this?
+ return "Script download";
+ case SCRIPT_LOADED:
+ return "Script loaded";
+ case SCRIPT_EVALUATED:
+ return "Script evaluated";
+ case STARTING_PHASE_MAX_VALUE:
+ NOTREACHED();
+ }
+ NOTREACHED() << phase;
+ return std::string();
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698