blob: c1b1041771bc46b421e0c3a4ca54d5e72ecf43ef [file] [log] [blame]
Leon Han79211022019-07-13 04:28:041// Copyright 2019 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/fetch/fetch_api_request_proto.h"
6
7#include "content/common/fetch/fetch_api_request.pb.h"
Lukasz Anforowicza192eb952019-10-15 19:22:228#include "content/public/common/referrer.h"
Leon Han79211022019-07-13 04:28:049
10namespace content {
11
12std::string SerializeFetchRequestToString(
13 const blink::mojom::FetchAPIRequest& request) {
14 proto::internal::FetchAPIRequest request_proto;
15
16 request_proto.set_url(request.url.spec());
17 request_proto.set_method(request.method);
18 request_proto.mutable_headers()->insert(request.headers.begin(),
19 request.headers.end());
20 request_proto.mutable_referrer()->set_url(request.referrer->url.spec());
21 request_proto.mutable_referrer()->set_policy(
22 static_cast<int>(request.referrer->policy));
23 request_proto.set_is_reload(request.is_reload);
24 request_proto.set_mode(static_cast<int>(request.mode));
25 request_proto.set_is_main_resource_load(request.is_main_resource_load);
Leon Han79211022019-07-13 04:28:0426 request_proto.set_credentials_mode(
27 static_cast<int>(request.credentials_mode));
28 request_proto.set_cache_mode(static_cast<int>(request.cache_mode));
29 request_proto.set_redirect_mode(static_cast<int>(request.redirect_mode));
30 if (request.integrity)
31 request_proto.set_integrity(request.integrity.value());
32 request_proto.set_keepalive(request.keepalive);
33 request_proto.set_is_history_navigation(request.is_history_navigation);
34 return request_proto.SerializeAsString();
35}
36
37blink::mojom::FetchAPIRequestPtr DeserializeFetchRequestFromString(
38 const std::string& serialized) {
39 proto::internal::FetchAPIRequest request_proto;
40 if (!request_proto.ParseFromString(serialized)) {
41 return blink::mojom::FetchAPIRequest::New();
42 }
43
44 auto request_ptr = blink::mojom::FetchAPIRequest::New();
45 request_ptr->mode =
46 static_cast<network::mojom::RequestMode>(request_proto.mode());
47 request_ptr->is_main_resource_load = request_proto.is_main_resource_load();
Kinuko Yasuda4e8e49082020-01-22 11:32:4348 request_ptr->frame_type = blink::mojom::RequestContextFrameType::kNone;
Leon Han79211022019-07-13 04:28:0449 request_ptr->url = GURL(request_proto.url());
50 request_ptr->method = request_proto.method();
Jan Wilken Dörrie7053a3a2020-11-10 09:13:4451 request_ptr->headers = blink::FetchAPIRequestHeadersMap(
52 request_proto.headers().begin(), request_proto.headers().end());
Lukasz Anforowicza192eb952019-10-15 19:22:2253 request_ptr->referrer = blink::mojom::Referrer::New(
54 GURL(request_proto.referrer().url()),
55
56 Referrer::ConvertToPolicy(request_proto.referrer().policy()));
Leon Han79211022019-07-13 04:28:0457 request_ptr->is_reload = request_proto.is_reload();
58 request_ptr->credentials_mode = static_cast<network::mojom::CredentialsMode>(
59 request_proto.credentials_mode());
60 request_ptr->cache_mode =
61 static_cast<blink::mojom::FetchCacheMode>(request_proto.cache_mode());
62 request_ptr->redirect_mode =
63 static_cast<network::mojom::RedirectMode>(request_proto.redirect_mode());
64 if (request_proto.has_integrity())
65 request_ptr->integrity = request_proto.integrity();
66 request_ptr->keepalive = request_proto.keepalive();
67 request_ptr->is_history_navigation = request_proto.is_history_navigation();
68 return request_ptr;
69}
70
71} // namespace content