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

Side by Side Diff: content/common/url_loader_type_converters.cc

Issue 1970693002: Use mojo for Chrome Loading, Part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/common/url_loader_type_converters.h"
6
7 #include "base/strings/string_util.h"
8 #include "base/time/time.h"
9 #include "content/common/resource_messages.h"
10 #include "content/public/common/resource_response.h"
11 #include "net/http/http_response_headers.h"
12 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h"
13 #include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWor kerResponseType.h"
14 #include "url/gurl.h"
15 #include "url/origin.h"
16
17 namespace mojo {
18
19 using content::mojom::URLLoaderStatus;
20 using content::mojom::URLLoaderStatusPtr;
21 using content::mojom::URLRequest;
22 using content::mojom::URLRequestPtr;
23 using content::mojom::URLResponse;
24 using content::mojom::URLResponsePtr;
25
26 #define CHECK_ENUM(blink_prefix, mojom_enum, name) \
27 static_assert(static_cast<int>(blink::blink_prefix##name) == \
28 static_cast<int>(content::mojom::mojom_enum::name), \
29 "Mismatched enum: " #blink_prefix #name " != " #mojom_enum \
30 "::" #name)
31
32 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, Always);
33 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, Default);
34 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, NoReferrerWhenDowngrade);
35 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, Never);
36 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, Origin);
37 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, OriginWhenCrossOrigin);
38 CHECK_ENUM(WebReferrerPolicy,
39 ReferrerPolicy,
40 NoReferrerWhenDowngradeOriginWhenCrossOrigin);
41 CHECK_ENUM(WebReferrerPolicy, ReferrerPolicy, Last);
42
43 CHECK_ENUM(WebServiceWorkerResponseType, ServiceWorkerResponseType, Basic);
44 CHECK_ENUM(WebServiceWorkerResponseType, ServiceWorkerResponseType, CORS);
45 CHECK_ENUM(WebServiceWorkerResponseType, ServiceWorkerResponseType, Default);
46 CHECK_ENUM(WebServiceWorkerResponseType, ServiceWorkerResponseType, Error);
47 CHECK_ENUM(WebServiceWorkerResponseType, ServiceWorkerResponseType, Opaque);
48 CHECK_ENUM(WebServiceWorkerResponseType,
49 ServiceWorkerResponseType,
50 OpaqueRedirect);
51 CHECK_ENUM(WebServiceWorkerResponseType, ServiceWorkerResponseType, Last);
52
53 URLRequestPtr TypeConverter<URLRequestPtr, ResourceHostMsg_Request>::Convert(
dcheng 2016/05/11 17:05:18 Let's avoid adding new type converters and use Str
yhirano 2016/05/16 14:40:06 Done (using ipc paramtraits)
54 const ResourceHostMsg_Request& request) {
55 URLRequestPtr url_request(URLRequest::New());
56
57 url_request->method = request.method;
58 url_request->url = request.url.spec();
59 url_request->first_party_for_cookies = request.first_party_for_cookies.spec();
60 url_request->request_initiator = request.request_initiator.Serialize();
61 url_request->referrer = request.referrer.spec();
62 url_request->referrer_policy =
63 static_cast<content::mojom::ReferrerPolicy>(request.referrer_policy);
64
65 return url_request;
66 }
67
68 ResourceHostMsg_Request
69 TypeConverter<ResourceHostMsg_Request, URLRequest>::Convert(
70 const URLRequest& request) {
71 ResourceHostMsg_Request ipc_request;
72 ipc_request.method = request.method;
73 ipc_request.url = GURL(request.url.get());
74 ipc_request.first_party_for_cookies =
75 GURL(std::string(request.first_party_for_cookies));
76 ipc_request.request_initiator =
77 url::Origin(GURL(std::string(request.request_initiator)));
78 ipc_request.referrer = GURL(std::string(request.referrer));
79 ipc_request.referrer_policy =
80 static_cast<blink::WebReferrerPolicy>(request.referrer_policy);
81
82 return ipc_request;
83 }
84
85 URLResponsePtr
86 TypeConverter<URLResponsePtr, content::ResourceResponseHead>::Convert(
87 const content::ResourceResponseHead& head) {
88 URLResponsePtr response(URLResponse::New());
89 response->request_start = head.request_start.ToInternalValue();
90 response->response_start = head.response_start.ToInternalValue();
91 response->request_time = head.request_time.ToInternalValue();
92 response->response_time = head.response_time.ToInternalValue();
93
94 if (head.headers) {
95 std::string headers;
96 // See ParamTraits<scoped_refptr<net::HttpResponseHeaders>>::Write.
97 head.headers->PersistTo(net::HttpResponseHeaders::PERSIST_SANS_COOKIES,
98 &headers);
99 response->headers = headers;
100 }
101 response->mime_type = head.mime_type;
102 response->charset = head.charset;
103 response->security_info = head.security_info;
104 response->has_major_certificate_errors = head.has_major_certificate_errors;
105 response->content_length = head.content_length;
106 response->encoded_data_length = head.encoded_data_length;
107 response->appcache_id = head.appcache_id;
108 response->appcache_manifest_url = head.appcache_manifest_url.spec();
109 response->was_fetched_via_spdy = head.was_fetched_via_spdy;
110 response->was_npn_negotiated = head.was_npn_negotiated;
111 response->was_alternate_protocol_available =
112 head.was_alternate_protocol_available;
113 response->was_fetched_via_proxy = head.was_fetched_via_proxy;
114 response->npn_negotiated_protocol = head.npn_negotiated_protocol;
115 response->was_fetched_via_service_worker =
116 head.was_fetched_via_service_worker;
117 response->was_fallback_required_by_service_worker =
118 head.was_fallback_required_by_service_worker;
119 response->original_url_via_service_worker =
120 head.original_url_via_service_worker.spec();
121 response->response_type_via_service_worker =
122 static_cast<content::mojom::ServiceWorkerResponseType>(
123 head.response_type_via_service_worker);
124 response->service_worker_start_time =
125 head.service_worker_start_time.ToInternalValue();
126 response->service_worker_ready_time =
127 head.service_worker_ready_time.ToInternalValue();
128 response->is_in_cache_storage = head.is_in_cache_storage;
129 response->cache_storage_cache_name = head.cache_storage_cache_name;
130 response->is_using_lofi = head.is_using_lofi;
131
132 return response;
133 }
134
135 content::ResourceResponseHead
136 TypeConverter<content::ResourceResponseHead, URLResponse>::Convert(
137 const URLResponse& response) {
138 content::ResourceResponseHead head;
139 head.request_start =
140 base::TimeTicks::FromInternalValue(response.request_start);
141 head.response_start =
142 base::TimeTicks::FromInternalValue(response.response_start);
143 head.request_time = base::Time::FromInternalValue(response.request_time);
144 head.response_time = base::Time::FromInternalValue(response.response_time);
145 if (response.headers.size() > 0)
146 head.headers = new net::HttpResponseHeaders(response.headers);
147 head.mime_type = response.mime_type;
148 head.charset = response.charset;
149 head.security_info = response.security_info;
150 head.has_major_certificate_errors = response.has_major_certificate_errors;
151 head.content_length = response.content_length;
152 head.encoded_data_length = response.encoded_data_length;
153 head.appcache_id = response.appcache_id;
154 head.appcache_manifest_url =
155 GURL(std::string(response.appcache_manifest_url));
156 head.was_fetched_via_spdy = response.was_fetched_via_spdy;
157 head.was_npn_negotiated = response.was_npn_negotiated;
158 head.was_alternate_protocol_available =
159 response.was_alternate_protocol_available;
160 head.was_fetched_via_proxy = response.was_fetched_via_proxy;
161 head.npn_negotiated_protocol = response.npn_negotiated_protocol;
162 head.was_fetched_via_service_worker = response.was_fetched_via_service_worker;
163 head.was_fallback_required_by_service_worker =
164 response.was_fallback_required_by_service_worker;
165 head.original_url_via_service_worker =
166 GURL(std::string(response.original_url_via_service_worker));
167 head.response_type_via_service_worker =
168 static_cast<blink::WebServiceWorkerResponseType>(
169 response.response_type_via_service_worker);
170 head.service_worker_start_time =
171 base::TimeTicks::FromInternalValue(response.service_worker_start_time);
172 head.service_worker_ready_time =
173 base::TimeTicks::FromInternalValue(response.service_worker_ready_time);
174 head.is_in_cache_storage = response.is_in_cache_storage;
175 head.cache_storage_cache_name = response.cache_storage_cache_name;
176 head.is_using_lofi = response.is_using_lofi;
177
178 return head;
179 }
180
181 URLLoaderStatusPtr
182 TypeConverter<URLLoaderStatusPtr, ResourceMsg_RequestCompleteData>::Convert(
183 const ResourceMsg_RequestCompleteData& data) {
184 URLLoaderStatusPtr status(URLLoaderStatus::New());
185 status->network_error = data.error_code;
186 status->was_ignored_by_handler = data.was_ignored_by_handler;
187 status->exists_in_cache = data.exists_in_cache;
188 status->security_info = data.security_info;
189 status->completion_time = data.completion_time.ToInternalValue();
190 status->encoded_data_length = data.encoded_data_length;
191 return status;
192 }
193
194 ResourceMsg_RequestCompleteData
195 TypeConverter<ResourceMsg_RequestCompleteData, URLLoaderStatus>::Convert(
196 const URLLoaderStatus& status) {
197 ResourceMsg_RequestCompleteData data;
198 data.error_code = status.network_error;
199 data.was_ignored_by_handler = status.was_ignored_by_handler;
200 data.exists_in_cache = status.exists_in_cache;
201 data.security_info = status.security_info;
202 data.completion_time =
203 base::TimeTicks::FromInternalValue(status.completion_time);
204 data.encoded_data_length = status.encoded_data_length;
205 return data;
206 }
207
208 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698