Index: content/browser/service_worker/service_worker_controllee_request_handler.cc |
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc |
index 7b9b35c2f65f13ebd0b38aab55b6107763f09df3..9c24bc37bcf29c0d040c30399558424bcf596332 100644 |
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc |
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc |
@@ -26,6 +26,23 @@ |
namespace content { |
+namespace { |
+ |
+bool MaybeForwardToServiceWorker(ServiceWorkerURLRequestJob* job, |
+ ServiceWorkerVersion* version) { |
+ DCHECK(job); |
+ DCHECK(version); |
+ if (version->has_fetch_handler()) { |
+ job->ForwardToServiceWorker(); |
+ return true; |
+ } |
+ |
+ job->FallbackToNetwork(); |
+ return false; |
+} |
+ |
+} // namespace |
+ |
ServiceWorkerControlleeRequestHandler::ServiceWorkerControlleeRequestHandler( |
base::WeakPtr<ServiceWorkerContextCore> context, |
base::WeakPtr<ServiceWorkerProviderHost> provider_host, |
@@ -251,15 +268,15 @@ ServiceWorkerControlleeRequestHandler::DidLookupRegistrationForMainResource( |
} |
ServiceWorkerMetrics::CountControlledPageLoad(stripped_url_); |
+ bool is_forwarded = |
+ MaybeForwardToServiceWorker(job_.get(), active_version.get()); |
- job_->ForwardToServiceWorker(); |
TRACE_EVENT_ASYNC_END2( |
"ServiceWorker", |
"ServiceWorkerControlleeRequestHandler::PrepareForMainResource", |
- job_.get(), |
- "Status", status, |
- "Info", |
- "Forwarded to the ServiceWorker"); |
+ job_.get(), "Status", status, "Info", |
+ (is_forwarded) ? "Forwarded to the ServiceWorker" |
+ : "Skipped the ServiceWorker which has no fetch handler"); |
} |
void ServiceWorkerControlleeRequestHandler::OnVersionStatusChanged( |
@@ -282,7 +299,8 @@ void ServiceWorkerControlleeRequestHandler::OnVersionStatusChanged( |
provider_host_->AssociateRegistration(registration, |
false /* notify_controllerchange */); |
- job_->ForwardToServiceWorker(); |
+ |
+ MaybeForwardToServiceWorker(job_.get(), version); |
} |
void ServiceWorkerControlleeRequestHandler::DidUpdateRegistration( |
@@ -352,7 +370,7 @@ void ServiceWorkerControlleeRequestHandler::PrepareForSubResource() { |
DCHECK(job_.get()); |
DCHECK(context_); |
DCHECK(provider_host_->active_version()); |
- job_->ForwardToServiceWorker(); |
+ MaybeForwardToServiceWorker(job_.get(), provider_host_->active_version()); |
} |
void ServiceWorkerControlleeRequestHandler::OnPrepareToRestart() { |