// Copyright 2016 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 NET_NQE_NETWORK_QUALITY_OBSERVATION_SOURCE_H_
#define NET_NQE_NETWORK_QUALITY_OBSERVATION_SOURCE_H_

namespace net {

// On Android, a Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.net
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: NetworkQualityObservationSource
// GENERATED_JAVA_PREFIX_TO_STRIP: NETWORK_QUALITY_OBSERVATION_SOURCE_
enum NetworkQualityObservationSource {
  // The observation was taken at the request layer, e.g., a round trip time
  // is recorded as the time between the request being sent and the first byte
  // being received.
  NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP = 0,

  // The observation is taken from TCP statistics maintained by the kernel.
  NETWORK_QUALITY_OBSERVATION_SOURCE_TCP = 1,

  // The observation is taken at the QUIC layer.
  NETWORK_QUALITY_OBSERVATION_SOURCE_QUIC = 2,

  // The observation is a previously cached estimate of the metric.  The metric
  // was computed at the HTTP layer.
  NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE = 3,

  // The observation is derived from network connection information provided
  // by the platform. For example, typical RTT and throughput values are used
  // for a given type of network connection.  The metric was provided for use
  // at the HTTP layer.
  NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM = 4,

  // The observation came from a Chromium-external source. The metric was
  // computed by the external source at the HTTP layer.
  // Deprecated since external estimate provider is not currently queried.
  DEPRECATED_NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE = 5,

  // The observation is a previously cached estimate of the metric. The metric
  // was computed at the transport layer.
  NETWORK_QUALITY_OBSERVATION_SOURCE_TRANSPORT_CACHED_ESTIMATE = 6,

  // The observation is derived from the network connection information provided
  // by the platform. For example, typical RTT and throughput values are used
  // for a given type of network connection.  The metric was provided for use
  // at the transport layer.
  NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_TRANSPORT_FROM_PLATFORM = 7,

  NETWORK_QUALITY_OBSERVATION_SOURCE_MAX,
};

namespace nqe {

namespace internal {
// Returns the string equivalent of |source|.
const char* GetNameForObservationSource(NetworkQualityObservationSource source);

// Different categories to which an observation source can belong to. Each
// observation source belongs to exactly one category.
enum ObservationCategory {
  // HTTP RTT observations measure the RTT from this device taken at the
  // HTTP layer. If a HTTP-layer proxy is in use, then the RTT observations
  // would measure the RTT from this device to the proxy.
  OBSERVATION_CATEGORY_HTTP = 0,
  // Transport RTT observations measure the RTT from this device taken at the
  // transport layer. If a transport-layer proxy (e.g., TCP proxy) is in use,
  // then the RTT observations would measure the RTT from this device to the
  // proxy.
  OBSERVATION_CATEGORY_TRANSPORT = 1,
  // End to end RTT observations measure the RTT from this device to the remote
  // web server. Currently, this only includes RTT observations taken from the
  // QUIC connections.
  OBSERVATION_CATEGORY_END_TO_END = 2,
  OBSERVATION_CATEGORY_COUNT = 3
};

}  // namespace internal

}  // namespace nqe

}  // namespace net

#endif  // NET_NQE_NETWORK_QUALITY_OBSERVATION_SOURCE_H_
