Index: content/renderer/media/rtc_peer_connection_handler.cc |
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc |
index 2de508789f2b1050a5f9e62ffef495cf89cd1de8..b5ce46b5a466b65283a4b8d49d3208a3bee45142 100644 |
--- a/content/renderer/media/rtc_peer_connection_handler.cc |
+++ b/content/renderer/media/rtc_peer_connection_handler.cc |
@@ -505,13 +505,26 @@ class PeerConnectionUMAObserver : public webrtc::UMAObserver { |
public: |
PeerConnectionUMAObserver() {} |
~PeerConnectionUMAObserver() override {} |
- |
- void IncrementCounter( |
- webrtc::PeerConnectionUMAMetricsCounter counter) override { |
- // Runs on libjingle's signaling thread. |
- UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.IPMetrics", |
- counter, |
- webrtc::kBoundary); |
+ void IncrementEnumCounter(webrtc::PeerConnectionEnumCounterType counter_type, |
+ int counter, |
+ int counter_max) override { |
+ switch (counter_type) { |
+ case webrtc::kEnumCounterAddressFamily: |
+ UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.IPMetrics", counter, |
+ counter_max); |
+ break; |
+ case webrtc::kEnumCounterIceCandidatePairTypeUdp: |
+ UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.CandidatePairType_UDP", |
+ counter, counter_max); |
+ break; |
+ case webrtc::kEnumCounterIceCandidatePairTypeTcp: |
+ UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.CandidatePairType_TCP", |
+ counter, counter_max); |
+ break; |
+ case webrtc::kPeerConnectionEnumCounterMax: |
+ NOTREACHED(); |
+ break; |
+ } |
} |
void AddHistogramSample(webrtc::PeerConnectionUMAMetricsName type, |
@@ -722,10 +735,6 @@ RTCPeerConnectionHandler::RTCPeerConnectionHandler( |
PeerConnectionDependencyFactory* dependency_factory) |
: client_(client), |
dependency_factory_(dependency_factory), |
- frame_(NULL), |
- num_data_channels_created_(0), |
- num_local_candidates_ipv4_(0), |
- num_local_candidates_ipv6_(0), |
weak_factory_(this) { |
g_peer_connection_handlers.Get().insert(this); |
} |
@@ -1317,6 +1326,7 @@ void RTCPeerConnectionHandler::OnIceConnectionChange( |
webrtc::PeerConnectionInterface::IceConnectionState new_state) { |
TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnIceConnectionChange"); |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ ReportICEState(new_state); |
if (new_state == webrtc::PeerConnectionInterface::kIceConnectionChecking) { |
ice_connection_checking_start_ = base::TimeTicks::Now(); |
} else if (new_state == |
@@ -1370,8 +1380,7 @@ void RTCPeerConnectionHandler::OnIceGatheringChange( |
webrtc::PeerConnectionInterface::kIceGatheringGathering) { |
// ICE restarts will change gathering state back to "gathering", |
// reset the counter. |
- num_local_candidates_ipv6_ = 0; |
- num_local_candidates_ipv4_ = 0; |
+ ResetUMAStats(); |
} |
blink::WebRTCPeerConnectionHandlerClient::ICEGatheringState state = |
@@ -1526,4 +1535,21 @@ void RTCPeerConnectionHandler::RunSynchronousClosureOnSignalingThread( |
} |
} |
+void RTCPeerConnectionHandler::ReportICEState( |
+ webrtc::PeerConnectionInterface::IceConnectionState new_state) { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (ice_state_seen_[new_state]) |
+ return; |
+ ice_state_seen_[new_state] = true; |
+ UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.ConnectionState", new_state, |
+ webrtc::PeerConnectionInterface::kIceConnectionMax); |
+} |
+ |
+void RTCPeerConnectionHandler::ResetUMAStats() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ num_local_candidates_ipv6_ = 0; |
+ num_local_candidates_ipv4_ = 0; |
+ ice_connection_checking_start_ = base::TimeTicks(); |
+ memset(ice_state_seen_, 0, sizeof(ice_state_seen_)); |
+} |
} // namespace content |