diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/libwebrtc/webrtc/api/umametrics.h | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/webrtc/api/umametrics.h')
-rw-r--r-- | third_party/libwebrtc/webrtc/api/umametrics.h | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/third_party/libwebrtc/webrtc/api/umametrics.h b/third_party/libwebrtc/webrtc/api/umametrics.h new file mode 100644 index 0000000000..c512598523 --- /dev/null +++ b/third_party/libwebrtc/webrtc/api/umametrics.h @@ -0,0 +1,137 @@ +/* + * 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 IPv4/IPv6 metrics. + +#ifndef API_UMAMETRICS_H_ +#define API_UMAMETRICS_H_ + +#include "rtc_base/refcount.h" + +namespace webrtc { + +// Used to specify which enum counter type we're incrementing in +// MetricsObserverInterface::IncrementEnumCounter. +enum PeerConnectionEnumCounterType { + kEnumCounterAddressFamily, + // For the next 2 counters, we track them separately based on the "first hop" + // protocol used by the local candidate. "First hop" means the local candidate + // type in the case of non-TURN candidates, and the protocol used to connect + // to the TURN server in the case of TURN candidates. + kEnumCounterIceCandidatePairTypeUdp, + kEnumCounterIceCandidatePairTypeTcp, + + kEnumCounterAudioSrtpCipher, + kEnumCounterAudioSslCipher, + kEnumCounterVideoSrtpCipher, + kEnumCounterVideoSslCipher, + kEnumCounterDataSrtpCipher, + kEnumCounterDataSslCipher, + kEnumCounterDtlsHandshakeError, + kEnumCounterIceRegathering, + kEnumCounterIceRestart, + kPeerConnectionEnumCounterMax +}; + +// 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. +enum PeerConnectionAddressFamilyCounter { + kPeerConnection_IPv4, + kPeerConnection_IPv6, + kBestConnections_IPv4, + kBestConnections_IPv6, + kPeerConnectionAddressFamilyCounter_Max, +}; + +// TODO(guoweis): Keep previous name here until all references are renamed. +#define kBoundary kPeerConnectionAddressFamilyCounter_Max + +// TODO(guoweis): Keep previous name here until all references are renamed. +typedef PeerConnectionAddressFamilyCounter PeerConnectionUMAMetricsCounter; + +// This enum defines types for UMA samples, which will have a range. +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. + kPeerConnectionMetricsName_Max +}; + +// TODO(guoweis): Keep previous name here until all references are renamed. +typedef PeerConnectionMetricsName PeerConnectionUMAMetricsName; + +// 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. +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, + + // The following 4 types tell whether local and remote hosts have private or + // public IP addresses. + kIceCandidatePairHostPrivateHostPrivate, + kIceCandidatePairHostPrivateHostPublic, + kIceCandidatePairHostPublicHostPrivate, + kIceCandidatePairHostPublicHostPublic, + kIceCandidatePairMax +}; + +class MetricsObserverInterface : public rtc::RefCountInterface { + public: + // |type| is the type of the enum counter to be incremented. |counter| + // is the particular counter in that type. |counter_max| is the next sequence + // number after the highest counter. + virtual void IncrementEnumCounter(PeerConnectionEnumCounterType type, + int counter, + int counter_max) {} + + // This is used to handle sparse counters like SSL cipher suites. + // TODO(guoweis): Remove the implementation once the dependency's interface + // definition is updated. + virtual void IncrementSparseEnumCounter(PeerConnectionEnumCounterType type, + int counter); + + virtual void AddHistogramSample(PeerConnectionMetricsName type, + int value) = 0; +}; + +typedef MetricsObserverInterface UMAObserver; + +} // namespace webrtc + +#endif // API_UMAMETRICS_H_ |