chromium/services/network/public/mojom/load_timing_info.mojom

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

module network.mojom;

import "mojo/public/mojom/base/time.mojom";

// Mirror of net::LoadTimingInfo::ConnectTiming.
struct LoadTimingInfoConnectTiming {
  mojo_base.mojom.TimeTicks domain_lookup_start;
  mojo_base.mojom.TimeTicks domain_lookup_end;
  mojo_base.mojom.TimeTicks connect_start;
  mojo_base.mojom.TimeTicks connect_end;
  mojo_base.mojom.TimeTicks ssl_start;
  mojo_base.mojom.TimeTicks ssl_end;
};

// Mirror of net::LoadTimingInfo.
struct LoadTimingInfo {
  bool socket_reused;
  uint32 socket_log_id;
  mojo_base.mojom.Time request_start_time;
  mojo_base.mojom.TimeTicks request_start;
  mojo_base.mojom.TimeTicks proxy_resolve_start;
  mojo_base.mojom.TimeTicks proxy_resolve_end;
  LoadTimingInfoConnectTiming connect_timing;
  mojo_base.mojom.TimeTicks send_start;
  mojo_base.mojom.TimeTicks send_end;
  mojo_base.mojom.TimeTicks receive_headers_start;
  mojo_base.mojom.TimeTicks receive_headers_end;
  mojo_base.mojom.TimeTicks receive_non_informational_headers_start;
  mojo_base.mojom.TimeTicks first_early_hints_time;
  mojo_base.mojom.TimeTicks push_start;
  mojo_base.mojom.TimeTicks push_end;

  // The time immediately before starting ServiceWorker. If the response is not
  // provided by the ServiceWorker, kept empty.
  mojo_base.mojom.TimeTicks service_worker_start_time;

  // The time immediately before dispatching fetch event in ServiceWorker.
  // If the response is not provided by the ServiceWorker, kept empty.
  mojo_base.mojom.TimeTicks service_worker_ready_time;

  // The time immediately before the service worker fetch event handler runs.
  // If the response is not provided by the service worker, kept empty.
  // If respondWith() was not called, kept empty.
  mojo_base.mojom.TimeTicks service_worker_fetch_start;

  // The time when a service worker respondWith promise gets settled.
  // If the response is not provided by the service worker, kept empty.
  // If respondWith() was not called, kept empty.
  mojo_base.mojom.TimeTicks service_worker_respond_with_settled;

  // The time immediately before ServiceWorker static routing API starts
  // matching a request with the registered router rules. If the API is not
  // used, kept empty.
  mojo_base.mojom.TimeTicks service_worker_router_evaluation_start;

  // The time immediately before ServiceWorker static routing API starts
  // looking up the cache storage when "cache" is specified as its source. If
  // the API is not used, or the source is not "cache", kept empty.
  mojo_base.mojom.TimeTicks service_worker_cache_lookup_start;
};