212 lines
8.2 KiB
C++
212 lines
8.2 KiB
C++
/*
|
|
* 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
|
|
};
|
|
|
|
// 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_
|