| // Copyright 2017 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. |
| |
| #ifndef CONTENT_COMMON_RESOURCE_TIMING_INFO_H_ |
| #define CONTENT_COMMON_RESOURCE_TIMING_INFO_H_ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/optional.h" |
| #include "base/time/time.h" |
| |
| namespace content { |
| |
| // TODO(dcheng): Migrate this struct over to Mojo so it doesn't need to be |
| // duplicated in //content and //third_party/WebKit. |
| // See blink::WebServerTimingInfo for more information about this struct's |
| // fields. |
| struct ServerTimingInfo { |
| ServerTimingInfo(); |
| ServerTimingInfo(const ServerTimingInfo&); |
| ~ServerTimingInfo(); |
| |
| std::string name; |
| double duration = 0.0; |
| std::string description; |
| }; |
| |
| // TODO(dcheng): Migrate this struct over to Mojo so it doesn't need to be |
| // duplicated in //content and //third_party/WebKit. |
| // See blink::WebURLLoadTiming for more information about this struct's fields. |
| struct ResourceLoadTiming { |
| ResourceLoadTiming(); |
| ResourceLoadTiming(const ResourceLoadTiming&); |
| ~ResourceLoadTiming(); |
| |
| base::TimeTicks request_time; |
| base::TimeTicks proxy_start; |
| base::TimeTicks proxy_end; |
| base::TimeTicks dns_start; |
| base::TimeTicks dns_end; |
| base::TimeTicks connect_start; |
| base::TimeTicks connect_end; |
| base::TimeTicks worker_start; |
| base::TimeTicks worker_ready; |
| base::TimeTicks send_start; |
| base::TimeTicks send_end; |
| base::TimeTicks receive_headers_start; |
| base::TimeTicks receive_headers_end; |
| base::TimeTicks ssl_start; |
| base::TimeTicks ssl_end; |
| base::TimeTicks push_start; |
| base::TimeTicks push_end; |
| }; |
| |
| // TODO(dcheng): Migrate this struct over to Mojo so it doesn't need to be |
| // duplicated in //content and //third_party/WebKit. |
| // See blink::WebResourceTimingInfo for more information about this struct's |
| // fields. |
| struct ResourceTimingInfo { |
| ResourceTimingInfo(); |
| ResourceTimingInfo(const ResourceTimingInfo&); |
| ~ResourceTimingInfo(); |
| |
| std::string name; |
| base::TimeTicks start_time; |
| std::string initiator_type; |
| std::string alpn_negotiated_protocol; |
| std::string connection_info; |
| base::Optional<ResourceLoadTiming> timing; |
| base::TimeTicks last_redirect_end_time; |
| base::TimeTicks response_end; |
| uint64_t transfer_size = 0; |
| uint64_t encoded_body_size = 0; |
| uint64_t decoded_body_size = 0; |
| bool did_reuse_connection = false; |
| bool allow_timing_details = false; |
| bool allow_redirect_details = false; |
| bool allow_negative_values = false; |
| std::vector<ServerTimingInfo> server_timing; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_COMMON_RESOURCE_TIMING_INFO_H_ |