Chromium Code Reviews| 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); |
| } |