Chromium Code Reviews| 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 |