Index: content/browser/service_worker/service_worker_cache.cc |
diff --git a/content/browser/service_worker/service_worker_cache.cc b/content/browser/service_worker/service_worker_cache.cc |
index 13a836513dcd51af3f107f42efcb5488b30a2c88..df8cfd38276cd4bf2d59411142f0440b79836d2e 100644 |
--- a/content/browser/service_worker/service_worker_cache.cc |
+++ b/content/browser/service_worker/service_worker_cache.cc |
@@ -19,6 +19,7 @@ |
#include "storage/browser/blob/blob_data_handle.h" |
#include "storage/browser/blob/blob_storage_context.h" |
#include "storage/browser/blob/blob_url_request_job_factory.h" |
+#include "third_party/WebKit/public/platform/WebServiceWorkerResponseType.h" |
namespace content { |
@@ -40,6 +41,43 @@ const int kMaxCacheBytes = 512 * 1024 * 1024; |
// Buffer size for cache and blob reading/writing. |
const int kBufferSize = 1024 * 512; |
+blink::WebServiceWorkerResponseType ProtoResponseTypeToWebResponseType( |
+ ServiceWorkerRequestResponseHeaders_ResponseType response_type) { |
+ switch (response_type) { |
+ case ServiceWorkerRequestResponseHeaders_ResponseType_BASIC_TYPE: |
+ return blink::WebServiceWorkerResponseTypeBasic; |
+ case ServiceWorkerRequestResponseHeaders_ResponseType_CORS_TYPE: |
+ return blink::WebServiceWorkerResponseTypeCORS; |
+ case ServiceWorkerRequestResponseHeaders_ResponseType_DEFAULT_TYPE: |
+ return blink::WebServiceWorkerResponseTypeDefault; |
+ case ServiceWorkerRequestResponseHeaders_ResponseType_ERROR_TYPE: |
+ return blink::WebServiceWorkerResponseTypeError; |
+ case ServiceWorkerRequestResponseHeaders_ResponseType_OPAQUE_TYPE: |
+ return blink::WebServiceWorkerResponseTypeOpaque; |
+ } |
+ NOTREACHED(); |
+ return blink::WebServiceWorkerResponseTypeOpaque; |
+} |
+ |
+ServiceWorkerRequestResponseHeaders_ResponseType |
+WebResponseTypeToProtoResponseType( |
+ blink::WebServiceWorkerResponseType response_type) { |
+ switch (response_type) { |
+ case blink::WebServiceWorkerResponseTypeBasic: |
+ return ServiceWorkerRequestResponseHeaders_ResponseType_BASIC_TYPE; |
+ case blink::WebServiceWorkerResponseTypeCORS: |
+ return ServiceWorkerRequestResponseHeaders_ResponseType_CORS_TYPE; |
+ case blink::WebServiceWorkerResponseTypeDefault: |
+ return ServiceWorkerRequestResponseHeaders_ResponseType_DEFAULT_TYPE; |
+ case blink::WebServiceWorkerResponseTypeError: |
+ return ServiceWorkerRequestResponseHeaders_ResponseType_ERROR_TYPE; |
+ case blink::WebServiceWorkerResponseTypeOpaque: |
+ return ServiceWorkerRequestResponseHeaders_ResponseType_OPAQUE_TYPE; |
+ } |
+ NOTREACHED(); |
+ return ServiceWorkerRequestResponseHeaders_ResponseType_OPAQUE_TYPE; |
+} |
+ |
struct ResponseReadContext { |
ResponseReadContext(scoped_refptr<net::IOBufferWithSize> buff, |
scoped_refptr<storage::BlobData> blob) |
@@ -265,9 +303,10 @@ void PutDidCreateEntry(scoped_ptr<PutContext> put_context, int rv) { |
ServiceWorkerRequestResponseHeaders headers; |
headers.set_method(put_context->request->method); |
- |
headers.set_status_code(put_context->response->status_code); |
headers.set_status_text(put_context->response->status_text); |
+ headers.set_response_type( |
+ WebResponseTypeToProtoResponseType(put_context->response->response_type)); |
for (ServiceWorkerHeaderMap::const_iterator it = |
put_context->request->headers.begin(); |
it != put_context->request->headers.end(); |
@@ -449,12 +488,13 @@ void MatchDidReadHeaderData( |
return; |
} |
- scoped_ptr<ServiceWorkerResponse> response( |
- new ServiceWorkerResponse(request->url, |
- headers->status_code(), |
- headers->status_text(), |
- ServiceWorkerHeaderMap(), |
- "")); |
+ scoped_ptr<ServiceWorkerResponse> response(new ServiceWorkerResponse( |
+ request->url, |
+ headers->status_code(), |
+ headers->status_text(), |
+ ProtoResponseTypeToWebResponseType(headers->response_type()), |
+ ServiceWorkerHeaderMap(), |
+ "")); |
for (int i = 0; i < headers->response_headers_size(); ++i) { |
const ServiceWorkerRequestResponseHeaders::HeaderMap header = |