| 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 b805cf81ecf48d76b94cd73d0dcfedd3acfacc51..1f5767ab469cf6e4bc1a9a6d166cb13bd12d3587 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 =
|
| + base::MakeUnique<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,37 @@ 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>>();
|
| + // TODO(horo) Add UMA for the deprecated URL field.
|
| + 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>
|
|
|