uma_metrics: clean up and follow histogram recommendations
described in https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#requirements BUG=webrtc:12096 Change-Id: I00a45b88582668952a7e207b63b70da8212e06a9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/190580 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Philipp Hancke <philipp.hancke@googlemail.com> Cr-Commit-Position: refs/heads/master@{#32548}
This commit is contained in:
parent
5b5de21acc
commit
d0948bec4f
@ -8,42 +8,34 @@
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
// This file contains enums related to IPv4/IPv6 metrics.
|
||||
// This file contains enums related to Chrome UMA histograms. See
|
||||
// https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#requirements
|
||||
// for requirements when adding or changing metrics.
|
||||
|
||||
#ifndef API_UMA_METRICS_H_
|
||||
#define API_UMA_METRICS_H_
|
||||
|
||||
#include "rtc_base/ref_count.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// Currently this contains information related to WebRTC network/transport
|
||||
// information.
|
||||
|
||||
// The difference between PeerConnectionEnumCounter and
|
||||
// PeerConnectionMetricsName is that the "EnumCounter" is only counting the
|
||||
// occurrences of events, while "Name" has a value associated with it which is
|
||||
// used to form a histogram.
|
||||
|
||||
// This enum is backed by Chromium's histograms.xml,
|
||||
// chromium/src/tools/metrics/histograms/histograms.xml
|
||||
// Existing values cannot be re-ordered and new enums must be added
|
||||
// before kBoundary.
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum PeerConnectionAddressFamilyCounter {
|
||||
kPeerConnection_IPv4,
|
||||
kPeerConnection_IPv6,
|
||||
kBestConnections_IPv4,
|
||||
kBestConnections_IPv6,
|
||||
kPeerConnectionAddressFamilyCounter_Max,
|
||||
kPeerConnection_IPv4 = 0,
|
||||
kPeerConnection_IPv6 = 1,
|
||||
kBestConnections_IPv4 = 2,
|
||||
kBestConnections_IPv6 = 3,
|
||||
kPeerConnectionAddressFamilyCounter_Max
|
||||
};
|
||||
|
||||
// This enum defines types for UMA samples, which will have a range.
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum PeerConnectionMetricsName {
|
||||
kNetworkInterfaces_IPv4, // Number of IPv4 interfaces.
|
||||
kNetworkInterfaces_IPv6, // Number of IPv6 interfaces.
|
||||
kTimeToConnect, // In milliseconds.
|
||||
kLocalCandidates_IPv4, // Number of IPv4 local candidates.
|
||||
kLocalCandidates_IPv6, // Number of IPv6 local candidates.
|
||||
kNetworkInterfaces_IPv4 = 0, // Number of IPv4 interfaces.
|
||||
kNetworkInterfaces_IPv6 = 1, // Number of IPv6 interfaces.
|
||||
kTimeToConnect = 2, // In milliseconds.
|
||||
kLocalCandidates_IPv4 = 3, // Number of IPv4 local candidates.
|
||||
kLocalCandidates_IPv6 = 4, // Number of IPv6 local candidates.
|
||||
kPeerConnectionMetricsName_Max
|
||||
};
|
||||
|
||||
@ -51,109 +43,134 @@ enum PeerConnectionMetricsName {
|
||||
// <local_candidate_type>_<remote_candidate_type>. It is recorded based on the
|
||||
// type of candidate pair used when the PeerConnection first goes to a completed
|
||||
// state. When BUNDLE is enabled, only the first transport gets recorded.
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum IceCandidatePairType {
|
||||
// HostHost is deprecated. It was replaced with the set of types at the bottom
|
||||
// to report private or public host IP address.
|
||||
kIceCandidatePairHostHost,
|
||||
kIceCandidatePairHostSrflx,
|
||||
kIceCandidatePairHostRelay,
|
||||
kIceCandidatePairHostPrflx,
|
||||
kIceCandidatePairSrflxHost,
|
||||
kIceCandidatePairSrflxSrflx,
|
||||
kIceCandidatePairSrflxRelay,
|
||||
kIceCandidatePairSrflxPrflx,
|
||||
kIceCandidatePairRelayHost,
|
||||
kIceCandidatePairRelaySrflx,
|
||||
kIceCandidatePairRelayRelay,
|
||||
kIceCandidatePairRelayPrflx,
|
||||
kIceCandidatePairPrflxHost,
|
||||
kIceCandidatePairPrflxSrflx,
|
||||
kIceCandidatePairPrflxRelay,
|
||||
kIceCandidatePairHostHost = 0,
|
||||
kIceCandidatePairHostSrflx = 1,
|
||||
kIceCandidatePairHostRelay = 2,
|
||||
kIceCandidatePairHostPrflx = 3,
|
||||
kIceCandidatePairSrflxHost = 4,
|
||||
kIceCandidatePairSrflxSrflx = 5,
|
||||
kIceCandidatePairSrflxRelay = 6,
|
||||
kIceCandidatePairSrflxPrflx = 7,
|
||||
kIceCandidatePairRelayHost = 8,
|
||||
kIceCandidatePairRelaySrflx = 9,
|
||||
kIceCandidatePairRelayRelay = 10,
|
||||
kIceCandidatePairRelayPrflx = 11,
|
||||
kIceCandidatePairPrflxHost = 12,
|
||||
kIceCandidatePairPrflxSrflx = 13,
|
||||
kIceCandidatePairPrflxRelay = 14,
|
||||
|
||||
// The following 9 types tell whether local and remote hosts have hostname,
|
||||
// private or public IP addresses.
|
||||
kIceCandidatePairHostPrivateHostPrivate,
|
||||
kIceCandidatePairHostPrivateHostPublic,
|
||||
kIceCandidatePairHostPublicHostPrivate,
|
||||
kIceCandidatePairHostPublicHostPublic,
|
||||
kIceCandidatePairHostNameHostName,
|
||||
kIceCandidatePairHostNameHostPrivate,
|
||||
kIceCandidatePairHostNameHostPublic,
|
||||
kIceCandidatePairHostPrivateHostName,
|
||||
kIceCandidatePairHostPublicHostName,
|
||||
kIceCandidatePairHostPrivateHostPrivate = 15,
|
||||
kIceCandidatePairHostPrivateHostPublic = 16,
|
||||
kIceCandidatePairHostPublicHostPrivate = 17,
|
||||
kIceCandidatePairHostPublicHostPublic = 18,
|
||||
kIceCandidatePairHostNameHostName = 19,
|
||||
kIceCandidatePairHostNameHostPrivate = 20,
|
||||
kIceCandidatePairHostNameHostPublic = 21,
|
||||
kIceCandidatePairHostPrivateHostName = 22,
|
||||
kIceCandidatePairHostPublicHostName = 23,
|
||||
kIceCandidatePairMax
|
||||
};
|
||||
|
||||
// The difference between PeerConnectionEnumCounter and
|
||||
// PeerConnectionMetricsName is that the "EnumCounter" is only counting the
|
||||
// occurrences of events, while "Name" has a value associated with it which is
|
||||
// used to form a histogram.
|
||||
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum KeyExchangeProtocolType {
|
||||
kEnumCounterKeyProtocolDtls,
|
||||
kEnumCounterKeyProtocolSdes,
|
||||
kEnumCounterKeyProtocolDtls = 0,
|
||||
kEnumCounterKeyProtocolSdes = 1,
|
||||
kEnumCounterKeyProtocolMax
|
||||
};
|
||||
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum KeyExchangeProtocolMedia {
|
||||
kEnumCounterKeyProtocolMediaTypeDtlsAudio,
|
||||
kEnumCounterKeyProtocolMediaTypeDtlsVideo,
|
||||
kEnumCounterKeyProtocolMediaTypeDtlsData,
|
||||
kEnumCounterKeyProtocolMediaTypeSdesAudio,
|
||||
kEnumCounterKeyProtocolMediaTypeSdesVideo,
|
||||
kEnumCounterKeyProtocolMediaTypeSdesData,
|
||||
kEnumCounterKeyProtocolMediaTypeDtlsAudio = 0,
|
||||
kEnumCounterKeyProtocolMediaTypeDtlsVideo = 1,
|
||||
kEnumCounterKeyProtocolMediaTypeDtlsData = 2,
|
||||
kEnumCounterKeyProtocolMediaTypeSdesAudio = 3,
|
||||
kEnumCounterKeyProtocolMediaTypeSdesVideo = 4,
|
||||
kEnumCounterKeyProtocolMediaTypeSdesData = 5,
|
||||
kEnumCounterKeyProtocolMediaTypeMax
|
||||
};
|
||||
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum SdpSemanticRequested {
|
||||
kSdpSemanticRequestDefault,
|
||||
kSdpSemanticRequestPlanB,
|
||||
kSdpSemanticRequestUnifiedPlan,
|
||||
kSdpSemanticRequestDefault = 0,
|
||||
kSdpSemanticRequestPlanB = 1,
|
||||
kSdpSemanticRequestUnifiedPlan = 2,
|
||||
kSdpSemanticRequestMax
|
||||
};
|
||||
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum SdpSemanticNegotiated {
|
||||
kSdpSemanticNegotiatedNone,
|
||||
kSdpSemanticNegotiatedPlanB,
|
||||
kSdpSemanticNegotiatedUnifiedPlan,
|
||||
kSdpSemanticNegotiatedMixed,
|
||||
kSdpSemanticNegotiatedNone = 0,
|
||||
kSdpSemanticNegotiatedPlanB = 1,
|
||||
kSdpSemanticNegotiatedUnifiedPlan = 2,
|
||||
kSdpSemanticNegotiatedMixed = 3,
|
||||
kSdpSemanticNegotiatedMax
|
||||
};
|
||||
|
||||
// Metric which records the format of the received SDP for tracking how much the
|
||||
// difference between Plan B and Unified Plan affect users.
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum SdpFormatReceived {
|
||||
// No audio or video tracks. This is worth special casing since it seems to be
|
||||
// the most common scenario (data-channel only).
|
||||
kSdpFormatReceivedNoTracks,
|
||||
kSdpFormatReceivedNoTracks = 0,
|
||||
// No more than one audio and one video track. Should be compatible with both
|
||||
// Plan B and Unified Plan endpoints.
|
||||
kSdpFormatReceivedSimple,
|
||||
kSdpFormatReceivedSimple = 1,
|
||||
// More than one audio track or more than one video track in the Plan B format
|
||||
// (e.g., one audio media section with multiple streams).
|
||||
kSdpFormatReceivedComplexPlanB,
|
||||
kSdpFormatReceivedComplexPlanB = 2,
|
||||
// More than one audio track or more than one video track in the Unified Plan
|
||||
// format (e.g., two audio media sections).
|
||||
kSdpFormatReceivedComplexUnifiedPlan,
|
||||
kSdpFormatReceivedComplexUnifiedPlan = 3,
|
||||
kSdpFormatReceivedMax
|
||||
};
|
||||
|
||||
// Metric for counting the outcome of adding an ICE candidate
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum AddIceCandidateResult {
|
||||
kAddIceCandidateSuccess,
|
||||
kAddIceCandidateFailClosed,
|
||||
kAddIceCandidateFailNoRemoteDescription,
|
||||
kAddIceCandidateFailNullCandidate,
|
||||
kAddIceCandidateFailNotValid,
|
||||
kAddIceCandidateFailNotReady,
|
||||
kAddIceCandidateFailInAddition,
|
||||
kAddIceCandidateFailNotUsable,
|
||||
kAddIceCandidateSuccess = 0,
|
||||
kAddIceCandidateFailClosed = 1,
|
||||
kAddIceCandidateFailNoRemoteDescription = 2,
|
||||
kAddIceCandidateFailNullCandidate = 3,
|
||||
kAddIceCandidateFailNotValid = 4,
|
||||
kAddIceCandidateFailNotReady = 5,
|
||||
kAddIceCandidateFailInAddition = 6,
|
||||
kAddIceCandidateFailNotUsable = 7,
|
||||
kAddIceCandidateMax
|
||||
};
|
||||
|
||||
// Metric for recording which api surface was used to enable simulcast.
|
||||
// These values are persisted to logs. Entries should not be renumbered and
|
||||
// numeric values should never be reused.
|
||||
enum SimulcastApiVersion {
|
||||
kSimulcastApiVersionNone,
|
||||
kSimulcastApiVersionLegacy,
|
||||
kSimulcastApiVersionSpecCompliant,
|
||||
kSimulcastApiVersionMax,
|
||||
kSimulcastApiVersionNone = 0,
|
||||
kSimulcastApiVersionLegacy = 1,
|
||||
kSimulcastApiVersionSpecCompliant = 2,
|
||||
kSimulcastApiVersionMax
|
||||
};
|
||||
|
||||
// When adding new metrics please consider using the style described in
|
||||
// https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md#usage
|
||||
// instead of the legacy enums used above.
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
#endif // API_UMA_METRICS_H_
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user