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

Unified Diff: content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc

Issue 622833002: ServiceWorkerCache: Support response body in blob form. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@opacity
Patch Set: Rebase Created 6 years, 2 months 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/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
diff --git a/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc b/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
index 3583458fb59ef799f8580bfd0a0b218e7161b40e..36170aa67986911c9927b7ddb4c2d1ab92636fb0 100644
--- a/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
+++ b/content/renderer/service_worker/service_worker_cache_storage_dispatcher.cc
@@ -90,33 +90,8 @@ ServiceWorkerResponse ResponseFromWebResponse(
base::UTF16ToASCII(web_response.statusText()),
web_response.responseType(),
headers,
- base::UTF16ToASCII(web_response.blobUUID()));
-}
-
-void PopulateWebResponseFromResponse(
- const ServiceWorkerResponse& response,
- blink::WebServiceWorkerResponse* web_response) {
- web_response->setURL(response.url);
- web_response->setStatus(response.status_code);
- web_response->setStatusText(base::ASCIIToUTF16(response.status_text));
- web_response->setResponseType(response.response_type);
-
- for (ServiceWorkerHeaderMap::const_iterator i = response.headers.begin(),
- end = response.headers.end();
- i != end; ++i) {
- web_response->setHeader(base::ASCIIToUTF16(i->first),
- base::ASCIIToUTF16(i->second));
- }
- // TODO(gavinp): set blob here.
-}
-
-blink::WebVector<blink::WebServiceWorkerResponse> WebResponsesFromResponses(
- const std::vector<ServiceWorkerResponse>& responses) {
- blink::WebVector<blink::WebServiceWorkerResponse>
- web_responses(responses.size());
- for (size_t i = 0; i < responses.size(); ++i)
- PopulateWebResponseFromResponse(responses[i], &(web_responses[i]));
- return web_responses;
+ base::UTF16ToASCII(web_response.blobUUID()),
+ web_response.blobSize());
}
ServiceWorkerCacheQueryParams QueryParamsFromWebQueryParams(
@@ -558,10 +533,46 @@ void ServiceWorkerCacheStorageDispatcher::dispatchBatchForCache(
script_context_->GetRoutingID(), request_id, cache_id, operations));
}
+void ServiceWorkerCacheStorageDispatcher::dispatchBlobDataHandled(
+ const std::string& uuid) {
+ script_context_->Send(new ServiceWorkerHostMsg_BlobDataHandled(
+ script_context_->GetRoutingID(), base::ASCIIToUTF16(uuid)));
michaeln 2014/10/06 21:01:33 can this be std::string?
jkarlin 2014/10/07 12:48:17 I agree that we should be sending strings instead
michaeln 2014/10/07 21:29:57 nit: oh well, cargo cult wins? In this case i thi
+}
+
void ServiceWorkerCacheStorageDispatcher::OnWebCacheDestruction(int cache_id) {
web_caches_.Remove(cache_id);
script_context_->Send(new ServiceWorkerHostMsg_CacheClosed(
script_context_->GetRoutingID(), cache_id));
}
+void ServiceWorkerCacheStorageDispatcher::PopulateWebResponseFromResponse(
+ const ServiceWorkerResponse& response,
+ blink::WebServiceWorkerResponse* web_response) {
+ web_response->setURL(response.url);
+ web_response->setStatus(response.status_code);
+ web_response->setStatusText(base::ASCIIToUTF16(response.status_text));
+ web_response->setResponseType(response.response_type);
+
+ for (const auto& i : response.headers) {
+ web_response->setHeader(base::ASCIIToUTF16(i.first),
+ base::ASCIIToUTF16(i.second));
+ }
+
+ web_response->setBlob(blink::WebString::fromUTF8(response.blob_uuid),
+ response.blob_size);
+
+ // Let the host know that it can release its reference to the blob.
+ dispatchBlobDataHandled(response.blob_uuid);
+}
+
+blink::WebVector<blink::WebServiceWorkerResponse>
+ServiceWorkerCacheStorageDispatcher::WebResponsesFromResponses(
+ const std::vector<ServiceWorkerResponse>& responses) {
+ blink::WebVector<blink::WebServiceWorkerResponse> web_responses(
+ responses.size());
+ for (size_t i = 0; i < responses.size(); ++i)
+ PopulateWebResponseFromResponse(responses[i], &(web_responses[i]));
+ return web_responses;
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698