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); |