Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1172)

Unified Diff: content/browser/cache_storage/cache_storage_cache.cc

Issue 2516353002: Introduce url_list to the Response scheme of CacheStorage. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698