Commit 751fde5d authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

Replace ASYNC traces with FLOW traces in ServiceWorkerFetchDispatcher

To generate better trace log for performance investigation.

Bug: 1011214
Change-Id: Ic7548af0f039bd8c67b8a990b66bfea88ff43ee9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1843801
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Reviewed-by: default avatarMakoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#703559}
parent a5f4416e
...@@ -457,31 +457,31 @@ ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher( ...@@ -457,31 +457,31 @@ ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher(
version_(std::move(version)), version_(std::move(version)),
resource_type_(resource_type), resource_type_(resource_type),
prepare_callback_(std::move(prepare_callback)), prepare_callback_(std::move(prepare_callback)),
fetch_callback_(std::move(fetch_callback)), fetch_callback_(std::move(fetch_callback)) {
did_complete_(false) {
DCHECK(!request_->blob); DCHECK(!request_->blob);
TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( TRACE_EVENT_WITH_FLOW1(
"ServiceWorker", "ServiceWorkerFetchDispatcher::DispatchFetchEvent", this, "ServiceWorker",
"event_type", ServiceWorkerMetrics::EventTypeToString(GetEventType())); "ServiceWorkerFetchDispatcher::ServiceWorkerFetchDispatcher",
TRACE_ID_LOCAL(this), TRACE_EVENT_FLAG_FLOW_OUT, "event_type",
ServiceWorkerMetrics::EventTypeToString(GetEventType()));
} }
ServiceWorkerFetchDispatcher::~ServiceWorkerFetchDispatcher() { ServiceWorkerFetchDispatcher::~ServiceWorkerFetchDispatcher() {
if (!did_complete_) { TRACE_EVENT_WITH_FLOW0(
TRACE_EVENT_NESTABLE_ASYNC_END0( "ServiceWorker",
"ServiceWorker", "ServiceWorkerFetchDispatcher::DispatchFetchEvent", "ServiceWorkerFetchDispatcher::~ServiceWorkerFetchDispatcher",
this); TRACE_ID_LOCAL(this), TRACE_EVENT_FLAG_FLOW_IN);
}
} }
void ServiceWorkerFetchDispatcher::Run() { void ServiceWorkerFetchDispatcher::Run() {
DCHECK(version_->status() == ServiceWorkerVersion::ACTIVATING || DCHECK(version_->status() == ServiceWorkerVersion::ACTIVATING ||
version_->status() == ServiceWorkerVersion::ACTIVATED) version_->status() == ServiceWorkerVersion::ACTIVATED)
<< version_->status(); << version_->status();
TRACE_EVENT_WITH_FLOW0("ServiceWorker", "ServiceWorkerFetchDispatcher::Run",
TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
if (version_->status() == ServiceWorkerVersion::ACTIVATING) { if (version_->status() == ServiceWorkerVersion::ACTIVATING) {
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(
"ServiceWorker", "ServiceWorkerFetchDispatcher::WaitForActivation",
this);
version_->RegisterStatusChangeCallback( version_->RegisterStatusChangeCallback(
base::BindOnce(&ServiceWorkerFetchDispatcher::DidWaitForActivation, base::BindOnce(&ServiceWorkerFetchDispatcher::DidWaitForActivation,
weak_factory_.GetWeakPtr())); weak_factory_.GetWeakPtr()));
...@@ -491,12 +491,19 @@ void ServiceWorkerFetchDispatcher::Run() { ...@@ -491,12 +491,19 @@ void ServiceWorkerFetchDispatcher::Run() {
} }
void ServiceWorkerFetchDispatcher::DidWaitForActivation() { void ServiceWorkerFetchDispatcher::DidWaitForActivation() {
TRACE_EVENT_NESTABLE_ASYNC_END0( TRACE_EVENT_WITH_FLOW0("ServiceWorker",
"ServiceWorker", "ServiceWorkerFetchDispatcher::WaitForActivation", this); "ServiceWorkerFetchDispatcher::DidWaitForActivation",
TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
StartWorker(); StartWorker();
} }
void ServiceWorkerFetchDispatcher::StartWorker() { void ServiceWorkerFetchDispatcher::StartWorker() {
TRACE_EVENT_WITH_FLOW0("ServiceWorker",
"ServiceWorkerFetchDispatcher::StartWorker",
TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
// We might be REDUNDANT if a new worker started activating and kicked us out // We might be REDUNDANT if a new worker started activating and kicked us out
// before we could finish activation. // before we could finish activation.
if (version_->status() != ServiceWorkerVersion::ACTIVATED) { if (version_->status() != ServiceWorkerVersion::ACTIVATED) {
...@@ -510,8 +517,6 @@ void ServiceWorkerFetchDispatcher::StartWorker() { ...@@ -510,8 +517,6 @@ void ServiceWorkerFetchDispatcher::StartWorker() {
return; return;
} }
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(
"ServiceWorker", "ServiceWorkerFetchDispatcher::StartWorker", this);
version_->RunAfterStartWorker( version_->RunAfterStartWorker(
GetEventType(), GetEventType(),
base::BindOnce(&ServiceWorkerFetchDispatcher::DidStartWorker, base::BindOnce(&ServiceWorkerFetchDispatcher::DidStartWorker,
...@@ -520,9 +525,11 @@ void ServiceWorkerFetchDispatcher::StartWorker() { ...@@ -520,9 +525,11 @@ void ServiceWorkerFetchDispatcher::StartWorker() {
void ServiceWorkerFetchDispatcher::DidStartWorker( void ServiceWorkerFetchDispatcher::DidStartWorker(
blink::ServiceWorkerStatusCode status) { blink::ServiceWorkerStatusCode status) {
TRACE_EVENT_NESTABLE_ASYNC_END1("ServiceWorker", TRACE_EVENT_WITH_FLOW0("ServiceWorker",
"ServiceWorkerFetchDispatcher::StartWorker", "ServiceWorkerFetchDispatcher::DidStartWorker",
this, "status", status); TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
if (status != blink::ServiceWorkerStatusCode::kOk) { if (status != blink::ServiceWorkerStatusCode::kOk) {
DidFail(status); DidFail(status);
return; return;
...@@ -533,6 +540,10 @@ void ServiceWorkerFetchDispatcher::DidStartWorker( ...@@ -533,6 +540,10 @@ void ServiceWorkerFetchDispatcher::DidStartWorker(
void ServiceWorkerFetchDispatcher::DispatchFetchEvent() { void ServiceWorkerFetchDispatcher::DispatchFetchEvent() {
DCHECK_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()) DCHECK_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status())
<< "Worker stopped too soon after it was started."; << "Worker stopped too soon after it was started.";
TRACE_EVENT_WITH_FLOW0("ServiceWorker",
"ServiceWorkerFetchDispatcher::DispatchFetchEvent",
TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
// Grant the service worker's process access to files in the request body. // Grant the service worker's process access to files in the request body.
if (request_->body) { if (request_->body) {
...@@ -543,8 +554,6 @@ void ServiceWorkerFetchDispatcher::DispatchFetchEvent() { ...@@ -543,8 +554,6 @@ void ServiceWorkerFetchDispatcher::DispatchFetchEvent() {
// Run callback to say that the fetch event will be dispatched. // Run callback to say that the fetch event will be dispatched.
DCHECK(prepare_callback_); DCHECK(prepare_callback_);
std::move(prepare_callback_).Run(); std::move(prepare_callback_).Run();
TRACE_EVENT_NESTABLE_ASYNC_BEGIN0(
"ServiceWorker", "ServiceWorkerFetchDispatcher::FetchEvent", this);
// Set up for receiving the response. // Set up for receiving the response.
mojo::PendingRemote<blink::mojom::ServiceWorkerFetchResponseCallback> mojo::PendingRemote<blink::mojom::ServiceWorkerFetchResponseCallback>
...@@ -591,15 +600,16 @@ void ServiceWorkerFetchDispatcher::DispatchFetchEvent() { ...@@ -591,15 +600,16 @@ void ServiceWorkerFetchDispatcher::DispatchFetchEvent() {
void ServiceWorkerFetchDispatcher::DidFailToDispatch( void ServiceWorkerFetchDispatcher::DidFailToDispatch(
std::unique_ptr<ResponseCallback> response_callback, std::unique_ptr<ResponseCallback> response_callback,
blink::ServiceWorkerStatusCode status) { blink::ServiceWorkerStatusCode status) {
TRACE_EVENT_NESTABLE_ASYNC_END1("ServiceWorker",
"ServiceWorkerFetchDispatcher::FetchEvent",
this, "status", status);
DidFail(status); DidFail(status);
} }
void ServiceWorkerFetchDispatcher::DidFail( void ServiceWorkerFetchDispatcher::DidFail(
blink::ServiceWorkerStatusCode status) { blink::ServiceWorkerStatusCode status) {
DCHECK_NE(blink::ServiceWorkerStatusCode::kOk, status); DCHECK_NE(blink::ServiceWorkerStatusCode::kOk, status);
TRACE_EVENT_WITH_FLOW1(
"ServiceWorker", "ServiceWorkerFetchDispatcher::DidFail",
TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT, "status", status);
Complete(status, FetchEventResult::kShouldFallback, Complete(status, FetchEventResult::kShouldFallback,
blink::mojom::FetchAPIResponse::New(), nullptr /* body_as_stream */, blink::mojom::FetchAPIResponse::New(), nullptr /* body_as_stream */,
nullptr /* timing */); nullptr /* timing */);
...@@ -611,8 +621,10 @@ void ServiceWorkerFetchDispatcher::DidFinish( ...@@ -611,8 +621,10 @@ void ServiceWorkerFetchDispatcher::DidFinish(
blink::mojom::FetchAPIResponsePtr response, blink::mojom::FetchAPIResponsePtr response,
blink::mojom::ServiceWorkerStreamHandlePtr body_as_stream, blink::mojom::ServiceWorkerStreamHandlePtr body_as_stream,
blink::mojom::ServiceWorkerFetchEventTimingPtr timing) { blink::mojom::ServiceWorkerFetchEventTimingPtr timing) {
TRACE_EVENT_NESTABLE_ASYNC_END0( TRACE_EVENT_WITH_FLOW0("ServiceWorker",
"ServiceWorker", "ServiceWorkerFetchDispatcher::FetchEvent", this); "ServiceWorkerFetchDispatcher::DidFinish",
TRACE_ID_LOCAL(this),
TRACE_EVENT_FLAG_FLOW_IN | TRACE_EVENT_FLAG_FLOW_OUT);
Complete(blink::ServiceWorkerStatusCode::kOk, fetch_result, Complete(blink::ServiceWorkerStatusCode::kOk, fetch_result,
std::move(response), std::move(body_as_stream), std::move(timing)); std::move(response), std::move(body_as_stream), std::move(timing));
} }
...@@ -625,10 +637,6 @@ void ServiceWorkerFetchDispatcher::Complete( ...@@ -625,10 +637,6 @@ void ServiceWorkerFetchDispatcher::Complete(
blink::mojom::ServiceWorkerFetchEventTimingPtr timing) { blink::mojom::ServiceWorkerFetchEventTimingPtr timing) {
DCHECK(fetch_callback_); DCHECK(fetch_callback_);
did_complete_ = true;
TRACE_EVENT_NESTABLE_ASYNC_END1(
"ServiceWorker", "ServiceWorkerFetchDispatcher::DispatchFetchEvent", this,
"result", fetch_result);
std::move(fetch_callback_) std::move(fetch_callback_)
.Run(status, fetch_result, std::move(response), std::move(body_as_stream), .Run(status, fetch_result, std::move(response), std::move(body_as_stream),
std::move(timing), version_); std::move(timing), version_);
......
...@@ -114,7 +114,6 @@ class CONTENT_EXPORT ServiceWorkerFetchDispatcher { ...@@ -114,7 +114,6 @@ class CONTENT_EXPORT ServiceWorkerFetchDispatcher {
const ResourceType resource_type_; const ResourceType resource_type_;
base::OnceClosure prepare_callback_; base::OnceClosure prepare_callback_;
FetchCallback fetch_callback_; FetchCallback fetch_callback_;
bool did_complete_;
scoped_refptr<URLLoaderAssets> url_loader_assets_; scoped_refptr<URLLoaderAssets> url_loader_assets_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment