зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1561923 - Remove expired WebRTC telemetry; r=drno,bwc
Differential Revision: https://phabricator.services.mozilla.com/D37757 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
f94b0ec315
Коммит
97c5db53eb
|
@ -2360,34 +2360,6 @@ RefPtr<MediaManager::StreamPromise> MediaManager::GetUserMedia(
|
|||
docURI->SchemeIs("file", &isFile);
|
||||
bool isApp;
|
||||
docURI->SchemeIs("app", &isApp);
|
||||
// Same localhost check as ServiceWorkers uses
|
||||
// (see IsOriginPotentiallyTrustworthy())
|
||||
bool isLocalhost =
|
||||
NS_SUCCEEDED(rv) && (host.LowerCaseEqualsLiteral("localhost") ||
|
||||
host.LowerCaseEqualsLiteral("127.0.0.1") ||
|
||||
host.LowerCaseEqualsLiteral("::1"));
|
||||
|
||||
// Record telemetry about whether the source of the call was secure, i.e.,
|
||||
// privileged or HTTPS. We may handle other cases
|
||||
if (privileged) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
|
||||
(uint32_t)GetUserMediaSecurityState::Privileged);
|
||||
} else if (isHTTPS) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
|
||||
(uint32_t)GetUserMediaSecurityState::HTTPS);
|
||||
} else if (isFile) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
|
||||
(uint32_t)GetUserMediaSecurityState::File);
|
||||
} else if (isApp) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
|
||||
(uint32_t)GetUserMediaSecurityState::App);
|
||||
} else if (isLocalhost) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
|
||||
(uint32_t)GetUserMediaSecurityState::Localhost);
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN,
|
||||
(uint32_t)GetUserMediaSecurityState::Other);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPrincipal> principal =
|
||||
nsGlobalWindowInner::Cast(aWindow)->GetPrincipal();
|
||||
|
|
|
@ -2117,29 +2117,6 @@ class PeerConnectionObserver {
|
|||
if (pc.iceConnectionState === iceConnectionState) {
|
||||
return;
|
||||
}
|
||||
if (pc.iceConnectionState === "new") {
|
||||
var checking_histogram = Services.telemetry.getHistogramById(
|
||||
"WEBRTC_ICE_CHECKING_RATE"
|
||||
);
|
||||
if (iceConnectionState === "checking") {
|
||||
checking_histogram.add(true);
|
||||
} else if (iceConnectionState === "failed") {
|
||||
checking_histogram.add(false);
|
||||
}
|
||||
} else if (pc.iceConnectionState === "checking") {
|
||||
var success_histogram = Services.telemetry.getHistogramById(
|
||||
"WEBRTC_ICE_SUCCESS_RATE"
|
||||
);
|
||||
if (
|
||||
iceConnectionState === "completed" ||
|
||||
iceConnectionState === "connected"
|
||||
) {
|
||||
success_histogram.add(true);
|
||||
pc._pcTelemetry.recordConnected();
|
||||
} else if (iceConnectionState === "failed") {
|
||||
success_histogram.add(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (iceConnectionState === "failed") {
|
||||
if (!pc._hasStunServer) {
|
||||
|
|
|
@ -44,7 +44,6 @@ class MediaTransportParent : public dom::PMediaTransportParent {
|
|||
mozilla::ipc::IPCResult RecvRemoveTransportsExcept(
|
||||
const StringVector& transportIds);
|
||||
mozilla::ipc::IPCResult RecvStartIceChecks(const bool& isControlling,
|
||||
const bool& isOfferer,
|
||||
const StringVector& iceOptions);
|
||||
mozilla::ipc::IPCResult RecvSendPacket(const string& transportId,
|
||||
const MediaPacket& packet);
|
||||
|
|
|
@ -76,7 +76,6 @@ parent:
|
|||
async RemoveTransportsExcept(StringVector transportIds);
|
||||
|
||||
async StartIceChecks(bool isControlling,
|
||||
bool isOfferer,
|
||||
StringVector iceOptions);
|
||||
|
||||
async SendPacket(string transportId, MediaPacket packet);
|
||||
|
|
|
@ -44,7 +44,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <vector>
|
||||
|
||||
#include "nr_socket_proxy_config.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "mozilla/Unused.h"
|
||||
|
||||
|
@ -266,7 +265,6 @@ NrIceCtx::NrIceCtx(const std::string& name, Policy policy)
|
|||
: connection_state_(ICE_CTX_INIT),
|
||||
gathering_state_(ICE_CTX_GATHER_INIT),
|
||||
name_(name),
|
||||
offerer_(false),
|
||||
ice_controlling_set_(false),
|
||||
streams_(),
|
||||
ctx_(nullptr),
|
||||
|
@ -735,40 +733,6 @@ NrIceStats NrIceCtx::Destroy() {
|
|||
stats.turn_438s = ctx_->stats.turn_438s;
|
||||
}
|
||||
|
||||
if (!ice_start_time_.IsNull()) {
|
||||
TimeDuration time_delta = TimeStamp::Now() - ice_start_time_;
|
||||
ice_start_time_ = TimeStamp(); // null out
|
||||
|
||||
if (offerer_) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_OFFERER_ABORT_TIME,
|
||||
time_delta.ToMilliseconds());
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_ANSWERER_ABORT_TIME,
|
||||
time_delta.ToMilliseconds());
|
||||
}
|
||||
|
||||
unsigned char rate_limit_bit_pattern = 0;
|
||||
if (!mozilla::nr_socket_short_term_violation_time().IsNull() &&
|
||||
mozilla::nr_socket_short_term_violation_time() >= ice_start_time_) {
|
||||
rate_limit_bit_pattern |= 1;
|
||||
}
|
||||
if (!mozilla::nr_socket_long_term_violation_time().IsNull() &&
|
||||
mozilla::nr_socket_long_term_violation_time() >= ice_start_time_) {
|
||||
rate_limit_bit_pattern |= 2;
|
||||
}
|
||||
|
||||
if (connection_state_ == ICE_CTX_FAILED) {
|
||||
Telemetry::Accumulate(
|
||||
Telemetry::WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_FAILURE,
|
||||
rate_limit_bit_pattern);
|
||||
} else if (connection_state_ == ICE_CTX_CONNECTED ||
|
||||
connection_state_ == ICE_CTX_COMPLETED) {
|
||||
Telemetry::Accumulate(
|
||||
Telemetry::WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_SUCCESS,
|
||||
rate_limit_bit_pattern);
|
||||
}
|
||||
}
|
||||
|
||||
if (peer_) {
|
||||
nr_ice_peer_ctx_destroy(&peer_);
|
||||
}
|
||||
|
@ -899,7 +863,6 @@ nsresult NrIceCtx::StartGathering(bool default_route_only, bool proxy_only) {
|
|||
|
||||
SetCtxFlags(default_route_only, proxy_only);
|
||||
|
||||
TimeStamp start = TimeStamp::Now();
|
||||
// This might start gathering for the first time, or again after
|
||||
// renegotiation, or might do nothing at all if gathering has already
|
||||
// finished.
|
||||
|
@ -907,18 +870,11 @@ nsresult NrIceCtx::StartGathering(bool default_route_only, bool proxy_only) {
|
|||
|
||||
if (!r) {
|
||||
SetGatheringState(ICE_CTX_GATHER_COMPLETE);
|
||||
Telemetry::AccumulateTimeDelta(
|
||||
Telemetry::WEBRTC_ICE_NR_ICE_GATHER_TIME_IMMEDIATE_SUCCESS, start);
|
||||
} else if (r != R_WOULDBLOCK) {
|
||||
MOZ_MTLOG(ML_ERROR, "ICE FAILED: Couldn't gather ICE candidates for '"
|
||||
<< name_ << "', error=" << r);
|
||||
SetConnectionState(ICE_CTX_FAILED);
|
||||
Telemetry::AccumulateTimeDelta(
|
||||
Telemetry::WEBRTC_ICE_NR_ICE_GATHER_TIME_IMMEDIATE_FAILURE, start);
|
||||
return NS_ERROR_FAILURE;
|
||||
} else {
|
||||
Telemetry::AccumulateTimeDelta(Telemetry::WEBRTC_ICE_NR_ICE_GATHER_TIME,
|
||||
start);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -983,16 +939,13 @@ bool NrIceCtx::HasStreamsToConnect() const {
|
|||
return false;
|
||||
}
|
||||
|
||||
nsresult NrIceCtx::StartChecks(bool offerer) {
|
||||
nsresult NrIceCtx::StartChecks() {
|
||||
int r;
|
||||
if (!HasStreamsToConnect()) {
|
||||
// Nothing to do
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
offerer_ = offerer;
|
||||
ice_start_time_ = TimeStamp::Now();
|
||||
|
||||
r = nr_ice_peer_ctx_pair_candidates(peer_);
|
||||
if (r) {
|
||||
MOZ_MTLOG(ML_ERROR, "ICE FAILED: Couldn't pair candidates on " << name_);
|
||||
|
@ -1050,44 +1003,6 @@ void NrIceCtx::UpdateNetworkState(bool online) {
|
|||
void NrIceCtx::SetConnectionState(ConnectionState state) {
|
||||
if (state == connection_state_) return;
|
||||
|
||||
if (!ice_start_time_.IsNull() && (state > ICE_CTX_CHECKING)) {
|
||||
TimeDuration time_delta = TimeStamp::Now() - ice_start_time_;
|
||||
ice_start_time_ = TimeStamp();
|
||||
|
||||
switch (state) {
|
||||
case ICE_CTX_INIT:
|
||||
case ICE_CTX_CHECKING:
|
||||
MOZ_CRASH();
|
||||
break;
|
||||
case ICE_CTX_CONNECTED:
|
||||
case ICE_CTX_COMPLETED:
|
||||
if (offerer_) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_OFFERER_SUCCESS_TIME,
|
||||
time_delta.ToMilliseconds());
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_ANSWERER_SUCCESS_TIME,
|
||||
time_delta.ToMilliseconds());
|
||||
}
|
||||
break;
|
||||
case ICE_CTX_FAILED:
|
||||
if (offerer_) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_OFFERER_FAILURE_TIME,
|
||||
time_delta.ToMilliseconds());
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_ANSWERER_FAILURE_TIME,
|
||||
time_delta.ToMilliseconds());
|
||||
}
|
||||
break;
|
||||
case ICE_CTX_DISCONNECTED:
|
||||
// We get this every time an ICE disconnect gets reported.
|
||||
// Do we want a Telemetry probe counting how often this happens?
|
||||
break;
|
||||
case ICE_CTX_CLOSED:
|
||||
// This doesn't seem to be used...
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MOZ_MTLOG(ML_INFO, "NrIceCtx(" << name_ << "): state " << connection_state_
|
||||
<< "->" << state);
|
||||
connection_state_ = state;
|
||||
|
|
|
@ -60,7 +60,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include "prnetdb.h"
|
||||
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#include "mozilla/UniquePtr.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "nsIEventTarget.h"
|
||||
|
@ -89,11 +88,6 @@ namespace mozilla {
|
|||
|
||||
class NrSocketProxyConfig;
|
||||
|
||||
// Timestamps set whenever a packet is dropped due to global rate limiting
|
||||
// (see nr_socket_prsock.cpp)
|
||||
TimeStamp nr_socket_short_term_violation_time();
|
||||
TimeStamp nr_socket_long_term_violation_time();
|
||||
|
||||
class NrIceMediaStream;
|
||||
|
||||
extern const char kNrIceTransportUdp[];
|
||||
|
@ -318,7 +312,7 @@ class NrIceCtx {
|
|||
nsresult StartGathering(bool default_route_only, bool proxy_only);
|
||||
|
||||
// Start checking
|
||||
nsresult StartChecks(bool offerer);
|
||||
nsresult StartChecks();
|
||||
|
||||
// Notify that the network has gone online/offline
|
||||
void UpdateNetworkState(bool online);
|
||||
|
@ -383,8 +377,6 @@ class NrIceCtx {
|
|||
ConnectionState connection_state_;
|
||||
GatheringState gathering_state_;
|
||||
const std::string name_;
|
||||
bool offerer_;
|
||||
TimeStamp ice_start_time_;
|
||||
bool ice_controlling_set_;
|
||||
std::map<std::string, RefPtr<NrIceMediaStream>> streams_;
|
||||
nr_ice_ctx* ctx_;
|
||||
|
|
|
@ -757,7 +757,7 @@ class IceTestPeer : public sigslot::has_slots<> {
|
|||
ice_ctx_->SetControlling(offerer_ ? NrIceCtx::ICE_CONTROLLING
|
||||
: NrIceCtx::ICE_CONTROLLED);
|
||||
// Now start checks
|
||||
res = ice_ctx_->StartChecks(offerer_);
|
||||
res = ice_ctx_->StartChecks();
|
||||
ASSERT_TRUE(NS_SUCCEEDED(res));
|
||||
}
|
||||
}
|
||||
|
@ -952,7 +952,7 @@ class IceTestPeer : public sigslot::has_slots<> {
|
|||
NS_DISPATCH_SYNC);
|
||||
// Now start checks
|
||||
test_utils_->sts_target()->Dispatch(
|
||||
WrapRunnableRet(&res, ice_ctx_, &NrIceCtx::StartChecks, offerer_),
|
||||
WrapRunnableRet(&res, ice_ctx_, &NrIceCtx::StartChecks),
|
||||
NS_DISPATCH_SYNC);
|
||||
ASSERT_TRUE(NS_SUCCEEDED(res));
|
||||
}
|
||||
|
|
|
@ -676,8 +676,7 @@ class TransportTestPeer : public sigslot::has_slots<> {
|
|||
|
||||
// Start checks on the other peer.
|
||||
test_utils_->sts_target()->Dispatch(
|
||||
WrapRunnableRet(&res, peer_->ice_ctx_, &NrIceCtx::StartChecks,
|
||||
offerer_),
|
||||
WrapRunnableRet(&res, peer_->ice_ctx_, &NrIceCtx::StartChecks),
|
||||
NS_DISPATCH_SYNC);
|
||||
ASSERT_TRUE(NS_SUCCEEDED(res));
|
||||
}
|
||||
|
|
|
@ -1057,15 +1057,11 @@ void TransportLayerDtls::SetState(State state, const char* file,
|
|||
MOZ_ASSERT(false);
|
||||
break;
|
||||
case TS_CONNECTING:
|
||||
handshake_started_ = TimeStamp::Now();
|
||||
break;
|
||||
case TS_OPEN:
|
||||
case TS_CLOSED:
|
||||
case TS_ERROR:
|
||||
timer_->Cancel();
|
||||
if (state_ == TS_CONNECTING) {
|
||||
RecordHandshakeCompletionTelemetry(state);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1458,41 +1454,6 @@ void TransportLayerDtls::TimerCallback(nsITimer* timer, void* arg) {
|
|||
dtls->Handshake();
|
||||
}
|
||||
|
||||
void TransportLayerDtls::RecordHandshakeCompletionTelemetry(
|
||||
TransportLayer::State endState) {
|
||||
int32_t delta = (TimeStamp::Now() - handshake_started_).ToMilliseconds();
|
||||
|
||||
switch (endState) {
|
||||
case TransportLayer::State::TS_OPEN:
|
||||
if (role_ == TransportLayerDtls::CLIENT) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_DTLS_CLIENT_SUCCESS_TIME,
|
||||
delta);
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_DTLS_SERVER_SUCCESS_TIME,
|
||||
delta);
|
||||
}
|
||||
return;
|
||||
case TransportLayer::State::TS_ERROR:
|
||||
if (role_ == TransportLayerDtls::CLIENT) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_DTLS_CLIENT_FAILURE_TIME,
|
||||
delta);
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_DTLS_SERVER_FAILURE_TIME,
|
||||
delta);
|
||||
}
|
||||
return;
|
||||
case TransportLayer::State::TS_CLOSED:
|
||||
if (role_ == TransportLayerDtls::CLIENT) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_DTLS_CLIENT_ABORT_TIME, delta);
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_DTLS_SERVER_ABORT_TIME, delta);
|
||||
}
|
||||
return;
|
||||
default:
|
||||
MOZ_ASSERT(false);
|
||||
}
|
||||
}
|
||||
|
||||
void TransportLayerDtls::RecordTlsTelemetry() {
|
||||
MOZ_ASSERT(state_ == TS_OPEN);
|
||||
SSLChannelInfo info;
|
||||
|
|
|
@ -168,7 +168,6 @@ class TransportLayerDtls final : public TransportLayer {
|
|||
nsCOMPtr<nsITimer> timer_ = nullptr;
|
||||
bool auth_hook_called_ = false;
|
||||
bool cert_ok_ = false;
|
||||
TimeStamp handshake_started_;
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -182,7 +182,7 @@ class LoopbackTransport : public MediaTransportHandler {
|
|||
void RemoveTransportsExcept(
|
||||
const std::set<std::string>& aTransportIds) override {}
|
||||
|
||||
void StartIceChecks(bool aIsControlling, bool aIsOfferer,
|
||||
void StartIceChecks(bool aIsControlling,
|
||||
const std::vector<std::string>& aIceOptions) override {}
|
||||
|
||||
void AddIceCandidate(const std::string& aTransportId,
|
||||
|
|
|
@ -1050,11 +1050,6 @@ nsresult JsepSessionImpl::MakeNegotiatedTransceiver(
|
|||
MOZ_MTLOG(ML_DEBUG, "[" << mName << "]: RTCP-MUX is off");
|
||||
}
|
||||
|
||||
if (local.GetMediaType() != SdpMediaSection::kApplication) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_RTCP_MUX,
|
||||
transceiver->mTransport.mComponents == 1);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ class MediaTransportHandlerSTS : public MediaTransportHandler,
|
|||
void RemoveTransportsExcept(
|
||||
const std::set<std::string>& aTransportIds) override;
|
||||
|
||||
void StartIceChecks(bool aIsControlling, bool aIsOfferer,
|
||||
void StartIceChecks(bool aIsControlling,
|
||||
const std::vector<std::string>& aIceOptions) override;
|
||||
|
||||
void AddIceCandidate(const std::string& aTransportId,
|
||||
|
@ -689,8 +689,7 @@ void MediaTransportHandlerSTS::StartIceGathering(
|
|||
}
|
||||
|
||||
void MediaTransportHandlerSTS::StartIceChecks(
|
||||
bool aIsControlling, bool aIsOfferer,
|
||||
const std::vector<std::string>& aIceOptions) {
|
||||
bool aIsControlling, const std::vector<std::string>& aIceOptions) {
|
||||
mInitPromise->Then(
|
||||
mStsThread, __func__,
|
||||
[=, self = RefPtr<MediaTransportHandlerSTS>(this)]() {
|
||||
|
@ -709,7 +708,7 @@ void MediaTransportHandlerSTS::StartIceChecks(
|
|||
return;
|
||||
}
|
||||
|
||||
rv = mIceCtx->StartChecks(aIsOfferer);
|
||||
rv = mIceCtx->StartChecks();
|
||||
if (NS_FAILED(rv)) {
|
||||
CSFLogError(LOGTAG, "%s: couldn't start checks", __FUNCTION__);
|
||||
return;
|
||||
|
|
|
@ -101,7 +101,7 @@ class MediaTransportHandler {
|
|||
virtual void RemoveTransportsExcept(
|
||||
const std::set<std::string>& aTransportIds) = 0;
|
||||
|
||||
virtual void StartIceChecks(bool aIsControlling, bool aIsOfferer,
|
||||
virtual void StartIceChecks(bool aIsControlling,
|
||||
const std::vector<std::string>& aIceOptions) = 0;
|
||||
|
||||
virtual void SendPacket(const std::string& aTransportId,
|
||||
|
|
|
@ -249,13 +249,12 @@ void MediaTransportHandlerIPC::RemoveTransportsExcept(
|
|||
}
|
||||
|
||||
void MediaTransportHandlerIPC::StartIceChecks(
|
||||
bool aIsControlling, bool aIsOfferer,
|
||||
const std::vector<std::string>& aIceOptions) {
|
||||
bool aIsControlling, const std::vector<std::string>& aIceOptions) {
|
||||
mInitPromise->Then(
|
||||
mCallbackThread, __func__,
|
||||
[=, self = RefPtr<MediaTransportHandlerIPC>(this)](bool /*dummy*/) {
|
||||
if (mChild) {
|
||||
mChild->SendStartIceChecks(aIsControlling, aIsOfferer, aIceOptions);
|
||||
mChild->SendStartIceChecks(aIsControlling, aIceOptions);
|
||||
}
|
||||
},
|
||||
[](const nsCString& aError) {});
|
||||
|
|
|
@ -59,7 +59,7 @@ class MediaTransportHandlerIPC : public MediaTransportHandler {
|
|||
void RemoveTransportsExcept(
|
||||
const std::set<std::string>& aTransportIds) override;
|
||||
|
||||
void StartIceChecks(bool aIsControlling, bool aIsOfferer,
|
||||
void StartIceChecks(bool aIsControlling,
|
||||
const std::vector<std::string>& aIceOptions) override;
|
||||
|
||||
void SendPacket(const std::string& aTransportId,
|
||||
|
|
|
@ -184,9 +184,8 @@ mozilla::ipc::IPCResult MediaTransportParent::RecvRemoveTransportsExcept(
|
|||
}
|
||||
|
||||
mozilla::ipc::IPCResult MediaTransportParent::RecvStartIceChecks(
|
||||
const bool& isControlling, const bool& isOfferer,
|
||||
const StringVector& iceOptions) {
|
||||
mImpl->mHandler->StartIceChecks(isControlling, isOfferer, iceOptions);
|
||||
const bool& isControlling, const StringVector& iceOptions) {
|
||||
mImpl->mHandler->StartIceChecks(isControlling, iceOptions);
|
||||
return ipc::IPCResult::Ok();
|
||||
}
|
||||
|
||||
|
|
|
@ -308,7 +308,6 @@ PeerConnectionImpl::PeerConnectionImpl(const GlobalObject* aGlobal)
|
|||
mIceRestartCount(0),
|
||||
mIceRollbackCount(0),
|
||||
mHaveConfiguredCodecs(false),
|
||||
mAddCandidateErrorCount(0),
|
||||
mTrickle(true) // TODO(ekr@rtfm.com): Use pref
|
||||
,
|
||||
mPrivateWindow(false),
|
||||
|
@ -1508,20 +1507,6 @@ PeerConnectionImpl::AddIceCandidate(
|
|||
|
||||
CSFLogDebug(LOGTAG, "AddIceCandidate: %s %s", aCandidate, aUfrag);
|
||||
|
||||
// When remote candidates are added before our ICE ctx is up and running
|
||||
// (the transition to New is async through STS, so this is not impossible),
|
||||
// we won't record them as trickle candidates. Is this what we want?
|
||||
if (!mIceStartTime.IsNull()) {
|
||||
TimeDuration timeDelta = TimeStamp::Now() - mIceStartTime;
|
||||
if (mIceConnectionState == RTCIceConnectionState::Failed) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_LATE_TRICKLE_ARRIVAL_TIME,
|
||||
timeDelta.ToMilliseconds());
|
||||
} else {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_ON_TIME_TRICKLE_ARRIVAL_TIME,
|
||||
timeDelta.ToMilliseconds());
|
||||
}
|
||||
}
|
||||
|
||||
std::string transportId;
|
||||
Maybe<unsigned short> level;
|
||||
if (!aLevel.IsNull()) {
|
||||
|
@ -1540,7 +1525,6 @@ PeerConnectionImpl::AddIceCandidate(
|
|||
}
|
||||
mPCObserver->OnAddIceCandidateSuccess(rv);
|
||||
} else {
|
||||
++mAddCandidateErrorCount;
|
||||
std::string errorString = mJsepSession->GetLastError();
|
||||
|
||||
CSFLogError(LOGTAG,
|
||||
|
@ -2412,20 +2396,6 @@ void PeerConnectionImpl::SendLocalIceCandidateToContent(
|
|||
ObString(ufrag.c_str()), rv);
|
||||
}
|
||||
|
||||
static bool isDone(RTCIceConnectionState state) {
|
||||
return state != RTCIceConnectionState::Checking &&
|
||||
state != RTCIceConnectionState::New;
|
||||
}
|
||||
|
||||
static bool isSucceeded(RTCIceConnectionState state) {
|
||||
return state == RTCIceConnectionState::Connected ||
|
||||
state == RTCIceConnectionState::Completed;
|
||||
}
|
||||
|
||||
static bool isFailed(RTCIceConnectionState state) {
|
||||
return state == RTCIceConnectionState::Failed;
|
||||
}
|
||||
|
||||
void PeerConnectionImpl::IceConnectionStateChange(
|
||||
dom::RTCIceConnectionState domState) {
|
||||
PC_AUTO_ENTER_API_CALL_VOID_RETURN(false);
|
||||
|
@ -2438,18 +2408,6 @@ void PeerConnectionImpl::IceConnectionStateChange(
|
|||
return;
|
||||
}
|
||||
|
||||
if (!isDone(mIceConnectionState) && isDone(domState)) {
|
||||
if (isSucceeded(domState)) {
|
||||
Telemetry::Accumulate(
|
||||
Telemetry::WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_SUCCESS,
|
||||
mAddCandidateErrorCount);
|
||||
} else if (isFailed(domState)) {
|
||||
Telemetry::Accumulate(
|
||||
Telemetry::WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_FAILURE,
|
||||
mAddCandidateErrorCount);
|
||||
}
|
||||
}
|
||||
|
||||
mIceConnectionState = domState;
|
||||
|
||||
// Uncount this connection as active on the inner window upon close.
|
||||
|
|
|
@ -629,8 +629,6 @@ class PeerConnectionImpl final
|
|||
|
||||
bool mHaveConfiguredCodecs;
|
||||
|
||||
unsigned int mAddCandidateErrorCount;
|
||||
|
||||
bool mTrickle;
|
||||
|
||||
bool mPrivateWindow;
|
||||
|
|
|
@ -272,9 +272,9 @@ void PeerConnectionMedia::StartIceChecks(const JsepSession& aSession) {
|
|||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIRunnable> runnable(WrapRunnable(
|
||||
mTransportHandler, &MediaTransportHandler::StartIceChecks,
|
||||
aSession.IsIceControlling(), aSession.IsOfferer(), attributes));
|
||||
nsCOMPtr<nsIRunnable> runnable(
|
||||
WrapRunnable(mTransportHandler, &MediaTransportHandler::StartIceChecks,
|
||||
aSession.IsIceControlling(), attributes));
|
||||
|
||||
PerformOrEnqueueIceCtxOperation(runnable);
|
||||
}
|
||||
|
|
|
@ -1041,9 +1041,6 @@ static void StoreLongTermICEStatisticsImpl_m(nsresult result,
|
|||
|
||||
void WebrtcGlobalInformation::StoreLongTermICEStatistics(
|
||||
PeerConnectionImpl& aPc) {
|
||||
Telemetry::Accumulate(Telemetry::WEBRTC_ICE_FINAL_CONNECTION_STATE,
|
||||
static_cast<uint32_t>(aPc.IceConnectionState()));
|
||||
|
||||
if (aPc.IceConnectionState() == RTCIceConnectionState::New) {
|
||||
// ICE has not started; we won't have any remote candidates, so recording
|
||||
// statistics on gathered candidates is pointless.
|
||||
|
|
|
@ -9929,72 +9929,6 @@
|
|||
"n_values": 17,
|
||||
"description": "SPS.max_num_ref_frames indicates how deep the H.264 queue is going to be, and as such the minimum memory usage by the decoder, from 0 to 16. 17 indicates an invalid value."
|
||||
},
|
||||
"WEBRTC_DTLS_CLIENT_SUCCESS_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-dtls-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1336182],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for a client DTLS handshake to complete, given that DTLS succeeded."
|
||||
},
|
||||
"WEBRTC_DTLS_CLIENT_ABORT_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-dtls-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1336182],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for a client DTLS handshake to be aborted due to some external factor (eg; PeerConnection torn down)."
|
||||
},
|
||||
"WEBRTC_DTLS_CLIENT_FAILURE_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-dtls-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1336182],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for a client DTLS handshake to complete, given that it failed."
|
||||
},
|
||||
"WEBRTC_DTLS_SERVER_SUCCESS_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-dtls-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1336182],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for a server DTLS handshake to complete, given that DTLS succeeded."
|
||||
},
|
||||
"WEBRTC_DTLS_SERVER_ABORT_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-dtls-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1336182],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for a server DTLS handshake to be aborted due to some external factor (eg; PeerConnection torn down)."
|
||||
},
|
||||
"WEBRTC_DTLS_SERVER_FAILURE_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-dtls-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1336182],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for a server DTLS handshake to complete, given that it failed."
|
||||
},
|
||||
"WEBRTC_DTLS_CIPHER": {
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
|
@ -10025,188 +9959,6 @@
|
|||
"labels": ["Unknown", "Dtls_version_1_0", "Dtls_version_1_2", "Dtls_version_1_3"],
|
||||
"description": "The DTLS protocol version (as label) negotiated for a RTCPeerConnection."
|
||||
},
|
||||
"WEBRTC_ICE_FINAL_CONNECTION_STATE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "enumerated",
|
||||
"n_values": 7,
|
||||
"description": "The ICE connection state when the PC was closed"
|
||||
},
|
||||
"WEBRTC_ICE_ON_TIME_TRICKLE_ARRIVAL_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) that a trickle candidate took to arrive after the start of ICE, given that it arrived when ICE was not in a failure state (ie; a candidate that we could do something with, hence 'on time')"
|
||||
},
|
||||
"WEBRTC_ICE_LATE_TRICKLE_ARRIVAL_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) that a trickle candidate took to arrive after the start of ICE, given that it arrived after ICE failed."
|
||||
},
|
||||
"WEBRTC_ICE_OFFERER_SUCCESS_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1342523],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for the offerer to complete ICE, given that ICE succeeded."
|
||||
},
|
||||
"WEBRTC_ICE_OFFERER_ABORT_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1342523],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for the offerer to abort ICE due to some external factor (eg; PeerConnection torn down). Does not count cases where StartChecks() was never called."
|
||||
},
|
||||
"WEBRTC_ICE_OFFERER_FAILURE_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1342523],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for the offerer to complete ICE, given that it failed. Does not count cases where StartChecks() was never called."
|
||||
},
|
||||
"WEBRTC_ICE_ANSWERER_SUCCESS_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1342523],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for the answerer to complete ICE, given that ICE succeeded."
|
||||
},
|
||||
"WEBRTC_ICE_ANSWERER_ABORT_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1342523],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for the answerer to abort ICE due to some external factor (eg; PeerConnection torn down). Does not count cases where StartChecks() was never called."
|
||||
},
|
||||
"WEBRTC_ICE_ANSWERER_FAILURE_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com"],
|
||||
"bug_numbers": [1342523],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for the answerer to complete ICE, given that it failed. Does not count cases where StartChecks() was never called."
|
||||
},
|
||||
"WEBRTC_ICE_NR_ICE_GATHER_TIME": {
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com", "bcampen@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took to call nr_ice_gather, given that gathering did not succeed/fail immediately during the call."
|
||||
},
|
||||
"WEBRTC_ICE_NR_ICE_GATHER_TIME_IMMEDIATE_FAILURE": {
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com", "bcampen@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took to call nr_ice_gather, given that gathering failed immediately during the call."
|
||||
},
|
||||
"WEBRTC_ICE_NR_ICE_GATHER_TIME_IMMEDIATE_SUCCESS": {
|
||||
"record_in_processes": ["content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com", "bcampen@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took to call nr_ice_gather, given that gathering succeeded immediately during the call."
|
||||
},
|
||||
"WEBRTC_ICE_SUCCESS_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for ICE to complete, given that ICE succeeded."
|
||||
},
|
||||
"WEBRTC_ICE_FAILURE_TIME": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "exponential",
|
||||
"high": 10000,
|
||||
"n_buckets": 20,
|
||||
"description": "The length of time (in milliseconds) it took for ICE to complete, given that it failed."
|
||||
},
|
||||
"WEBRTC_ICE_SUCCESS_RATE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "boolean",
|
||||
"description": "The number of failed ICE Connections (0) vs. number of successful ICE connections (1)."
|
||||
},
|
||||
"WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_SUCCESS": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "enumerated",
|
||||
"n_values": 4,
|
||||
"description": "For each successful PeerConnection, bit 0 indicates the short-duration rate limit was reached, bit 1 indicates the long-duration rate limit was reached"
|
||||
},
|
||||
"WEBRTC_STUN_RATE_LIMIT_EXCEEDED_BY_TYPE_GIVEN_FAILURE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "enumerated",
|
||||
"n_values": 4,
|
||||
"description": "For each failed PeerConnection, bit 0 indicates the short-duration rate limit was reached, bit 1 indicates the long-duration rate limit was reached"
|
||||
},
|
||||
"WEBRTC_AVSYNC_WHEN_AUDIO_LAGS_VIDEO_MS": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
|
@ -10526,38 +10278,6 @@
|
|||
"kind": "count",
|
||||
"description": "The number of calls made during a session."
|
||||
},
|
||||
"WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_SUCCESS": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "linear",
|
||||
"high": 30,
|
||||
"n_buckets": 29,
|
||||
"description": "The number of times AddIceCandidate failed on a given PeerConnection, given that ICE succeeded."
|
||||
},
|
||||
"WEBRTC_ICE_ADD_CANDIDATE_ERRORS_GIVEN_FAILURE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "linear",
|
||||
"high": 30,
|
||||
"n_buckets": 29,
|
||||
"description": "The number of times AddIceCandidate failed on a given PeerConnection, given that ICE failed."
|
||||
},
|
||||
"WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["seceng-telemetry@mozilla.com"],
|
||||
"expires_in_version": "60",
|
||||
"kind": "enumerated",
|
||||
"n_values": 15,
|
||||
"description": "Origins for getUserMedia calls (0=other, 1=HTTPS, 2=file, 3=app, 4=localhost, 5=loop, 6=privileged)",
|
||||
"releaseChannelCollection": "opt-out"
|
||||
},
|
||||
"WEBRTC_GET_USER_MEDIA_TYPE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
|
@ -10685,15 +10405,6 @@
|
|||
"kind": "boolean",
|
||||
"description": "Was DataChannels negotiated"
|
||||
},
|
||||
"WEBRTC_RTCP_MUX": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"bug_numbers": [1402221],
|
||||
"alert_emails": ["webrtc-telemetry-alerts@mozilla.com", "nohlmeier@mozilla.com"],
|
||||
"expires_in_version": "62",
|
||||
"kind": "boolean",
|
||||
"description": "Was RTCP-MUX negotiated for a track"
|
||||
},
|
||||
"WEBRTC_CALL_TYPE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
|
@ -14197,15 +13908,6 @@
|
|||
"n_values": 50,
|
||||
"description": "Compression ratio of WOFF2 data (%)"
|
||||
},
|
||||
"WEBRTC_ICE_CHECKING_RATE": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
"alert_emails": ["webrtc-ice-telemetry-alerts@mozilla.com, nohlmeier@mozilla.com"],
|
||||
"bug_numbers": [1188391,1319268],
|
||||
"expires_in_version": "62",
|
||||
"kind": "boolean",
|
||||
"description": "The number of ICE connections which immediately failed (0) vs. reached at least checking state (1)."
|
||||
},
|
||||
"ALERTS_SERVICE_DND_ENABLED": {
|
||||
"record_in_processes": ["main", "content"],
|
||||
"products": ["firefox", "fennec", "geckoview"],
|
||||
|
|
|
@ -1130,7 +1130,6 @@
|
|||
"WEBRTC_CALL_DURATION",
|
||||
"WEBRTC_CALL_TYPE",
|
||||
"WEBRTC_DATACHANNEL_NEGOTIATED",
|
||||
"WEBRTC_GET_USER_MEDIA_SECURE_ORIGIN",
|
||||
"WEBRTC_GET_USER_MEDIA_TYPE",
|
||||
"WEBRTC_LOAD_STATE_NORMAL",
|
||||
"WEBRTC_LOAD_STATE_NORMAL_SHORT",
|
||||
|
|
Загрузка…
Ссылка в новой задаче