// 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_