summaryrefslogtreecommitdiffstats
path: root/chromecast
diff options
context:
space:
mode:
authorjasonroberts <jasonroberts@google.com>2016-03-09 15:57:01 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-09 23:58:40 +0000
commit9697dd17af177212382d57137fff226027cec20f (patch)
treeb223f9e04ef687895feffa3829e7e03418bcdff9 /chromecast
parent59b96662ba6bae4fd40b981c25516e086911ae24 (diff)
downloadchromium_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.cc22
-rw-r--r--chromecast/media/cma/base/buffering_controller.h1
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.