Index: content/renderer/media/remote_media_stream_impl.cc |
diff --git a/content/renderer/media/remote_media_stream_impl.cc b/content/renderer/media/remote_media_stream_impl.cc |
index 66bdb60821d460328d74c65a2bb76744a013e93a..4e85e60c7325b35110ff1c15c2e35c0cd1083711 100644 |
--- a/content/renderer/media/remote_media_stream_impl.cc |
+++ b/content/renderer/media/remote_media_stream_impl.cc |
@@ -7,7 +7,9 @@ |
#include <string> |
#include "base/logging.h" |
+#include "base/metrics/histogram.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/time/time.h" |
#include "content/renderer/media/media_stream.h" |
#include "content/renderer/media/media_stream_dependency_factory.h" |
#include "third_party/WebKit/public/platform/WebString.h" |
@@ -38,6 +40,10 @@ class RemoteMediaStreamTrackObserver |
scoped_refptr<webrtc::MediaStreamTrackInterface> webrtc_track_; |
blink::WebMediaStreamTrack webkit_track_; |
+ // Used to calculate duration of the track for a metric logged at |
+ // destruction time. |
+ base::TimeTicks creation_time_; |
+ |
DISALLOW_COPY_AND_ASSIGN(RemoteMediaStreamTrackObserver); |
}; |
@@ -78,11 +84,28 @@ RemoteMediaStreamTrackObserver::RemoteMediaStreamTrackObserver( |
const blink::WebMediaStreamTrack& webkit_track) |
: state_(webrtc_track->state()), |
webrtc_track_(webrtc_track), |
- webkit_track_(webkit_track) { |
+ webkit_track_(webkit_track), |
+ creation_time_(base::TimeTicks::Now()) { |
webrtc_track->RegisterObserver(this); |
} |
RemoteMediaStreamTrackObserver::~RemoteMediaStreamTrackObserver() { |
perkj_chrome
2014/03/05 09:39:17
If you close a tab - which I guess is very common
|
+ // Emit the duration of the track to a histogram (one for audio, one |
+ // for video). |
+ base::TimeDelta duration = base::TimeTicks::Now() - creation_time_; |
+ std::string histogram_name = "WebRTC.ReceivedVideoTrackDuration"; |
+ if (webkit_track_.source().type() == blink::WebMediaStreamSource::TypeAudio) { |
+ histogram_name = "WebRTC.ReceivedAudioTrackDuration"; |
+ } else { |
+ DCHECK(webkit_track_.source().type() == |
+ blink::WebMediaStreamSource::TypeVideo); |
+ } |
+ UMA_HISTOGRAM_CUSTOM_TIMES(histogram_name, |
Ami GONE FROM CHROMIUM
2014/03/05 08:44:27
This is a bug - the name parameter to UMA macros m
Alexei Svitkine (slow)
2014/03/05 14:23:37
The histogram macros cache the Histogram object af
|
+ duration, |
+ base::TimeDelta::FromMilliseconds(100), |
+ base::TimeDelta::FromHours(16), |
+ 50); |
+ |
webrtc_track_->UnregisterObserver(this); |
} |