| Index: content/browser/service_worker/service_worker_url_job_wrapper.h
|
| diff --git a/content/browser/service_worker/service_worker_url_job_wrapper.h b/content/browser/service_worker/service_worker_url_job_wrapper.h
|
| index 36b86268fcc2d5123f420aaac62c3dc3e8f46bdb..e090cd104933cd4697a277604471584c2a57598c 100644
|
| --- a/content/browser/service_worker/service_worker_url_job_wrapper.h
|
| +++ b/content/browser/service_worker/service_worker_url_job_wrapper.h
|
| @@ -8,8 +8,10 @@
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| #include "content/browser/loader/url_loader_request_handler.h"
|
| +#include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
|
| #include "content/browser/service_worker/service_worker_response_type.h"
|
| #include "content/browser/service_worker/service_worker_url_request_job.h"
|
| +#include "storage/browser/blob/blob_reader.h"
|
|
|
| namespace content {
|
|
|
| @@ -20,6 +22,14 @@ namespace content {
|
| // callback for URLLoaderFactory and forwards to the underlying implementation.
|
| class ServiceWorkerURLJobWrapper {
|
| public:
|
| + class Delegate {
|
| + public:
|
| + virtual ~Delegate() {}
|
| +
|
| + virtual ServiceWorkerVersion* GetServiceWorkerVersion(
|
| + ServiceWorkerMetrics::URLRequestJobResult* result) = 0;
|
| + };
|
| +
|
| // Non-network service case.
|
| explicit ServiceWorkerURLJobWrapper(
|
| base::WeakPtr<ServiceWorkerURLRequestJob> url_request_job);
|
| @@ -27,7 +37,11 @@ class ServiceWorkerURLJobWrapper {
|
| // With --enable-network-service.
|
| // TODO(kinuko): Implement this as a separate job class rather
|
| // than in a wrapper.
|
| - ServiceWorkerURLJobWrapper(LoaderFactoryCallback loader_factory_callback);
|
| + ServiceWorkerURLJobWrapper(
|
| + LoaderFactoryCallback loader_factory_callback,
|
| + Delegate* delegate,
|
| + const ResourceRequest& resource_request,
|
| + base::WeakPtr<storage::BlobStorageContext> blob_storage_context);
|
|
|
| ~ServiceWorkerURLJobWrapper();
|
|
|
| @@ -60,10 +74,23 @@ class ServiceWorkerURLJobWrapper {
|
| enum class JobType { kURLRequest, kURLLoader };
|
|
|
| // Used only for URLLoader case.
|
| - // TODO(kinuko): Implement this in a separate job class rather
|
| - // than in a wrapper.
|
| + // For FORWARD_TO_SERVICE_WORKER case.
|
| + class Factory;
|
| void StartRequest();
|
|
|
| + void DidPrepareFetchEvent(scoped_refptr<ServiceWorkerVersion> version);
|
| + void DidDispatchFetchEvent(
|
| + ServiceWorkerStatusCode status,
|
| + ServiceWorkerFetchEventResult fetch_result,
|
| + const ServiceWorkerResponse& response,
|
| + blink::mojom::ServiceWorkerStreamHandlePtr body_as_stream,
|
| + const scoped_refptr<ServiceWorkerVersion>& version);
|
| +
|
| + std::unique_ptr<ServiceWorkerFetchRequest> CreateFetchRequest(
|
| + const ResourceRequest& request);
|
| +
|
| + void AfterRead(scoped_refptr<net::IOBuffer> buffer, int bytes);
|
| +
|
| JobType job_type_;
|
|
|
| ServiceWorkerResponseType response_type_ = NOT_DETERMINED;
|
| @@ -71,6 +98,12 @@ class ServiceWorkerURLJobWrapper {
|
|
|
| base::WeakPtr<ServiceWorkerURLRequestJob> url_request_job_;
|
|
|
| + Delegate* delegate_;
|
| + std::unique_ptr<Factory> factory_;
|
| + ResourceRequest resource_request_;
|
| + base::WeakPtr<storage::BlobStorageContext> blob_storage_context_;
|
| + std::unique_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_;
|
| +
|
| base::WeakPtrFactory<ServiceWorkerURLJobWrapper> weak_factory_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ServiceWorkerURLJobWrapper);
|
|
|