From 5d19600ca6a22ea6103e3ced2cedf1af2781ec80 Mon Sep 17 00:00:00 2001 From: Gerald Squelart Date: Tue, 19 Jul 2016 17:46:38 +1000 Subject: [PATCH] Bug 1287712 - TimeDurationAccumulator includes running timer in reports - r=cpearce If the timer is currently running, add started time segment until now to Total(), and add 1 to Count(). This ensures correct values are returned without having to Pause(). MozReview-Commit-ID: JSBvL93GtkE --HG-- extra : rebase_source : 86923c39e54c778151812a55e2ad9e4e010047fd --- dom/html/HTMLMediaElement.h | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/dom/html/HTMLMediaElement.h b/dom/html/HTMLMediaElement.h index 40ffe2a10610..9aa39c9eeee0 100644 --- a/dom/html/HTMLMediaElement.h +++ b/dom/html/HTMLMediaElement.h @@ -1575,19 +1575,21 @@ protected: public: // Helper class to measure times for MSE telemetry stats - class TimeDurationAccumulator { + class TimeDurationAccumulator + { public: TimeDurationAccumulator() : mCount(0) + {} + void Start() { - } - void Start() { if (IsStarted()) { return; } mStartTime = TimeStamp::Now(); } - void Pause() { + void Pause() + { if (!IsStarted()) { return; } @@ -1595,14 +1597,25 @@ public: mCount++; mStartTime = TimeStamp(); } - bool IsStarted() const { + bool IsStarted() const + { return !mStartTime.IsNull(); } - double Total() const { - return mSum.ToSeconds(); + double Total() const + { + if (!IsStarted()) { + return mSum.ToSeconds(); + } + // Add current running time until now, but keep it running. + return (mSum + (TimeStamp::Now() - mStartTime)).ToSeconds(); } - uint32_t Count() const { - return mCount; + uint32_t Count() const + { + if (!IsStarted()) { + return mCount; + } + // Count current run in this report, without increasing the stored count. + return mCount + 1; } private: TimeStamp mStartTime;