| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.mojom; |
| |
| import "mojo/public/mojom/base/time.mojom"; |
| import "services/network/public/mojom/fetch_api.mojom"; |
| import "services/network/public/mojom/load_timing_info.mojom"; |
| import "third_party/blink/public/mojom/fetch/fetch_api_request.mojom"; |
| |
| // This struct holds the information from PerformanceServerTiming that needs |
| // to be passed between processes. This is currently used to send timing |
| // information about cross-process iframes for window.performance. |
| // Note: Please update CrossThreadCopier whenever a new field is added. |
| // See https://w3c.github.io/server-timing/#the-performanceservertiming-interface |
| struct ServerTimingInfo { |
| // Server specific metric name. Corresponds to |name| in |
| // PerformanceServerTiming. |
| // (https://w3c.github.io/server-timing/#the-performanceservertiming-interface). |
| string name; |
| |
| // Server specific duration. Corresponds to |duration| in |
| // PerformanceServerTiming. |
| // (https://w3c.github.io/server-timing/#the-performanceservertiming-interface). |
| double duration; |
| |
| // Server specific description. Corresponds to |description| in |
| // PerformanceServerTiming. |
| // (https://w3c.github.io/server-timing/#the-performanceservertiming-interface). |
| string description; |
| }; |
| |
| // This struct holds the information from PerformanceResourceTiming that needs |
| // to be passed between processes. This is currently used to send timing |
| // information about cross-process iframes for window.performance. |
| // Note: Please update CrossThreadCopier whenever a new field is added. |
| struct ResourceTimingInfo { |
| |
| // The name to associate with the performance entry. For iframes, this is |
| // typically the initial URL of the iframe resource. Corresponds to |name| |
| // in PerformanceResourceTiming (http://www.w3.org/TR/resource-timing-1/). |
| string name; |
| |
| // The start time of the request. Corresponds to |
| // |requestStart| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-1/). |
| mojo_base.mojom.TimeTicks start_time; |
| |
| // Corresponds to |nextHopProtocol| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-2/). |
| string alpn_negotiated_protocol; |
| |
| // Corresponds to the result of calling |
| // HttpResponseInfo::ConnectionInfoToString on the associated response |
| // object. |
| string connection_info; |
| |
| // The load timing data. |
| network.mojom.LoadTimingInfo? timing; |
| |
| // Corresponds to |next_hop_protocol| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-1/). |
| mojo_base.mojom.TimeTicks last_redirect_end_time; |
| |
| // Corresponds to |responseEnd| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-1/). |
| mojo_base.mojom.TimeTicks response_end; |
| |
| // Deprecated, use |request_destination| instead in new code. |
| // TODO(crbug.com/889751): Remove this once all the code migrates. |
| RequestContextType context_type; |
| network.mojom.RequestDestination request_destination; |
| |
| // Corresponds to |transferSize| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-2/). |
| uint64 transfer_size; |
| |
| // Corresponds to |encodedBodySize| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-2/). |
| uint64 encoded_body_size; |
| |
| // Corresponds to |decodedBodySize| in PerformanceResourceTiming |
| // (http://www.w3.org/TR/resource-timing-2/). |
| uint64 decoded_body_size; |
| |
| // Whether the connection was reused or not. |
| bool did_reuse_connection; |
| |
| // Whether the execution context that created this resource entry |
| // was a secure context or not. |
| bool is_secure_context; |
| |
| // TODO(dcheng): The way this code works is fairly confusing: it might seem |
| // unusual to store policy members like |allow_timing_details| inline, rather |
| // than just clearing the fields. The reason for this complexity is because |
| // PerformanceNavigationTiming inherits and shares many of the same fields |
| // exposed by PerformanceResourceTiming, but the underlying behavior is a |
| // little different. |
| bool allow_timing_details; |
| bool allow_redirect_details; |
| |
| // Normally, the timestamps are relative to the time origin. In most cases, |
| // these timestamps should be positive value, so 0 is used to mark invalid |
| // negative values. |
| // |
| // However, ServiceWorker navigation preloads may be negative, since these |
| // requests may be started before the service worker started. In those cases, |
| // this flag should be set to true. |
| bool allow_negative_values; |
| |
| // Sequence of server timing. Corresponds to |serverTiming| in |
| // PerformanceResourceTiming. See |
| // https://w3c.github.io/server-timing/#extension-to-the-performanceresourcetiming-interface |
| array<ServerTimingInfo> server_timing; |
| }; |