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