Chromium Code Reviews| Index: content/browser/service_worker/service_worker_request_handler.h |
| diff --git a/content/browser/service_worker/service_worker_request_handler.h b/content/browser/service_worker/service_worker_request_handler.h |
| index 61dd8b5f17ef99c5f8a574e5d530b04bf09df406..beba2af4327e3083be7d2068a4982fb23a1f3f02 100644 |
| --- a/content/browser/service_worker/service_worker_request_handler.h |
| +++ b/content/browser/service_worker/service_worker_request_handler.h |
| @@ -15,6 +15,7 @@ |
| #include "content/common/content_export.h" |
| #include "content/common/service_worker/service_worker_status_code.h" |
| #include "content/common/service_worker/service_worker_types.h" |
| +#include "content/common/url_loader_factory.mojom.h" |
| #include "content/public/common/request_context_frame_type.h" |
| #include "content/public/common/request_context_type.h" |
| #include "content/public/common/resource_type.h" |
| @@ -33,6 +34,7 @@ class BlobStorageContext; |
| namespace content { |
| class ResourceContext; |
| +struct ResourceRequest; |
| class ResourceRequestBodyImpl; |
| class ServiceWorkerContextCore; |
| class ServiceWorkerContextWrapper; |
| @@ -49,7 +51,23 @@ class CONTENT_EXPORT ServiceWorkerRequestHandler |
| // Attaches a newly created handler if the given |request| needs to be handled |
| // by ServiceWorker. |
| static void InitializeForNavigation( |
| - net::URLRequest* request, |
| + net::URLRequest* url_request, |
| + ServiceWorkerNavigationHandleCore* navigation_handle_core, |
| + storage::BlobStorageContext* blob_storage_context, |
| + bool skip_service_worker, |
| + ResourceType resource_type, |
| + RequestContextType request_context_type, |
| + RequestContextFrameType frame_type, |
| + bool is_parent_frame_secure, |
| + scoped_refptr<ResourceRequestBodyImpl> body, |
| + const base::Callback<WebContents*(void)>& web_contents_getter); |
| + |
| + // PlzNavigate and --enable-network-service |
| + // Same as InitializeForNavigation(), but instead of attaching to a request, |
| + // returns a URLLoaderFactoryPtr if the request needs to be handled. |
| + static mojom::URLLoaderFactoryPtrInfo InitializeForNavigationNetworkService( |
| + const ResourceRequest& resource_request, |
| + ResourceContext* resource_context, |
| ServiceWorkerNavigationHandleCore* navigation_handle_core, |
| storage::BlobStorageContext* blob_storage_context, |
| bool skip_service_worker, |
| @@ -109,6 +127,13 @@ class CONTENT_EXPORT ServiceWorkerRequestHandler |
| net::NetworkDelegate* network_delegate, |
| ResourceContext* context) = 0; |
| + virtual mojom::URLLoaderFactoryPtrInfo MaybeCreateURLLoader( |
| + const ResourceRequest& resource_request, |
| + ResourceContext* resource_context, |
| + std::unique_ptr<ServiceWorkerRequestHandler> request_handler) { |
| + return mojom::URLLoaderFactoryPtrInfo(); |
| + } |
| + |
| // Methods to support cross site navigations. |
| void PrepareForCrossSiteTransfer(int old_process_id); |
| void CompleteCrossSiteTransfer(int new_process_id, |
| @@ -120,6 +145,9 @@ class CONTENT_EXPORT ServiceWorkerRequestHandler |
| // site transfer navigations. |
| bool SanityCheckIsSameContext(ServiceWorkerContextWrapper* wrapper); |
| + using HandlerCreated = |
| + base::Callback<void(std::unique_ptr<ServiceWorkerRequestHandler>)>; |
| + |
| protected: |
| ServiceWorkerRequestHandler( |
| base::WeakPtr<ServiceWorkerContextCore> context, |
| @@ -133,6 +161,19 @@ class CONTENT_EXPORT ServiceWorkerRequestHandler |
| ResourceType resource_type_; |
| private: |
| + static void InitializeForNavigationImpl( |
|
kinuko
2017/05/08 14:55:48
nit: s/Impl/Internal/
scottmg
2017/05/08 20:12:31
Done.
|
| + const GURL& url, |
| + ServiceWorkerNavigationHandleCore* navigation_handle_core, |
| + storage::BlobStorageContext* blob_storage_context, |
| + bool skip_service_worker, |
| + ResourceType resource_type, |
| + RequestContextType request_context_type, |
| + RequestContextFrameType frame_type, |
| + bool is_parent_frame_secure, |
| + scoped_refptr<ResourceRequestBodyImpl> body, |
| + const base::Callback<WebContents*(void)>& web_contents_getter, |
| + const HandlerCreated& on_handler_created); |
| + |
| std::unique_ptr<ServiceWorkerProviderHost> host_for_cross_site_transfer_; |
| int old_process_id_; |
| int old_provider_id_; |