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 c5c68e4d7418ba6b9d591e72cfbb5fd56e2e8657..2c4d9aecad401163fc062f06849410c7499cebcf 100644 |
--- a/content/renderer/media/rtc_peer_connection_handler.cc |
+++ b/content/renderer/media/rtc_peer_connection_handler.cc |
@@ -390,7 +390,9 @@ RTCPeerConnectionHandler::RTCPeerConnectionHandler( |
dependency_factory_(dependency_factory), |
frame_(NULL), |
peer_connection_tracker_(NULL), |
- num_data_channels_created_(0) { |
+ num_data_channels_created_(0), |
+ num_local_candidates_ipv4_(0), |
+ num_local_candidates_ipv6_(0) { |
g_peer_connection_handlers.Get().insert(this); |
} |
@@ -894,6 +896,19 @@ void RTCPeerConnectionHandler::OnIceGatheringChange( |
// to signal end of candidates. |
blink::WebRTCICECandidate null_candidate; |
client_->didGenerateICECandidate(null_candidate); |
+ |
+ UMA_HISTOGRAM_COUNTS_100("WebRTC.PeerConnection.IPv4LocalCandidates", |
+ num_local_candidates_ipv4_); |
+ |
+ UMA_HISTOGRAM_COUNTS_100("WebRTC.PeerConnection.IPv6LocalCandidates", |
+ num_local_candidates_ipv6_); |
+ } else if (ice_gathering_current_state_ == |
juberti2
2014/09/26 01:45:37
wouldn't it be simpler to do this if new_state ==
|
+ webrtc::PeerConnectionInterface::kIceGatheringComplete && |
+ new_state != ice_gathering_current_state_) { |
+ // ICE restarts will change gathering state back to "gathering", |
+ // reset the counter. |
+ num_local_candidates_ipv6_ = 0; |
+ num_local_candidates_ipv4_ = 0; |
} |
blink::WebRTCPeerConnectionHandlerClient::ICEGatheringState state = |
@@ -901,6 +916,7 @@ void RTCPeerConnectionHandler::OnIceGatheringChange( |
if (peer_connection_tracker_) |
peer_connection_tracker_->TrackIceGatheringStateChange(this, state); |
client_->didChangeICEGatheringState(state); |
+ ice_gathering_current_state_ = new_state; |
} |
void RTCPeerConnectionHandler::OnAddStream( |
@@ -968,6 +984,18 @@ void RTCPeerConnectionHandler::OnIceCandidate( |
peer_connection_tracker_->TrackAddIceCandidate( |
this, web_candidate, PeerConnectionTracker::SOURCE_LOCAL, true); |
+ // Only the first m line's first component is tracked to avoid |
+ // miscounting when doing BUNDLE or rtcp mux. |
+ if (candidate->sdp_mline_index() == 0 && |
+ candidate->candidate().component() == 1) { |
+ if (candidate->candidate().address().family() == AF_INET) { |
+ num_local_candidates_ipv4_++; |
+ } else if (candidate->candidate().address().family() == AF_INET6) { |
+ num_local_candidates_ipv6_++; |
+ } else { |
+ NOTREACHED(); |
+ } |
+ } |
client_->didGenerateICECandidate(web_candidate); |
} |