| /* |
| * Copyright 2014 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| // 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_ |
| |
| namespace webrtc { |
| |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| enum PeerConnectionAddressFamilyCounter { |
| 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 = 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 |
| }; |
| |
| // The IceCandidatePairType has the format of |
| // <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 = 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 = 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 = 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 = 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 = 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 = 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 = 0, |
| // No more than one audio and one video track. Should be compatible with both |
| // Plan B and Unified Plan endpoints. |
| 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 = 2, |
| // More than one audio track or more than one video track in the Unified Plan |
| // format (e.g., two audio media sections). |
| 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 = 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 = 0, |
| kSimulcastApiVersionLegacy = 1, |
| kSimulcastApiVersionSpecCompliant = 2, |
| kSimulcastApiVersionMax |
| }; |
| |
| // Metrics for reporting usage of BUNDLE. |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| enum BundleUsage { |
| // There are no m-lines in the SDP, only a session description. |
| kBundleUsageEmpty = 0, |
| // Only a data channel is negotiated but BUNDLE is not negotiated. |
| kBundleUsageNoBundleDatachannelOnly = 1, |
| // BUNDLE is not negotiated and there is at most one m-line per media type, |
| kBundleUsageNoBundleSimple = 2, |
| // BUNDLE is not negotiated and there are multiple m-lines per media type, |
| kBundleUsageNoBundleComplex = 3, |
| // Only a data channel is negotiated and BUNDLE is negotiated. |
| kBundleUsageBundleDatachannelOnly = 4, |
| // BUNDLE is negotiated but there is at most one m-line per media type, |
| kBundleUsageBundleSimple = 5, |
| // BUNDLE is negotiated and there are multiple m-lines per media type, |
| kBundleUsageBundleComplex = 6, |
| // Legacy plan-b metrics. |
| kBundleUsageNoBundlePlanB = 7, |
| kBundleUsageBundlePlanB = 8, |
| kBundleUsageMax |
| }; |
| |
| // Metrics for reporting configured BUNDLE policy, mapping directly to |
| // https://w3c.github.io/webrtc-pc/#rtcbundlepolicy-enum |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| enum BundlePolicyUsage { |
| kBundlePolicyUsageBalanced = 0, |
| kBundlePolicyUsageMaxBundle = 1, |
| kBundlePolicyUsageMaxCompat = 2, |
| kBundlePolicyUsageMax |
| }; |
| |
| // Metrics for provisional answers as described in |
| // https://datatracker.ietf.org/doc/html/rfc8829#section-4.1.10.1 |
| // These values are persisted to logs. Entries should not be renumbered and |
| // numeric values should never be reused. |
| enum ProvisionalAnswerUsage { |
| kProvisionalAnswerNotUsed = 0, |
| kProvisionalAnswerLocal = 1, |
| kProvisionalAnswerRemote = 2, |
| kProvisionalAnswerMax |
| }; |
| |
| // 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_ |