Index: tools/perf/metrics/media.js |
diff --git a/tools/perf/metrics/media.js b/tools/perf/metrics/media.js |
index 7cef7cd0c74ce2794cc298b611dd176a6b397d07..8cd3dc23e0048820f5b3ad950aeeabb374fb95fe 100644 |
--- a/tools/perf/metrics/media.js |
+++ b/tools/perf/metrics/media.js |
@@ -54,6 +54,9 @@ |
this.element.addEventListener('willSeek', function (e) { |
metric.onWillSeek(e); |
}, false); |
+ this.element.addEventListener('willLoop', function (e) { |
+ metric.onWillLoop(e); |
+ }, false); |
} |
HTMLMediaMetric.prototype = new MediaMetricBase(); |
@@ -85,6 +88,20 @@ |
this.element.addEventListener('seeked', onSeeked); |
}; |
+ HTMLMediaMetric.prototype.onWillLoop = function(e) { |
+ var loopTimer = new Timer(); |
+ var metric = this; |
+ var loopCount = e.loopCount; |
+ var onEndLoop = function(e) { |
+ var actualDuration = loopTimer.stop(); |
+ var idealDuration = metric.element.duration * loopCount; |
+ var avg_loop_time = (actualDuration - idealDuration) / loopCount; |
+ metric.metrics['avg_loop_time'] = avg_loop_time.toFixed(3); |
+ e.target.removeEventListener('endLoop', onEndLoop); |
+ }; |
+ this.element.addEventListener('endLoop', onEndLoop); |
+ }; |
+ |
HTMLMediaMetric.prototype.appendMetric = function(metric, value) { |
if (!this.metrics[metric]) |
this.metrics[metric] = []; |