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..7ac90063e98b6481b0f2ff05e12f84262271d13a 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) { |
falken
2016/11/30 14:57:37
can this be const&
horo
2016/12/01 07:42:13
Done.
|
+ 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 |