diff options
author | jasonroberts <jasonroberts@google.com> | 2016-03-09 15:57:01 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-09 23:58:40 +0000 |
commit | 9697dd17af177212382d57137fff226027cec20f (patch) | |
tree | b223f9e04ef687895feffa3829e7e03418bcdff9 /chromecast | |
parent | 59b96662ba6bae4fd40b981c25516e086911ae24 (diff) | |
download | chromium_src-9697dd17af177212382d57137fff226027cec20f.zip chromium_src-9697dd17af177212382d57137fff226027cec20f.tar.gz chromium_src-9697dd17af177212382d57137fff226027cec20f.tar.bz2 |
[Chromecast] Add metrics for logging buffering related Cast Events.
BUG=internal b/26496758
Review URL: https://codereview.chromium.org/1781743002
Cr-Commit-Position: refs/heads/master@{#380263}
Diffstat (limited to 'chromecast')
-rw-r--r-- | chromecast/media/cma/base/buffering_controller.cc | 22 | ||||
-rw-r--r-- | chromecast/media/cma/base/buffering_controller.h | 1 |
2 files changed, 19 insertions, 4 deletions
diff --git a/chromecast/media/cma/base/buffering_controller.cc b/chromecast/media/cma/base/buffering_controller.cc index 8137d9c..4e32804 100644 --- a/chromecast/media/cma/base/buffering_controller.cc +++ b/chromecast/media/cma/base/buffering_controller.cc @@ -22,6 +22,7 @@ BufferingController::BufferingController( buffering_notification_cb_(buffering_notification_cb), is_buffering_(false), begin_buffering_time_(base::Time()), + last_buffer_end_time_(base::Time()), initial_buffering_(true), weak_factory_(this) { weak_this_ = weak_factory_.GetWeakPtr(); @@ -151,9 +152,10 @@ void BufferingController::OnBufferingStateChanged( // End buffering. if (is_buffering_prv && !is_buffering_) { - // TODO(damienv): |buffering_user_time| could be a UMA histogram. base::Time current_time = base::Time::Now(); base::TimeDelta buffering_user_time = current_time - begin_buffering_time_; + chromecast::metrics::CastMetricsHelper* metrics_helper = + chromecast::metrics::CastMetricsHelper::GetInstance(); CMALOG(kLogControl) << "Buffering took: " << buffering_user_time.InMilliseconds() << "ms"; @@ -161,10 +163,22 @@ void BufferingController::OnBufferingStateChanged( initial_buffering_ ? chromecast::metrics::CastMetricsHelper::kInitialBuffering : chromecast::metrics::CastMetricsHelper::kBufferingAfterUnderrun; - chromecast::metrics::CastMetricsHelper::GetInstance()->LogTimeToBufferAv( - buffering_type, buffering_user_time); - + metrics_helper->LogTimeToBufferAv(buffering_type, buffering_user_time); + + if (!initial_buffering_) { + base::TimeDelta time_between_buffering = + begin_buffering_time_ - last_buffer_end_time_; + CMALOG(kLogControl) + << "Time since last buffering event: " + << time_between_buffering.InMilliseconds() << "ms"; + metrics_helper->RecordSimpleActionWithValue( + "Cast.Platform.PlayTimeBeforeAutoPause", + time_between_buffering.InMilliseconds()); + metrics_helper->RecordSimpleActionWithValue( + "Cast.Platform.AutoPauseTime", buffering_user_time.InMilliseconds()); + } // Only the first buffering report is considered "initial buffering". + last_buffer_end_time_ = current_time; initial_buffering_ = false; } diff --git a/chromecast/media/cma/base/buffering_controller.h b/chromecast/media/cma/base/buffering_controller.h index b0ccece..92ed40a 100644 --- a/chromecast/media/cma/base/buffering_controller.h +++ b/chromecast/media/cma/base/buffering_controller.h @@ -92,6 +92,7 @@ class BufferingController { // Start time of a re-buffering phase. base::Time begin_buffering_time_; + base::Time last_buffer_end_time_; bool initial_buffering_; // Buffering level for each individual stream. |