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

Side by Side Diff: content/browser/service_worker/service_worker_controllee_request_handler.cc

Issue 538913002: ServiceWorker: Insert TRACE_EVENT to watch a breakdown of the ServiceWorker's performance on chome:… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Change messages in TRACE_EVENTs Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h" 5 #include "content/browser/service_worker/service_worker_controllee_request_handl er.h"
6 6
7 #include "base/debug/trace_event.h"
7 #include "content/browser/service_worker/service_worker_context_core.h" 8 #include "content/browser/service_worker/service_worker_context_core.h"
8 #include "content/browser/service_worker/service_worker_metrics.h" 9 #include "content/browser/service_worker/service_worker_metrics.h"
9 #include "content/browser/service_worker/service_worker_provider_host.h" 10 #include "content/browser/service_worker/service_worker_provider_host.h"
10 #include "content/browser/service_worker/service_worker_registration.h" 11 #include "content/browser/service_worker/service_worker_registration.h"
11 #include "content/browser/service_worker/service_worker_url_request_job.h" 12 #include "content/browser/service_worker/service_worker_url_request_job.h"
12 #include "content/browser/service_worker/service_worker_utils.h" 13 #include "content/browser/service_worker/service_worker_utils.h"
13 #include "content/common/resource_request_body.h" 14 #include "content/common/resource_request_body.h"
14 #include "content/common/service_worker/service_worker_types.h" 15 #include "content/common/service_worker/service_worker_types.h"
15 #include "net/base/load_flags.h" 16 #include "net/base/load_flags.h"
16 #include "net/base/net_util.h" 17 #include "net/base/net_util.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 return; 109 return;
109 } 110 }
110 job_->GetExtraResponseInfo(was_fetched_via_service_worker, 111 job_->GetExtraResponseInfo(was_fetched_via_service_worker,
111 original_url_via_service_worker); 112 original_url_via_service_worker);
112 } 113 }
113 114
114 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( 115 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource(
115 const GURL& url) { 116 const GURL& url) {
116 DCHECK(job_.get()); 117 DCHECK(job_.get());
117 DCHECK(context_); 118 DCHECK(context_);
119 TRACE_EVENT_ASYNC_BEGIN1(
120 "ServiceWorker",
121 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource -> "
horo 2014/09/05 11:02:32 ServiceWorkerControlleeRequestHandler::PrepareForM
shimazu 2014/09/08 07:04:46 Done.
122 "ServiceWOrkerControlleeRequestHandler::"
123 "DidLookupRegistrationForMainResource",
124 job_.get(),
125 "URL", url.spec());
118 // The corresponding provider_host may already have associated a registration 126 // The corresponding provider_host may already have associated a registration
119 // in redirect case, unassociate it now. 127 // in redirect case, unassociate it now.
120 provider_host_->UnassociateRegistration(); 128 provider_host_->UnassociateRegistration();
121 129
122 GURL stripped_url = net::SimplifyUrlForRequest(url); 130 GURL stripped_url = net::SimplifyUrlForRequest(url);
123 provider_host_->SetDocumentUrl(stripped_url); 131 provider_host_->SetDocumentUrl(stripped_url);
124 context_->storage()->FindRegistrationForDocument( 132 context_->storage()->FindRegistrationForDocument(
125 stripped_url, 133 stripped_url,
126 base::Bind(&self::DidLookupRegistrationForMainResource, 134 base::Bind(&self::DidLookupRegistrationForMainResource,
127 weak_factory_.GetWeakPtr())); 135 weak_factory_.GetWeakPtr()));
128 } 136 }
129 137
130 void 138 void
131 ServiceWorkerControlleeRequestHandler::DidLookupRegistrationForMainResource( 139 ServiceWorkerControlleeRequestHandler::DidLookupRegistrationForMainResource(
132 ServiceWorkerStatusCode status, 140 ServiceWorkerStatusCode status,
133 const scoped_refptr<ServiceWorkerRegistration>& registration) { 141 const scoped_refptr<ServiceWorkerRegistration>& registration) {
134 DCHECK(job_.get()); 142 DCHECK(job_.get());
135 if (status != SERVICE_WORKER_OK) { 143 if (status != SERVICE_WORKER_OK) {
136 job_->FallbackToNetwork(); 144 job_->FallbackToNetwork();
145 TRACE_EVENT_ASYNC_END1(
146 "ServiceWorker",
147 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource -> "
horo 2014/09/05 11:02:32 ditto
shimazu 2014/09/08 07:04:45 Done.
148 "ServiceWOrkerControlleeRequestHandler::"
149 "DidLookupRegistrationForMainResource",
150 job_.get(),
151 "Status", status);
137 return; 152 return;
138 } 153 }
139 DCHECK(registration.get()); 154 DCHECK(registration.get());
140 155
141 ServiceWorkerMetrics::CountControlledPageLoad(); 156 ServiceWorkerMetrics::CountControlledPageLoad();
142 157
143 // Initiate activation of a waiting version. 158 // Initiate activation of a waiting version.
144 // Usually a register job initiates activation but that 159 // Usually a register job initiates activation but that
145 // doesn't happen if the browser exits prior to activation 160 // doesn't happen if the browser exits prior to activation
146 // having occurred. This check handles that case. 161 // having occurred. This check handles that case.
147 if (registration->waiting_version()) 162 if (registration->waiting_version())
148 registration->ActivateWaitingVersionWhenReady(); 163 registration->ActivateWaitingVersionWhenReady();
149 164
150 scoped_refptr<ServiceWorkerVersion> active_version = 165 scoped_refptr<ServiceWorkerVersion> active_version =
151 registration->active_version(); 166 registration->active_version();
152 167
153 // Wait until it's activated before firing fetch events. 168 // Wait until it's activated before firing fetch events.
154 if (active_version.get() && 169 if (active_version.get() &&
155 active_version->status() == ServiceWorkerVersion::ACTIVATING) { 170 active_version->status() == ServiceWorkerVersion::ACTIVATING) {
156 registration->active_version()->RegisterStatusChangeCallback( 171 registration->active_version()->RegisterStatusChangeCallback(
157 base::Bind(&self::OnVersionStatusChanged, 172 base::Bind(&self::OnVersionStatusChanged,
158 weak_factory_.GetWeakPtr(), 173 weak_factory_.GetWeakPtr(),
159 registration, 174 registration,
160 active_version)); 175 active_version));
176 TRACE_EVENT_ASYNC_END2(
177 "ServiceWorker",
178 "ServiceWorkerControlleeRequestHandler::"
horo 2014/09/05 11:02:32 ditto
shimazu 2014/09/08 07:04:45 Done.
179 "PrepareForMainResource->DidLookupRegistrationForMainResource",
180 job_.get(),
181 "Status", status,
182 "Info", "Wait until finished SW activation");
161 return; 183 return;
162 } 184 }
163 185
164 if (!active_version.get() || 186 if (!active_version.get() ||
165 active_version->status() != ServiceWorkerVersion::ACTIVATED) { 187 active_version->status() != ServiceWorkerVersion::ACTIVATED) {
166 job_->FallbackToNetwork(); 188 job_->FallbackToNetwork();
189 TRACE_EVENT_ASYNC_END2(
190 "ServiceWorker",
191 "ServiceWorkerControlleeRequestHandler::"
192 "PrepareForMainResource->DidLookupRegistrationForMainResource",
horo 2014/09/05 11:02:32 ditto
shimazu 2014/09/08 07:04:46 Done.
193 job_.get(),
194 "Status", status,
195 "Info",
196 "ServiceWorkerVersion is not available, so falling back to network");
167 return; 197 return;
168 } 198 }
169 199
170 provider_host_->AssociateRegistration(registration.get()); 200 provider_host_->AssociateRegistration(registration.get());
171 job_->ForwardToServiceWorker(); 201 job_->ForwardToServiceWorker();
202 TRACE_EVENT_ASYNC_END2(
203 "ServiceWorker",
204 "ServiceWorkerControlleeRequestHandler::"
205 "PrepareForMainResource->DidLookupRegistrationForMainResource",
horo 2014/09/05 11:02:32 ditto
shimazu 2014/09/08 07:04:46 Done.
206 job_.get(),
207 "Status", status,
208 "Info",
209 "Forwarded to the ServiceWorker");
172 } 210 }
173 211
174 void ServiceWorkerControlleeRequestHandler::OnVersionStatusChanged( 212 void ServiceWorkerControlleeRequestHandler::OnVersionStatusChanged(
175 ServiceWorkerRegistration* registration, 213 ServiceWorkerRegistration* registration,
176 ServiceWorkerVersion* version) { 214 ServiceWorkerVersion* version) {
177 if (version != registration->active_version() || 215 if (version != registration->active_version() ||
178 version->status() != ServiceWorkerVersion::ACTIVATED) { 216 version->status() != ServiceWorkerVersion::ACTIVATED) {
179 job_->FallbackToNetwork(); 217 job_->FallbackToNetwork();
180 return; 218 return;
181 } 219 }
182 220
183 provider_host_->AssociateRegistration(registration); 221 provider_host_->AssociateRegistration(registration);
184 job_->ForwardToServiceWorker(); 222 job_->ForwardToServiceWorker();
185 } 223 }
186 224
187 void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() { 225 void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() {
188 DCHECK(job_.get()); 226 DCHECK(job_.get());
189 DCHECK(context_); 227 DCHECK(context_);
190 DCHECK(provider_host_->active_version()); 228 DCHECK(provider_host_->active_version());
191 job_->ForwardToServiceWorker(); 229 job_->ForwardToServiceWorker();
192 } 230 }
193 231
194 } // namespace content 232 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698