1 // Copyright 2020 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 "third_party/blink/renderer/core/loader/cross_thread_resource_timing_info_copier.h"
6
7 #include "third_party/blink/public/mojom/timing/resource_timing.mojom-blink.h"
8
9 namespace WTF {
10
11 namespace {
12
CloneServerTimingInfoArray(const Vector<blink::mojom::blink::ServerTimingInfoPtr> & server_timing)13 Vector<blink::mojom::blink::ServerTimingInfoPtr> CloneServerTimingInfoArray(
14 const Vector<blink::mojom::blink::ServerTimingInfoPtr>& server_timing) {
15 Vector<blink::mojom::blink::ServerTimingInfoPtr> result;
16 for (const auto& entry : server_timing) {
17 result.emplace_back(
18 CrossThreadCopier<blink::mojom::blink::ServerTimingInfoPtr>::Copy(
19 entry));
20 }
21 return result;
22 }
23
24 } // namespace
25
26 CrossThreadCopier<blink::mojom::blink::ResourceTimingInfoPtr>::Type
Copy(const blink::mojom::blink::ResourceTimingInfoPtr & info)27 CrossThreadCopier<blink::mojom::blink::ResourceTimingInfoPtr>::Copy(
28 const blink::mojom::blink::ResourceTimingInfoPtr& info) {
29 return blink::mojom::blink::ResourceTimingInfo::New(
30 info->name.IsolatedCopy(), info->start_time,
31 info->alpn_negotiated_protocol.IsolatedCopy(),
32 info->connection_info.IsolatedCopy(),
33 info->timing ? info->timing->Clone() : nullptr,
34 info->last_redirect_end_time, info->response_end, info->context_type,
35 info->request_destination, info->transfer_size, info->encoded_body_size,
36 info->decoded_body_size, info->did_reuse_connection,
37 info->is_secure_context, info->allow_timing_details,
38 info->allow_redirect_details, info->allow_negative_values,
39 CloneServerTimingInfoArray(info->server_timing));
40 }
41
42 CrossThreadCopier<blink::mojom::blink::ServerTimingInfoPtr>::Type
Copy(const blink::mojom::blink::ServerTimingInfoPtr & info)43 CrossThreadCopier<blink::mojom::blink::ServerTimingInfoPtr>::Copy(
44 const blink::mojom::blink::ServerTimingInfoPtr& info) {
45 return blink::mojom::blink::ServerTimingInfo::New(
46 info->name.IsolatedCopy(), info->duration,
47 info->description.IsolatedCopy());
48 }
49
50 } // namespace WTF
51