OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This file contains common utilities to find video/audio elements on a page | 5 // This file contains common utilities to find video/audio elements on a page |
6 // and collect metrics for each. | 6 // and collect metrics for each. |
7 | 7 |
8 (function() { | 8 (function() { |
9 // MediaMetric class responsible for collecting metrics on a media element. | 9 // MediaMetric class responsible for collecting metrics on a media element. |
10 // It attaches required event listeners in order to collect different metrics. | 10 // It attaches required event listeners in order to collect different metrics. |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 }; | 89 }; |
90 | 90 |
91 HTMLMediaMetric.prototype.onWillLoop = function(e) { | 91 HTMLMediaMetric.prototype.onWillLoop = function(e) { |
92 var loopTimer = new Timer(); | 92 var loopTimer = new Timer(); |
93 var metric = this; | 93 var metric = this; |
94 var loopCount = e.loopCount; | 94 var loopCount = e.loopCount; |
95 var onEndLoop = function(e) { | 95 var onEndLoop = function(e) { |
96 var actualDuration = loopTimer.stop(); | 96 var actualDuration = loopTimer.stop(); |
97 var idealDuration = metric.element.duration * loopCount; | 97 var idealDuration = metric.element.duration * loopCount; |
98 var avg_loop_time = (actualDuration - idealDuration) / loopCount; | 98 var avg_loop_time = (actualDuration - idealDuration) / loopCount; |
99 metric.metrics['avg_loop_time'] = avg_loop_time.toFixed(3); | 99 metric.metrics['avg_loop_time'] = |
| 100 Math.round(avg_loop_time * 1000) / 1000; |
100 e.target.removeEventListener('endLoop', onEndLoop); | 101 e.target.removeEventListener('endLoop', onEndLoop); |
101 }; | 102 }; |
102 this.element.addEventListener('endLoop', onEndLoop); | 103 this.element.addEventListener('endLoop', onEndLoop); |
103 }; | 104 }; |
104 | 105 |
105 HTMLMediaMetric.prototype.appendMetric = function(metric, value) { | 106 HTMLMediaMetric.prototype.appendMetric = function(metric, value) { |
106 if (!this.metrics[metric]) | 107 if (!this.metrics[metric]) |
107 this.metrics[metric] = []; | 108 this.metrics[metric] = []; |
108 this.metrics[metric].push(value); | 109 this.metrics[metric].push(value); |
109 } | 110 } |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 metrics.push(window.__mediaMetrics[i].getSummary()); | 201 metrics.push(window.__mediaMetrics[i].getSummary()); |
201 return metrics; | 202 return metrics; |
202 } | 203 } |
203 | 204 |
204 window.__globalCounter = 0; | 205 window.__globalCounter = 0; |
205 window.__mediaMetrics = []; | 206 window.__mediaMetrics = []; |
206 window.__getMediaMetric = getMediaMetric; | 207 window.__getMediaMetric = getMediaMetric; |
207 window.__getAllMetrics = getAllMetrics; | 208 window.__getAllMetrics = getAllMetrics; |
208 window.__createMediaMetricsForDocument = createMediaMetricsForDocument; | 209 window.__createMediaMetricsForDocument = createMediaMetricsForDocument; |
209 })(); | 210 })(); |
OLD | NEW |