Chromium Code Reviews| Index: content/browser/cache_storage/cache_storage_cache.cc |
| diff --git a/content/browser/cache_storage/cache_storage_cache.cc b/content/browser/cache_storage/cache_storage_cache.cc |
| index 77286600d22f3f6f75286086d32f83a921e81353..1d672df4784c9c3273d1f35a60c57a41c30fbb90 100644 |
| --- a/content/browser/cache_storage/cache_storage_cache.cc |
| +++ b/content/browser/cache_storage/cache_storage_cache.cc |
| @@ -953,16 +953,9 @@ void CacheStorageCache::Put(const CacheStorageBatchOperation& operation, |
| DCHECK(!(operation.response.response_type == |
| blink::WebServiceWorkerResponseTypeOpaqueRedirect && |
| operation.response.blob_size)); |
| - std::unique_ptr<ServiceWorkerResponse> response(new ServiceWorkerResponse( |
| - operation.response.url, operation.response.status_code, |
| - operation.response.status_text, operation.response.response_type, |
| - operation.response.headers, operation.response.blob_uuid, |
| - operation.response.blob_size, operation.response.stream_url, |
| - operation.response.error, operation.response.response_time, |
| - false /* is_in_cache_storage */, |
| - std::string() /* cache_storage_cache_name */, |
| - operation.response.cors_exposed_header_names)); |
| + std::unique_ptr<ServiceWorkerResponse> response( |
| + new ServiceWorkerResponse(operation.response)); |
| std::unique_ptr<storage::BlobDataHandle> blob_data_handle; |
| if (!response->blob_uuid.empty()) { |
| @@ -1068,7 +1061,8 @@ void CacheStorageCache::PutDidCreateEntry( |
| response_metadata->set_status_text(put_context->response->status_text); |
| response_metadata->set_response_type( |
| WebResponseTypeToProtoResponseType(put_context->response->response_type)); |
| - response_metadata->set_url(put_context->response->url.spec()); |
| + for (const auto& url : put_context->response->url_list) |
| + response_metadata->add_url_list(url.spec()); |
| response_metadata->set_response_time( |
| put_context->response->response_time.ToInternalValue()); |
| for (ServiceWorkerHeaderMap::const_iterator it = |
| @@ -1407,24 +1401,39 @@ void CacheStorageCache::PopulateRequestFromMetadata( |
| void CacheStorageCache::PopulateResponseMetadata( |
| const proto::CacheMetadata& metadata, |
| ServiceWorkerResponse* response) { |
| + std::unique_ptr<std::vector<GURL>> url_list( |
| + base::MakeUnique<std::vector<GURL>>()); |
| + // From Chrome 57, proto::CacheMetadata's url field was deprecated. |
| + UMA_HISTOGRAM_BOOLEAN("ServiceWorkerCache.Response.HasDepricatedURL", |
|
falken
2016/11/30 14:57:37
s/Depricated/Deprecated
Given the size of this CL
horo
2016/12/01 07:42:13
Done.
Added TODO.
|
| + metadata.response().has_url()); |
| + if (metadata.response().has_url()) { |
| + url_list->push_back(GURL(metadata.response().url())); |
| + } else { |
| + url_list->reserve(metadata.response().url_list_size()); |
| + for (int i = 0; i < metadata.response().url_list_size(); ++i) |
| + url_list->push_back(GURL(metadata.response().url_list(i))); |
| + } |
| + |
| + std::unique_ptr<ServiceWorkerHeaderMap> headers( |
| + base::MakeUnique<ServiceWorkerHeaderMap>()); |
| + for (int i = 0; i < metadata.response().headers_size(); ++i) { |
| + const proto::CacheHeaderMap header = metadata.response().headers(i); |
| + DCHECK_EQ(std::string::npos, header.name().find('\0')); |
| + DCHECK_EQ(std::string::npos, header.value().find('\0')); |
| + headers->insert(std::make_pair(header.name(), header.value())); |
| + } |
| + |
| *response = ServiceWorkerResponse( |
| - GURL(metadata.response().url()), metadata.response().status_code(), |
| + std::move(url_list), metadata.response().status_code(), |
| metadata.response().status_text(), |
| ProtoResponseTypeToWebResponseType(metadata.response().response_type()), |
| - ServiceWorkerHeaderMap(), "", 0, GURL(), |
| + std::move(headers), "", 0, GURL(), |
| blink::WebServiceWorkerResponseErrorUnknown, |
| base::Time::FromInternalValue(metadata.response().response_time()), |
| true /* is_in_cache_storage */, cache_name_, |
| - ServiceWorkerHeaderList( |
| + base::MakeUnique<ServiceWorkerHeaderList>( |
| metadata.response().cors_exposed_header_names().begin(), |
| metadata.response().cors_exposed_header_names().end())); |
| - |
| - for (int i = 0; i < metadata.response().headers_size(); ++i) { |
| - const proto::CacheHeaderMap header = metadata.response().headers(i); |
| - DCHECK_EQ(std::string::npos, header.name().find('\0')); |
| - DCHECK_EQ(std::string::npos, header.value().find('\0')); |
| - response->headers.insert(std::make_pair(header.name(), header.value())); |
| - } |
| } |
| std::unique_ptr<storage::BlobDataHandle> |