| 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) {
|
|
|