OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/cache_storage/cache_storage_cache.h" | 5 #include "content/browser/cache_storage/cache_storage_cache.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/barrier_closure.h" | 9 #include "base/barrier_closure.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 case CacheResponse::BASIC_TYPE: | 69 case CacheResponse::BASIC_TYPE: |
70 return blink::WebServiceWorkerResponseTypeBasic; | 70 return blink::WebServiceWorkerResponseTypeBasic; |
71 case CacheResponse::CORS_TYPE: | 71 case CacheResponse::CORS_TYPE: |
72 return blink::WebServiceWorkerResponseTypeCORS; | 72 return blink::WebServiceWorkerResponseTypeCORS; |
73 case CacheResponse::DEFAULT_TYPE: | 73 case CacheResponse::DEFAULT_TYPE: |
74 return blink::WebServiceWorkerResponseTypeDefault; | 74 return blink::WebServiceWorkerResponseTypeDefault; |
75 case CacheResponse::ERROR_TYPE: | 75 case CacheResponse::ERROR_TYPE: |
76 return blink::WebServiceWorkerResponseTypeError; | 76 return blink::WebServiceWorkerResponseTypeError; |
77 case CacheResponse::OPAQUE_TYPE: | 77 case CacheResponse::OPAQUE_TYPE: |
78 return blink::WebServiceWorkerResponseTypeOpaque; | 78 return blink::WebServiceWorkerResponseTypeOpaque; |
| 79 case CacheResponse::OPAQUE_REDIRECT_TYPE: |
| 80 return blink::WebServiceWorkerResponseTypeOpaqueRedirect; |
79 } | 81 } |
80 NOTREACHED(); | 82 NOTREACHED(); |
81 return blink::WebServiceWorkerResponseTypeOpaque; | 83 return blink::WebServiceWorkerResponseTypeOpaque; |
82 } | 84 } |
83 | 85 |
84 CacheResponse::ResponseType WebResponseTypeToProtoResponseType( | 86 CacheResponse::ResponseType WebResponseTypeToProtoResponseType( |
85 blink::WebServiceWorkerResponseType response_type) { | 87 blink::WebServiceWorkerResponseType response_type) { |
86 switch (response_type) { | 88 switch (response_type) { |
87 case blink::WebServiceWorkerResponseTypeBasic: | 89 case blink::WebServiceWorkerResponseTypeBasic: |
88 return CacheResponse::BASIC_TYPE; | 90 return CacheResponse::BASIC_TYPE; |
89 case blink::WebServiceWorkerResponseTypeCORS: | 91 case blink::WebServiceWorkerResponseTypeCORS: |
90 return CacheResponse::CORS_TYPE; | 92 return CacheResponse::CORS_TYPE; |
91 case blink::WebServiceWorkerResponseTypeDefault: | 93 case blink::WebServiceWorkerResponseTypeDefault: |
92 return CacheResponse::DEFAULT_TYPE; | 94 return CacheResponse::DEFAULT_TYPE; |
93 case blink::WebServiceWorkerResponseTypeError: | 95 case blink::WebServiceWorkerResponseTypeError: |
94 return CacheResponse::ERROR_TYPE; | 96 return CacheResponse::ERROR_TYPE; |
95 case blink::WebServiceWorkerResponseTypeOpaque: | 97 case blink::WebServiceWorkerResponseTypeOpaque: |
96 return CacheResponse::OPAQUE_TYPE; | 98 return CacheResponse::OPAQUE_TYPE; |
97 default: | 99 case blink::WebServiceWorkerResponseTypeOpaqueRedirect: |
98 // TODO(horo): Remove this when WebServiceWorkerResponseTypeOpaqueRedirect | 100 return CacheResponse::OPAQUE_REDIRECT_TYPE; |
99 // will be added in blink's WebServiceWorkerResponseType.h. | |
100 NOTREACHED(); | |
101 } | 101 } |
102 NOTREACHED(); | 102 NOTREACHED(); |
103 return CacheResponse::OPAQUE_TYPE; | 103 return CacheResponse::OPAQUE_TYPE; |
104 } | 104 } |
105 | 105 |
106 // Copy headers out of a cache entry and into a protobuf. The callback is | 106 // Copy headers out of a cache entry and into a protobuf. The callback is |
107 // guaranteed to be run. | 107 // guaranteed to be run. |
108 void ReadMetadata(disk_cache::Entry* entry, const MetadataCallback& callback); | 108 void ReadMetadata(disk_cache::Entry* entry, const MetadataCallback& callback); |
109 void ReadMetadataDidReadMetadata( | 109 void ReadMetadataDidReadMetadata( |
110 disk_cache::Entry* entry, | 110 disk_cache::Entry* entry, |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 DCHECK(BACKEND_OPEN == backend_state_ || initializing_); | 718 DCHECK(BACKEND_OPEN == backend_state_ || initializing_); |
719 DCHECK_EQ(CACHE_STORAGE_CACHE_OPERATION_TYPE_PUT, operation.operation_type); | 719 DCHECK_EQ(CACHE_STORAGE_CACHE_OPERATION_TYPE_PUT, operation.operation_type); |
720 | 720 |
721 scoped_ptr<ServiceWorkerFetchRequest> request(new ServiceWorkerFetchRequest( | 721 scoped_ptr<ServiceWorkerFetchRequest> request(new ServiceWorkerFetchRequest( |
722 operation.request.url, operation.request.method, | 722 operation.request.url, operation.request.method, |
723 operation.request.headers, operation.request.referrer, | 723 operation.request.headers, operation.request.referrer, |
724 operation.request.is_reload)); | 724 operation.request.is_reload)); |
725 | 725 |
726 // We don't support streaming for cache. | 726 // We don't support streaming for cache. |
727 DCHECK(operation.response.stream_url.is_empty()); | 727 DCHECK(operation.response.stream_url.is_empty()); |
| 728 // We don't support the body of redirect response. |
| 729 DCHECK(!(operation.response.response_type == |
| 730 blink::WebServiceWorkerResponseTypeOpaqueRedirect && |
| 731 operation.response.blob_size)); |
728 scoped_ptr<ServiceWorkerResponse> response(new ServiceWorkerResponse( | 732 scoped_ptr<ServiceWorkerResponse> response(new ServiceWorkerResponse( |
729 operation.response.url, operation.response.status_code, | 733 operation.response.url, operation.response.status_code, |
730 operation.response.status_text, operation.response.response_type, | 734 operation.response.status_text, operation.response.response_type, |
731 operation.response.headers, operation.response.blob_uuid, | 735 operation.response.headers, operation.response.blob_uuid, |
732 operation.response.blob_size, operation.response.stream_url, | 736 operation.response.blob_size, operation.response.stream_url, |
733 operation.response.error)); | 737 operation.response.error)); |
734 | 738 |
735 scoped_ptr<storage::BlobDataHandle> blob_data_handle; | 739 scoped_ptr<storage::BlobDataHandle> blob_data_handle; |
736 | 740 |
737 if (!response->blob_uuid.empty()) { | 741 if (!response->blob_uuid.empty()) { |
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1242 storage::BlobDataBuilder blob_data(response->blob_uuid); | 1246 storage::BlobDataBuilder blob_data(response->blob_uuid); |
1243 | 1247 |
1244 disk_cache::Entry* temp_entry = entry.get(); | 1248 disk_cache::Entry* temp_entry = entry.get(); |
1245 blob_data.AppendDiskCacheEntry( | 1249 blob_data.AppendDiskCacheEntry( |
1246 new CacheStorageCacheDataHandle(this, entry.Pass()), temp_entry, | 1250 new CacheStorageCacheDataHandle(this, entry.Pass()), temp_entry, |
1247 INDEX_RESPONSE_BODY); | 1251 INDEX_RESPONSE_BODY); |
1248 return blob_storage_context_->AddFinishedBlob(&blob_data); | 1252 return blob_storage_context_->AddFinishedBlob(&blob_data); |
1249 } | 1253 } |
1250 | 1254 |
1251 } // namespace content | 1255 } // namespace content |
OLD | NEW |