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 69492d564e47f5e081362adaf8dd6de418c8eccd..e46bf2c3731892538b868013b860489cb8399108 100644 |
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc |
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc |
@@ -159,6 +159,49 @@ net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob( |
return job.release(); |
} |
+void ServiceWorkerControlleeRequestHandler::Start( |
+ const ResourceRequest& resource_request, |
+ URLLoaderRequestHandler::Controller* controller, |
+ ResourceContext* resource_context, |
+ mojom::URLLoaderAssociatedRequest loader_request, |
+ mojom::URLLoaderClientPtr loader_client_ptr) { |
+ DCHECK(is_main_resource_load_); |
+ ClearJob(); |
+ |
+ // TODO(kinuko): Keep ServiceWorkerResponseInfo somewhere around |
+ // and reset the data every time we restart. |
+ |
+ if (!context_ || !provider_host_) { |
+ // We can't do anything other than to fall back to network. |
+ controller->Forward(std::move(loader_request), |
+ std::move(loader_client_ptr)); |
+ return; |
+ } |
+ |
+ // In fallback cases we basically 'forward' the request, so we should |
+ // never see use_network_ gets true. |
+ DCHECK(!use_network_); |
+ |
+ // It's for original request (A) or redirect case (B-a or B-b). |
+ url_job_ = base::MakeUnique<ServiceWorkerURLJobWrapper>( |
+ controller, std::move(loader_request), std::move(loader_client_ptr)); |
+ |
+ resource_context_ = resource_context; |
+ |
+ PrepareForMainResource(resource_request.url, |
+ resource_request.first_party_for_cookies); |
+ |
+ if (url_job_->ShouldFallbackToNetwork()) { |
+ // We're falling back to the next URLLoaderRequestHandler, forward |
+ // the request and clear job now. |
+ url_job_->FallbackToNetwork(); |
+ ClearJob(); |
+ return; |
+ } |
+ |
+ // We will asynchronously continue on DidLookupRegistrationForMainResource. |
+} |
+ |
void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( |
const GURL& url, |
const GURL& first_party_for_cookies) { |