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

Unified Diff: content/browser/service_worker/service_worker_controllee_request_handler.cc

Issue 2897063002: Network service: Implement URLLoader chaining for interceptors (Closed)
Patch Set: documentation Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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..07b4f10817ab0b56cf053aa16973a989d56b1fb8 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,45 @@ net::URLRequestJob* ServiceWorkerControlleeRequestHandler::MaybeCreateJob(
return job.release();
}
+void ServiceWorkerControlleeRequestHandler::MaybeCreateLoaderFactory(
+ const ResourceRequest& resource_request,
+ ResourceContext* resource_context,
+ base::OnceCallback<void(mojom::URLLoaderFactory*)> factory_callback) {
+ 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.
+ std::move(factory_callback).Run(nullptr);
+ return;
+ }
+
+ // In fallback cases we basically 'forward' the request, so we should
+ // never see use_network_ gets true.
+ DCHECK(!use_network_);
+
+ url_job_ =
+ base::MakeUnique<ServiceWorkerURLJobWrapper>(std::move(factory_callback));
+
+ 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) {

Powered by Google App Engine
This is Rietveld 408576698