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 0c5c3737cf153f2ca680d981e502701bb4301220..c7afced1d5b1568364796690a9d483b70879bee8 100644 |
--- a/content/renderer/media/rtc_peer_connection_handler.cc |
+++ b/content/renderer/media/rtc_peer_connection_handler.cc |
@@ -316,6 +316,40 @@ void LocalRTCStatsResponse::addStatistic(size_t report, |
impl_.addStatistic(report, name, value); |
} |
+class PeerConnectionUMAObserver : public webrtc::UMAObserver { |
+ public: |
+ PeerConnectionUMAObserver() {} |
+ virtual ~PeerConnectionUMAObserver() {} |
+ |
+ virtual void IncrementCounter( |
+ webrtc::PeerConnectionUMAMetricsCounter counter) OVERRIDE { |
+ UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.IPMetrics", |
+ counter, |
+ webrtc::kBoundary); |
+ } |
+ |
+ virtual void AddHistogramSample( |
+ webrtc::PeerConnectionUMAMetricsName type, int value) OVERRIDE { |
+ switch (type) { |
+ case webrtc::kTimeToConnect: |
+ UMA_HISTOGRAM_MEDIUM_TIMES( |
+ "WebRTC.PeerConnection.TimeToConnect", |
+ base::TimeDelta::FromMilliseconds(value)); |
+ break; |
+ case webrtc::kNetworkInterfaces_IPv4: |
+ UMA_HISTOGRAM_COUNTS_100("WebRTC.PeerConnection.IPv4Interfaces", |
+ value); |
+ break; |
+ case webrtc::kNetworkInterfaces_IPv6: |
+ UMA_HISTOGRAM_COUNTS_100("WebRTC.PeerConnection.IPv6Interfaces", |
+ value); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ } |
+ } |
+}; |
+ |
RTCPeerConnectionHandler::RTCPeerConnectionHandler( |
blink::WebRTCPeerConnectionHandlerClient* client, |
PeerConnectionDependencyFactory* dependency_factory) |
@@ -364,6 +398,8 @@ bool RTCPeerConnectionHandler::initialize( |
peer_connection_tracker_->RegisterPeerConnection( |
this, servers, constraints, frame_); |
+ uma_observer_ = new talk_base::RefCountedObject<PeerConnectionUMAObserver>(); |
+ native_peer_connection_->RegisterUMAObserver(uma_observer_.get()); |
return true; |
} |