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/renderer/cache_storage/cache_storage_dispatcher.h" | 5 #include "content/renderer/cache_storage/cache_storage_dispatcher.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <memory> | 10 #include <memory> |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 | 72 |
73 blink::WebVector<blink::WebServiceWorkerRequest> WebRequestsFromRequests( | 73 blink::WebVector<blink::WebServiceWorkerRequest> WebRequestsFromRequests( |
74 const std::vector<ServiceWorkerFetchRequest>& requests) { | 74 const std::vector<ServiceWorkerFetchRequest>& requests) { |
75 blink::WebVector<blink::WebServiceWorkerRequest> web_requests( | 75 blink::WebVector<blink::WebServiceWorkerRequest> web_requests( |
76 requests.size()); | 76 requests.size()); |
77 for (size_t i = 0; i < requests.size(); ++i) | 77 for (size_t i = 0; i < requests.size(); ++i) |
78 PopulateWebRequestFromFetchRequest(requests[i], &(web_requests[i])); | 78 PopulateWebRequestFromFetchRequest(requests[i], &(web_requests[i])); |
79 return web_requests; | 79 return web_requests; |
80 } | 80 } |
81 | 81 |
82 ServiceWorkerResponse ResponseFromWebResponse( | |
83 const blink::WebServiceWorkerResponse& web_response) { | |
84 ServiceWorkerHeaderMap headers; | |
85 GetServiceWorkerHeaderMapFromWebResponse(web_response, &headers); | |
86 ServiceWorkerHeaderList cors_exposed_header_names; | |
87 GetCorsExposedHeaderNamesFromWebResponse(web_response, | |
88 &cors_exposed_header_names); | |
89 // We don't support streaming for cache. | |
90 DCHECK(web_response.streamURL().isEmpty()); | |
91 return ServiceWorkerResponse( | |
92 web_response.url(), web_response.status(), | |
93 web_response.statusText().ascii(), web_response.responseType(), headers, | |
94 web_response.blobUUID().ascii(), web_response.blobSize(), | |
95 web_response.streamURL(), blink::WebServiceWorkerResponseErrorUnknown, | |
96 base::Time::FromInternalValue(web_response.responseTime()), | |
97 !web_response.cacheStorageCacheName().isNull(), | |
98 web_response.cacheStorageCacheName().utf8(), cors_exposed_header_names); | |
99 } | |
100 | |
101 CacheStorageCacheQueryParams QueryParamsFromWebQueryParams( | 82 CacheStorageCacheQueryParams QueryParamsFromWebQueryParams( |
102 const blink::WebServiceWorkerCache::QueryParams& web_query_params) { | 83 const blink::WebServiceWorkerCache::QueryParams& web_query_params) { |
103 CacheStorageCacheQueryParams query_params; | 84 CacheStorageCacheQueryParams query_params; |
104 query_params.ignore_search = web_query_params.ignoreSearch; | 85 query_params.ignore_search = web_query_params.ignoreSearch; |
105 query_params.ignore_method = web_query_params.ignoreMethod; | 86 query_params.ignore_method = web_query_params.ignoreMethod; |
106 query_params.ignore_vary = web_query_params.ignoreVary; | 87 query_params.ignore_vary = web_query_params.ignoreVary; |
107 query_params.cache_name = web_query_params.cacheName; | 88 query_params.cache_name = web_query_params.cacheName; |
108 return query_params; | 89 return query_params; |
109 } | 90 } |
110 | 91 |
111 CacheStorageCacheOperationType CacheOperationTypeFromWebCacheOperationType( | 92 CacheStorageCacheOperationType CacheOperationTypeFromWebCacheOperationType( |
112 blink::WebServiceWorkerCache::OperationType operation_type) { | 93 blink::WebServiceWorkerCache::OperationType operation_type) { |
113 switch (operation_type) { | 94 switch (operation_type) { |
114 case blink::WebServiceWorkerCache::OperationTypePut: | 95 case blink::WebServiceWorkerCache::OperationTypePut: |
115 return CACHE_STORAGE_CACHE_OPERATION_TYPE_PUT; | 96 return CACHE_STORAGE_CACHE_OPERATION_TYPE_PUT; |
116 case blink::WebServiceWorkerCache::OperationTypeDelete: | 97 case blink::WebServiceWorkerCache::OperationTypeDelete: |
117 return CACHE_STORAGE_CACHE_OPERATION_TYPE_DELETE; | 98 return CACHE_STORAGE_CACHE_OPERATION_TYPE_DELETE; |
118 default: | 99 default: |
119 return CACHE_STORAGE_CACHE_OPERATION_TYPE_UNDEFINED; | 100 return CACHE_STORAGE_CACHE_OPERATION_TYPE_UNDEFINED; |
120 } | 101 } |
121 } | 102 } |
122 | 103 |
123 CacheStorageBatchOperation BatchOperationFromWebBatchOperation( | 104 CacheStorageBatchOperation BatchOperationFromWebBatchOperation( |
124 const blink::WebServiceWorkerCache::BatchOperation& web_operation) { | 105 const blink::WebServiceWorkerCache::BatchOperation& web_operation) { |
| 106 // We don't support streaming for cache. |
| 107 DCHECK(web_operation.response.streamURL().isEmpty()); |
| 108 |
125 CacheStorageBatchOperation operation; | 109 CacheStorageBatchOperation operation; |
126 operation.operation_type = | 110 operation.operation_type = |
127 CacheOperationTypeFromWebCacheOperationType(web_operation.operationType); | 111 CacheOperationTypeFromWebCacheOperationType(web_operation.operationType); |
128 operation.request = FetchRequestFromWebRequest(web_operation.request); | 112 operation.request = FetchRequestFromWebRequest(web_operation.request); |
129 operation.response = ResponseFromWebResponse(web_operation.response); | 113 operation.response = |
| 114 GetServiceWorkerResponseFromWebResponse(web_operation.response); |
130 operation.match_params = | 115 operation.match_params = |
131 QueryParamsFromWebQueryParams(web_operation.matchParams); | 116 QueryParamsFromWebQueryParams(web_operation.matchParams); |
132 return operation; | 117 return operation; |
133 } | 118 } |
134 | 119 |
135 template <typename T> | 120 template <typename T> |
136 void ClearCallbacksMapWithErrors(T* callbacks_map) { | 121 void ClearCallbacksMapWithErrors(T* callbacks_map) { |
137 typename T::iterator iter(callbacks_map); | 122 typename T::iterator iter(callbacks_map); |
138 while (!iter.IsAtEnd()) { | 123 while (!iter.IsAtEnd()) { |
139 iter.GetCurrentValue()->onError(blink::WebServiceWorkerCacheErrorNotFound); | 124 iter.GetCurrentValue()->onError(blink::WebServiceWorkerCacheErrorNotFound); |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
636 } | 621 } |
637 | 622 |
638 void CacheStorageDispatcher::OnWebCacheDestruction(int cache_id) { | 623 void CacheStorageDispatcher::OnWebCacheDestruction(int cache_id) { |
639 web_caches_.Remove(cache_id); | 624 web_caches_.Remove(cache_id); |
640 Send(new CacheStorageHostMsg_CacheClosed(cache_id)); | 625 Send(new CacheStorageHostMsg_CacheClosed(cache_id)); |
641 } | 626 } |
642 | 627 |
643 void CacheStorageDispatcher::PopulateWebResponseFromResponse( | 628 void CacheStorageDispatcher::PopulateWebResponseFromResponse( |
644 const ServiceWorkerResponse& response, | 629 const ServiceWorkerResponse& response, |
645 blink::WebServiceWorkerResponse* web_response) { | 630 blink::WebServiceWorkerResponse* web_response) { |
646 web_response->setURL(response.url); | 631 blink::WebVector<blink::WebURL> url_list(response.url_list.size()); |
| 632 std::transform(response.url_list.begin(), response.url_list.end(), |
| 633 url_list.begin(), [](const GURL& url) { return url; }); |
| 634 web_response->setURLList(url_list); |
| 635 |
647 web_response->setStatus(response.status_code); | 636 web_response->setStatus(response.status_code); |
648 web_response->setStatusText(WebString::fromASCII(response.status_text)); | 637 web_response->setStatusText(WebString::fromASCII(response.status_text)); |
649 web_response->setResponseType(response.response_type); | 638 web_response->setResponseType(response.response_type); |
650 web_response->setResponseTime(response.response_time.ToInternalValue()); | 639 web_response->setResponseTime(response.response_time.ToInternalValue()); |
651 web_response->setCacheStorageCacheName( | 640 web_response->setCacheStorageCacheName( |
652 response.is_in_cache_storage | 641 response.is_in_cache_storage |
653 ? blink::WebString::fromUTF8(response.cache_storage_cache_name) | 642 ? blink::WebString::fromUTF8(response.cache_storage_cache_name) |
654 : blink::WebString()); | 643 : blink::WebString()); |
655 blink::WebVector<blink::WebString> headers( | 644 blink::WebVector<blink::WebString> headers( |
656 response.cors_exposed_header_names.size()); | 645 response.cors_exposed_header_names.size()); |
(...skipping 20 matching lines...) Expand all Loading... |
677 CacheStorageDispatcher::WebResponsesFromResponses( | 666 CacheStorageDispatcher::WebResponsesFromResponses( |
678 const std::vector<ServiceWorkerResponse>& responses) { | 667 const std::vector<ServiceWorkerResponse>& responses) { |
679 blink::WebVector<blink::WebServiceWorkerResponse> web_responses( | 668 blink::WebVector<blink::WebServiceWorkerResponse> web_responses( |
680 responses.size()); | 669 responses.size()); |
681 for (size_t i = 0; i < responses.size(); ++i) | 670 for (size_t i = 0; i < responses.size(); ++i) |
682 PopulateWebResponseFromResponse(responses[i], &(web_responses[i])); | 671 PopulateWebResponseFromResponse(responses[i], &(web_responses[i])); |
683 return web_responses; | 672 return web_responses; |
684 } | 673 } |
685 | 674 |
686 } // namespace content | 675 } // namespace content |
OLD | NEW |