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

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

Issue 2897063002: Network service: Implement URLLoader chaining for interceptors (Closed)
Patch Set: . Created 3 years, 6 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 <memory> 7 #include <memory>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 if (!is_main_resource_load_) 152 if (!is_main_resource_load_)
153 use_network_ = true; 153 use_network_ = true;
154 154
155 job.reset(); 155 job.reset();
156 ClearJob(); 156 ClearJob();
157 } 157 }
158 158
159 return job.release(); 159 return job.release();
160 } 160 }
161 161
162 void ServiceWorkerControlleeRequestHandler::Start(
163 const ResourceRequest& resource_request,
164 URLLoaderRequestHandler::Controller* controller,
165 ResourceContext* resource_context,
166 mojom::URLLoaderAssociatedRequest loader_request,
167 mojom::URLLoaderClientPtr loader_client_ptr) {
168 DCHECK(is_main_resource_load_);
169 ClearJob();
170
171 // TODO(kinuko): Keep ServiceWorkerResponseInfo somewhere around
172 // and reset the data every time we restart.
173
174 if (!context_ || !provider_host_) {
175 // We can't do anything other than to fall back to network.
176 controller->Forward(std::move(loader_request),
177 std::move(loader_client_ptr));
178 return;
179 }
180
181 // In fallback cases we basically 'forward' the request, so we should
182 // never see use_network_ gets true.
183 DCHECK(!use_network_);
184
185 // It's for original request (A) or redirect case (B-a or B-b).
186 url_job_ = base::MakeUnique<ServiceWorkerURLJobWrapper>(
187 controller, std::move(loader_request), std::move(loader_client_ptr));
188
189 resource_context_ = resource_context;
190
191 PrepareForMainResource(resource_request.url,
192 resource_request.first_party_for_cookies);
193
194 if (url_job_->ShouldFallbackToNetwork()) {
195 // We're falling back to the next URLLoaderRequestHandler, forward
196 // the request and clear job now.
197 url_job_->FallbackToNetwork();
198 ClearJob();
199 return;
200 }
201
202 // We will asynchronously continue on DidLookupRegistrationForMainResource.
203 }
204
162 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource( 205 void ServiceWorkerControlleeRequestHandler::PrepareForMainResource(
163 const GURL& url, 206 const GURL& url,
164 const GURL& first_party_for_cookies) { 207 const GURL& first_party_for_cookies) {
165 DCHECK(!JobWasCanceled()); 208 DCHECK(!JobWasCanceled());
166 DCHECK(context_); 209 DCHECK(context_);
167 DCHECK(provider_host_); 210 DCHECK(provider_host_);
168 TRACE_EVENT_ASYNC_BEGIN1( 211 TRACE_EVENT_ASYNC_BEGIN1(
169 "ServiceWorker", 212 "ServiceWorker",
170 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource", 213 "ServiceWorkerControlleeRequestHandler::PrepareForMainResource",
171 url_job_.get(), "URL", url.spec()); 214 url_job_.get(), "URL", url.spec());
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 502
460 void ServiceWorkerControlleeRequestHandler::ClearJob() { 503 void ServiceWorkerControlleeRequestHandler::ClearJob() {
461 url_job_.reset(); 504 url_job_.reset();
462 } 505 }
463 506
464 bool ServiceWorkerControlleeRequestHandler::JobWasCanceled() const { 507 bool ServiceWorkerControlleeRequestHandler::JobWasCanceled() const {
465 return !url_job_ || url_job_->WasCanceled(); 508 return !url_job_ || url_job_->WasCanceled();
466 } 509 }
467 510
468 } // namespace content 511 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698