#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/public/common/request_context_frame_type.h"
+#include "content/public/common/request_context_type.h"
+#include "content/public/common/resource_type.h"
#include "net/http/http_byte_range.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_job.h"
+#include "third_party/WebKit/public/platform/WebServiceWorkerResponseType.h"
namespace storage {
class BlobDataHandle;
net::NetworkDelegate* network_delegate,
base::WeakPtr<ServiceWorkerProviderHost> provider_host,
base::WeakPtr<storage::BlobStorageContext> blob_storage_context,
+ FetchRequestMode request_mode,
+ FetchCredentialsMode credentials_mode,
+ RequestContextType request_context_type,
+ RequestContextFrameType frame_type,
scoped_refptr<ResourceRequestBody> body);
// Sets the response type.
}
// net::URLRequestJob overrides:
- virtual void Start() OVERRIDE;
- virtual void Kill() OVERRIDE;
- virtual net::LoadState GetLoadState() const OVERRIDE;
- virtual bool GetCharset(std::string* charset) OVERRIDE;
- virtual bool GetMimeType(std::string* mime_type) const OVERRIDE;
- virtual void GetResponseInfo(net::HttpResponseInfo* info) OVERRIDE;
- virtual void GetLoadTimingInfo(
- net::LoadTimingInfo* load_timing_info) const OVERRIDE;
- virtual int GetResponseCode() const OVERRIDE;
- virtual void SetExtraRequestHeaders(
- const net::HttpRequestHeaders& headers) OVERRIDE;
- virtual bool ReadRawData(net::IOBuffer* buf,
- int buf_size,
- int *bytes_read) OVERRIDE;
+ void Start() override;
+ void Kill() override;
+ net::LoadState GetLoadState() const override;
+ bool GetCharset(std::string* charset) override;
+ bool GetMimeType(std::string* mime_type) const override;
+ void GetResponseInfo(net::HttpResponseInfo* info) override;
+ void GetLoadTimingInfo(net::LoadTimingInfo* load_timing_info) const override;
+ int GetResponseCode() const override;
+ void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers) override;
+ bool ReadRawData(net::IOBuffer* buf, int buf_size, int* bytes_read) override;
// net::URLRequest::Delegate overrides that read the blob from the
// ServiceWorkerFetchResponse.
- virtual void OnReceivedRedirect(net::URLRequest* request,
- const net::RedirectInfo& redirect_info,
- bool* defer_redirect) OVERRIDE;
- virtual void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) OVERRIDE;
- virtual void OnCertificateRequested(
+ void OnReceivedRedirect(net::URLRequest* request,
+ const net::RedirectInfo& redirect_info,
+ bool* defer_redirect) override;
+ void OnAuthRequired(net::URLRequest* request,
+ net::AuthChallengeInfo* auth_info) override;
+ void OnCertificateRequested(
net::URLRequest* request,
- net::SSLCertRequestInfo* cert_request_info) OVERRIDE;
- virtual void OnSSLCertificateError(net::URLRequest* request,
- const net::SSLInfo& ssl_info,
- bool fatal) OVERRIDE;
- virtual void OnBeforeNetworkStart(net::URLRequest* request,
- bool* defer) OVERRIDE;
- virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE;
- virtual void OnReadCompleted(net::URLRequest* request,
- int bytes_read) OVERRIDE;
+ net::SSLCertRequestInfo* cert_request_info) override;
+ void OnSSLCertificateError(net::URLRequest* request,
+ const net::SSLInfo& ssl_info,
+ bool fatal) override;
+ void OnBeforeNetworkStart(net::URLRequest* request, bool* defer) override;
+ void OnResponseStarted(net::URLRequest* request) override;
+ void OnReadCompleted(net::URLRequest* request, int bytes_read) override;
const net::HttpResponseInfo* http_info() const;
- void GetExtraResponseInfo(bool* was_fetched_via_service_worker,
- GURL* original_url_via_service_worker,
- base::TimeTicks* fetch_start_time,
- base::TimeTicks* fetch_ready_time,
- base::TimeTicks* fetch_end_time) const;
+ void GetExtraResponseInfo(
+ bool* was_fetched_via_service_worker,
+ bool* was_fallback_required_by_service_worker,
+ GURL* original_url_via_service_worker,
+ blink::WebServiceWorkerResponseType* response_type_via_service_worker,
+ base::TimeTicks* fetch_start_time,
+ base::TimeTicks* fetch_ready_time,
+ base::TimeTicks* fetch_end_time) const;
protected:
- virtual ~ServiceWorkerURLRequestJob();
+ ~ServiceWorkerURLRequestJob() override;
private:
enum ResponseType {
// Headers that have not yet been committed to |http_response_info_|.
scoped_refptr<net::HttpResponseHeaders> http_response_headers_;
GURL response_url_;
+ blink::WebServiceWorkerResponseType service_worker_response_type_;
// Used when response type is FORWARD_TO_SERVICE_WORKER.
scoped_ptr<ServiceWorkerFetchDispatcher> fetch_dispatcher_;
base::WeakPtr<storage::BlobStorageContext> blob_storage_context_;
scoped_ptr<net::URLRequest> blob_request_;
+ FetchRequestMode request_mode_;
+ FetchCredentialsMode credentials_mode_;
+ RequestContextType request_context_type_;
+ RequestContextFrameType frame_type_;
+ bool fall_back_required_;
// ResourceRequestBody has a collection of BlobDataHandles attached to it
// using the userdata mechanism. So we have to keep it not to free the blobs.
scoped_refptr<ResourceRequestBody> body_;