Chromium Code Reviews| 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 |