// Copyright 2018 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 network.mojom;

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

// Mirror of net::LoadTimingInfo::ConnectTiming.
struct LoadTimingInfoConnectTiming {
  mojo_base.mojom.TimeTicks dns_start;
  mojo_base.mojom.TimeTicks dns_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;
};
