Index: content/renderer/service_worker/service_worker_type_util.cc |
diff --git a/content/renderer/service_worker/service_worker_type_util.cc b/content/renderer/service_worker/service_worker_type_util.cc |
index 220ee229312cf4b0653077cedc9bf2e80f1140a8..7db72e907bee5da0e0754569c9fc35762627a953 100644 |
--- a/content/renderer/service_worker/service_worker_type_util.cc |
+++ b/content/renderer/service_worker/service_worker_type_util.cc |
@@ -7,6 +7,7 @@ |
#include <memory> |
#include <string> |
+#include "base/memory/ptr_util.h" |
#include "base/strings/utf_string_conversions.h" |
#include "content/common/service_worker/service_worker_types.h" |
#include "third_party/WebKit/public/platform/WebHTTPHeaderVisitor.h" |
@@ -43,6 +44,32 @@ std::unique_ptr<HeaderVisitor> MakeHeaderVisitor( |
return std::unique_ptr<HeaderVisitor>(new HeaderVisitor(headers)); |
} |
+std::unique_ptr<ServiceWorkerHeaderMap> GetHeaderMap( |
+ const blink::WebServiceWorkerResponse& web_response) { |
+ std::unique_ptr<ServiceWorkerHeaderMap> result = |
+ base::MakeUnique<ServiceWorkerHeaderMap>(); |
+ web_response.visitHTTPHeaderFields(MakeHeaderVisitor(result.get()).get()); |
+ return result; |
+} |
+ |
+std::unique_ptr<ServiceWorkerHeaderList> GetHeaderList( |
+ const blink::WebVector<blink::WebString>& web_headers) { |
+ std::unique_ptr<ServiceWorkerHeaderList> result = |
+ base::MakeUnique<ServiceWorkerHeaderList>(web_headers.size()); |
+ std::transform(web_headers.begin(), web_headers.end(), result->begin(), |
+ [](const blink::WebString& s) { return s.latin1(); }); |
+ return result; |
+} |
+ |
+std::unique_ptr<std::vector<GURL>> GetURLList( |
+ const blink::WebVector<blink::WebURL>& web_url_list) { |
+ std::unique_ptr<std::vector<GURL>> result = |
+ base::MakeUnique<std::vector<GURL>>(web_url_list.size()); |
+ std::transform(web_url_list.begin(), web_url_list.end(), result->begin(), |
+ [](const blink::WebURL& url) { return url; }); |
+ return result; |
+} |
+ |
} // namespace |
void GetServiceWorkerHeaderMapFromWebRequest( |
@@ -53,22 +80,17 @@ void GetServiceWorkerHeaderMapFromWebRequest( |
web_request.visitHTTPHeaderFields(MakeHeaderVisitor(headers).get()); |
} |
-void GetServiceWorkerHeaderMapFromWebResponse( |
- const blink::WebServiceWorkerResponse& web_response, |
- ServiceWorkerHeaderMap* headers) { |
- DCHECK(headers); |
- DCHECK(headers->empty()); |
- web_response.visitHTTPHeaderFields(MakeHeaderVisitor(headers).get()); |
-} |
- |
-void GetCorsExposedHeaderNamesFromWebResponse( |
- const blink::WebServiceWorkerResponse& web_response, |
- ServiceWorkerHeaderList* result) { |
- blink::WebVector<blink::WebString> headers = |
- web_response.corsExposedHeaderNames(); |
- result->resize(headers.size()); |
- std::transform(headers.begin(), headers.end(), result->begin(), |
- [](const blink::WebString& s) { return s.latin1(); }); |
+ServiceWorkerResponse GetServiceWorkerResponseFromWebResponse( |
+ const blink::WebServiceWorkerResponse& web_response) { |
+ return ServiceWorkerResponse( |
+ GetURLList(web_response.urlList()), web_response.status(), |
+ web_response.statusText().utf8(), web_response.responseType(), |
+ GetHeaderMap(web_response), web_response.blobUUID().utf8(), |
+ web_response.blobSize(), web_response.streamURL(), web_response.error(), |
+ base::Time::FromInternalValue(web_response.responseTime()), |
+ !web_response.cacheStorageCacheName().isNull(), |
+ web_response.cacheStorageCacheName().utf8(), |
+ GetHeaderList(web_response.corsExposedHeaderNames())); |
} |
} // namespace content |