Index: content/browser/service_worker/service_worker_controllee_request_handler.h |
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.h b/content/browser/service_worker/service_worker_controllee_request_handler.h |
index a6e48b24727ebafc74bf087e31303100007589e0..2717512683f9774f48f5dfb31a8ffa349d00afbb 100644 |
--- a/content/browser/service_worker/service_worker_controllee_request_handler.h |
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.h |
@@ -12,6 +12,7 @@ |
#include "base/memory/ref_counted.h" |
#include "base/memory/weak_ptr.h" |
#include "base/time/time.h" |
+#include "content/browser/service_worker/service_worker_controllee_url_loader_factory.h" |
#include "content/browser/service_worker/service_worker_request_handler.h" |
#include "content/browser/service_worker/service_worker_url_request_job.h" |
#include "content/common/service_worker/service_worker_types.h" |
@@ -36,7 +37,8 @@ class ServiceWorkerVersion; |
// controlled documents. |
class CONTENT_EXPORT ServiceWorkerControlleeRequestHandler |
: public ServiceWorkerRequestHandler, |
- public ServiceWorkerURLRequestJob::Delegate { |
+ public ServiceWorkerURLRequestJob::Delegate, |
+ public ServiceWorkerControlleeURLLoaderFactory::Delegate { |
public: |
ServiceWorkerControlleeRequestHandler( |
base::WeakPtr<ServiceWorkerContextCore> context, |
@@ -48,7 +50,8 @@ class CONTENT_EXPORT ServiceWorkerControlleeRequestHandler |
ResourceType resource_type, |
RequestContextType request_context_type, |
RequestContextFrameType frame_type, |
- scoped_refptr<ResourceRequestBodyImpl> body); |
+ scoped_refptr<ResourceRequestBodyImpl> body, |
+ NetworkFallbackCallback network_fallback_callback); |
~ServiceWorkerControlleeRequestHandler() override; |
// Called via custom URLRequestJobFactory. |
@@ -57,13 +60,21 @@ class CONTENT_EXPORT ServiceWorkerControlleeRequestHandler |
net::NetworkDelegate* network_delegate, |
ResourceContext* resource_context) override; |
+ mojom::URLLoaderFactoryPtrInfo MaybeGetURLLoaderFactory( |
+ const ResourceRequest& resource_request, |
+ ResourceContext* resource_context, |
+ std::unique_ptr<ServiceWorkerRequestHandler> request_handler) override; |
+ |
+ class JobWrapper; |
+ |
private: |
FRIEND_TEST_ALL_PREFIXES(ServiceWorkerControlleeRequestHandlerTest, |
ActivateWaitingVersion); |
typedef ServiceWorkerControlleeRequestHandler self; |
// For main resource case. |
- void PrepareForMainResource(const net::URLRequest* request); |
+ void PrepareForMainResource(const GURL& url, |
+ const GURL& first_party_for_cookies); |
void DidLookupRegistrationForMainResource( |
ServiceWorkerStatusCode status, |
scoped_refptr<ServiceWorkerRegistration> registration); |
@@ -101,7 +112,7 @@ class CONTENT_EXPORT ServiceWorkerControlleeRequestHandler |
const bool is_main_resource_load_; |
const bool is_main_frame_load_; |
- base::WeakPtr<ServiceWorkerURLRequestJob> job_; |
+ std::unique_ptr<JobWrapper> job_; |
FetchRequestMode request_mode_; |
FetchCredentialsMode credentials_mode_; |
FetchRedirectMode redirect_mode_; |
@@ -117,6 +128,11 @@ class CONTENT_EXPORT ServiceWorkerControlleeRequestHandler |
// next intercept opportunity, for main frame requests. |
bool use_network_; |
+ // When --enable-network-service, used to fallback to the network if the SW |
+ // decides a request needs to be restarted after it's already returned the |
+ // URLLoaderFactory in the main creation flow. |
+ NetworkFallbackCallback network_fallback_callback_; |
+ |
base::WeakPtrFactory<ServiceWorkerControlleeRequestHandler> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerControlleeRequestHandler); |