Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(709)

Side by Side Diff: chrome/test/data/third_party/spaceport/js/tests/audioLatency.js

Issue 10134041: Add test data for spaceport benchmark. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 define([ 'util/ensureCallback', 'util/cacheBust', 'util/timeout' ], function (en sureCallback, cacheBust, timeout) {
2 var MAX_LATENCY = 20;
3
4 function getPlayLatency(audio, callback) {
5 callback = ensureCallback(callback);
6
7 var startTime;
8
9 function update() {
10 var endTime = Date.now();
11
12 audio.removeEventListener('play', update, false);
13 audio.removeEventListener('timeupdate', update, false);
14 audio.pause();
15
16 callback(null, endTime - startTime);
17 }
18
19 audio.addEventListener('play', update, false);
20 audio.addEventListener('timeupdate', update, false);
21
22 startTime = Date.now();
23 audio.play();
24 }
25
26 function audioLatency(callback) {
27 callback = ensureCallback(callback);
28
29 if (!window.Audio) {
30 callback(new Error('Audio not supported'));
31 return;
32 }
33
34 var audio = new window.Audio();
35
36 function onCanPlayThrough() {
37 audio.removeEventListener('canplaythrough', onCanPlayThrough, false) ;
38
39 // Run the test twice: once for "cold" time, once for "warm" time.
40 getPlayLatency(audio, function (err, coldTime) {
41 if (err) {
42 callback(err);
43 return;
44 }
45
46 getPlayLatency(audio, function (err, warmTime) {
47 if (err) {
48 callback(err);
49 return;
50 }
51
52 callback(null, {
53 pass: coldTime <= MAX_LATENCY && warmTime <= MAX_LATENCY ,
54 coldLatency: coldTime,
55 warmLatency: warmTime
56 });
57 });
58 });
59 }
60
61 function onError() {
62 callback(new Error('Failed to load audio'));
63 }
64
65 var source = document.createElement('source');
66 source.src = cacheBust.url('assets/silence.wav');
67 source.addEventListener('error', onError, false);
68
69 audio.addEventListener('canplaythrough', onCanPlayThrough, false);
70 audio.addEventListener('error', onError, false);
71 audio.appendChild(source);
72 audio.play();
73
74 // Work around Webkit bug (present in Chrome <= 15, Safari <= 5, at
75 // time of writing) where the browser will decide it doesn't /need/
76 // to download all these pesky audio files.
77 window['audio__' + Math.random()] = audio;
78 }
79
80 return function (callback) {
81 callback = ensureCallback(callback);
82
83 timeout(5000, audioLatency, callback);
84 };
85 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698