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 93aaf34f42abaaa282680702e999b9091afaefdf..2eda94ee26b411f615938659ff066988fd59a0a2 100644 |
--- a/content/browser/service_worker/embedded_worker_instance.cc |
+++ b/content/browser/service_worker/embedded_worker_instance.cc |
@@ -240,14 +240,15 @@ class EmbeddedWorkerInstance::StartTask { |
is_installed_(false), |
started_during_browser_startup_(false), |
weak_factory_(this) { |
- TRACE_EVENT_ASYNC_BEGIN1("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- this, "Script", script_url.spec()); |
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1("ServiceWorker", |
leonhsl(Using Gerrit)
2017/04/19 03:43:43
I think using StartTask ctor/dtor to control "Embe
shimazu
2017/04/19 07:54:35
Thanks for explanation! It makes sense.
|
+ "EmbeddedWorkerInstance::Start", |
+ instance_, "Script", script_url.spec()); |
} |
~StartTask() { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- TRACE_EVENT_ASYNC_END0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- this); |
+ TRACE_EVENT_NESTABLE_ASYNC_END0("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", instance_); |
if (!instance_->context_) |
return; |
@@ -320,8 +321,8 @@ class EmbeddedWorkerInstance::StartTask { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
if (status != SERVICE_WORKER_OK) { |
- TRACE_EVENT_ASYNC_STEP_PAST1( |
- "ServiceWorker", "EmbeddedWorkerInstance::Start", this, |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT2( |
+ "ServiceWorker", "EmbeddedWorkerInstance::Start", instance_, "Step", |
shimazu
2017/04/19 07:54:35
Each INSTANT can have different name as long as yo
leonhsl(Using Gerrit)
2017/04/19 10:40:23
I'm not quite sure about this, instead of NESTABLE
shimazu
2017/04/20 04:51:46
Yes, exactly. According to the CL which introduces
leonhsl(Using Gerrit)
2017/04/21 02:46:29
Done.
|
"OnProcessAllocated", "Error", ServiceWorkerStatusToString(status)); |
DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, process_id); |
StatusCallback callback = start_callback_; |
@@ -331,8 +332,8 @@ class EmbeddedWorkerInstance::StartTask { |
return; |
} |
- TRACE_EVENT_ASYNC_STEP_PAST1( |
- "ServiceWorker", "EmbeddedWorkerInstance::Start", this, |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT2( |
+ "ServiceWorker", "EmbeddedWorkerInstance::Start", instance_, "Step", |
"OnProcessAllocated", "Is New Process", is_new_process); |
if (is_installed_) |
ServiceWorkerMetrics::RecordProcessCreated(is_new_process); |
@@ -377,9 +378,9 @@ class EmbeddedWorkerInstance::StartTask { |
int worker_devtools_agent_route_id, |
bool wait_for_debugger) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", |
- "EmbeddedWorkerInstance::Start", this, |
- "OnSetupOnUICompleted"); |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1( |
+ "ServiceWorker", "EmbeddedWorkerInstance::Start", instance_, "Step", |
+ "OnSetupOnUICompleted"); |
// Notify the instance that it is registered to the devtools manager. |
instance_->OnRegisteredToDevToolsManager( |
@@ -591,8 +592,9 @@ ServiceWorkerStatusCode EmbeddedWorkerInstance::SendStartWorker( |
client_->StartWorker(*params, std::move(pending_dispatcher_request_), |
std::move(host_ptr_info)); |
registry_->BindWorkerToProcess(process_id(), embedded_worker_id()); |
- TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- this, "SendStartWorker"); |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", this, |
+ "Step", "SendStartWorker"); |
OnStartWorkerMessageSent(); |
return SERVICE_WORKER_OK; |
} |
@@ -612,7 +614,9 @@ void EmbeddedWorkerInstance::OnStartWorkerMessageSent() { |
} |
void EmbeddedWorkerInstance::OnReadyForInspection() { |
- TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnReadyForInspection"); |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", this, |
+ "Step", "OnReadyForInspection"); |
if (devtools_proxy_) |
devtools_proxy_->NotifyWorkerReadyForInspection(); |
} |
@@ -628,8 +632,6 @@ void EmbeddedWorkerInstance::OnScriptReadFinished() { |
void EmbeddedWorkerInstance::OnScriptLoaded() { |
using LoadSource = ServiceWorkerMetrics::LoadSource; |
- TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnScriptLoaded"); |
- |
if (!inflight_start_task_) |
return; |
LoadSource source; |
@@ -641,9 +643,9 @@ void EmbeddedWorkerInstance::OnScriptLoaded() { |
} else { |
source = LoadSource::HTTP_CACHE; |
} |
- TRACE_EVENT_ASYNC_STEP_PAST1( |
- "ServiceWorker", "EmbeddedWorkerInstance::Start", |
- inflight_start_task_.get(), "OnScriptLoaded", "Source", |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT2( |
+ "ServiceWorker", "EmbeddedWorkerInstance::Start", this, "Step", |
+ "OnScriptLoaded", "Source", |
ServiceWorkerMetrics::LoadSourceToString(source)); |
if (!step_time_.is_null()) { |
@@ -660,8 +662,10 @@ void EmbeddedWorkerInstance::OnScriptLoaded() { |
void EmbeddedWorkerInstance::OnURLJobCreatedForMainScript() { |
if (!inflight_start_task_) |
return; |
- TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- inflight_start_task_.get(), "OnURLJobCreated"); |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", this, |
+ "Step", "OnURLJobCreated"); |
+ |
if (!step_time_.is_null()) { |
base::TimeDelta duration = UpdateStepTime(); |
if (inflight_start_task_->is_installed()) |
@@ -680,7 +684,12 @@ void EmbeddedWorkerInstance::OnWorkerVersionDoomed() { |
} |
void EmbeddedWorkerInstance::OnThreadStarted(int thread_id, int provider_id) { |
- TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnThreadStarted"); |
+ if (!inflight_start_task_) |
+ return; |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", this, |
+ "Step", "OnThreadStarted"); |
+ |
if (!context_) |
return; |
@@ -694,11 +703,6 @@ void EmbeddedWorkerInstance::OnThreadStarted(int thread_id, int provider_id) { |
provider_host->SetReadyToSendMessagesToWorker(thread_id); |
- if (!inflight_start_task_) |
- return; |
- TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- inflight_start_task_.get(), "OnThreadStarted"); |
- |
starting_phase_ = THREAD_STARTED; |
if (!step_time_.is_null()) { |
base::TimeDelta duration = UpdateStepTime(); |
@@ -712,25 +716,25 @@ void EmbeddedWorkerInstance::OnThreadStarted(int thread_id, int provider_id) { |
} |
void EmbeddedWorkerInstance::OnScriptLoadFailed() { |
- TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnScriptLoadFailed"); |
if (!inflight_start_task_) |
return; |
- TRACE_EVENT_ASYNC_STEP_PAST0("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- inflight_start_task_.get(), |
- "OnScriptLoadFailed"); |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", this, |
+ "Step", "OnScriptLoadFailed"); |
+ |
for (auto& observer : listener_list_) |
observer.OnScriptLoadFailed(); |
} |
void EmbeddedWorkerInstance::OnScriptEvaluated(bool success) { |
- TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnScriptEvaluated"); |
if (!inflight_start_task_) |
return; |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT2( |
+ "ServiceWorker", "EmbeddedWorkerInstance::Start", this, "Step", |
+ "OnScriptEvaluated", "Success", success); |
+ |
DCHECK_EQ(EmbeddedWorkerStatus::STARTING, status_); |
- TRACE_EVENT_ASYNC_STEP_PAST1("ServiceWorker", "EmbeddedWorkerInstance::Start", |
- inflight_start_task_.get(), "OnScriptEvaluated", |
- "Success", success); |
starting_phase_ = SCRIPT_EVALUATED; |
if (!step_time_.is_null()) { |
base::TimeDelta duration = UpdateStepTime(); |
@@ -748,12 +752,15 @@ void EmbeddedWorkerInstance::OnScriptEvaluated(bool success) { |
} |
void EmbeddedWorkerInstance::OnStarted() { |
- TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstance::OnStarted"); |
if (!registry_->OnWorkerStarted(process_id(), embedded_worker_id_)) |
return; |
// Stop is requested before OnStarted is sent back from the worker. |
if (status_ == EmbeddedWorkerStatus::STOPPING) |
return; |
+ TRACE_EVENT_NESTABLE_ASYNC_INSTANT1("ServiceWorker", |
+ "EmbeddedWorkerInstance::Start", this, |
+ "Step", "OnStarted"); |
+ |
DCHECK(status_ == EmbeddedWorkerStatus::STARTING); |
status_ = EmbeddedWorkerStatus::RUNNING; |
inflight_start_task_.reset(); |