OLD | NEW |
1 <html> | 1 <html> |
2 <title>Test of concurrent HTML5 audio</title> | 2 <title>Test of concurrent HTML5 audio</title> |
3 <body> | 3 <body> |
4 | 4 |
5 <p>Test that multiple audio elements can play concurrently.</p> | 5 <p>Test that multiple audio elements can play concurrently.</p> |
6 | 6 |
7 <script src=video-test.js></script> | 7 <script src=video-test.js></script> |
8 <script src=media-file.js></script> | 8 <script src=media-file.js></script> |
9 <script> | 9 <script> |
10 var maxPlayers = 2; // Number of concurrent audio elements to test. For
larger values a longer media file is needed. | 10 var maxPlayers = 2; // Number of concurrent audio elements to test. For
larger values a longer media file is needed. |
11 var timeupdateEventCount = 0; | |
12 var audioElementCount = 0; | 11 var audioElementCount = 0; |
13 | 12 |
14 function errorListener(event) | 13 function errorListener(event) |
15 { | 14 { |
16 logResult(false, "Element " + audioElementCount + " caught 'error'
event, audio.error.code = " + this.error.code); | 15 logResult(false, "Element " + audioElementCount + " caught 'error'
event, audio.error.code = " + this.error.code); |
17 endTest(); | 16 endTest(); |
18 } | 17 } |
19 | 18 |
20 function canplaythroughListener(event) | 19 function canplaythroughListener(event) |
21 { | 20 { |
22 consoleWrite("EVENT(" + audioElementCount + ", canplaythrough)"); | 21 consoleWrite("EVENT(" + audioElementCount + ", canplaythrough)"); |
23 testElement = this; | 22 testElement = this; |
24 testExpected(audioElementCount + ", testElement.currentTime", 0); | 23 testExpected(audioElementCount + ", testElement.currentTime", 0); |
25 this.play(); | 24 this.play(); |
26 } | 25 } |
27 | 26 |
28 function playingListener(event) | 27 function playingListener(event) |
29 { | 28 { |
30 consoleWrite("EVENT(" + audioElementCount + ", playing)"); | 29 consoleWrite("EVENT(" + audioElementCount + ", playing)"); |
31 } | 30 } |
32 | 31 |
33 function timeupdateListener(event) | 32 function timeupdateListener(event) |
34 { | 33 { |
35 // Make sure time is advancing. | 34 testElement = this; |
36 if (this.currentTime > 0) { | 35 testExpected(audioElementCount + ", testElement.currentTime", 0, '>'
); |
37 this.removeEventListener('timeupdate', timeupdateListener); | 36 this.removeEventListener('timeupdate', timeupdateListener); |
38 if (++audioElementCount >= maxPlayers) { | 37 if (++audioElementCount >= maxPlayers) { |
39 // All audio elements have been started playing. Make sure | 38 // All audio elements have been started playing. Make sure |
40 // all of them are still playing. | 39 // all of them are still playing. |
41 consoleWrite("Making sure all " + maxPlayers + " audio eleme
nts are in playing state:"); | 40 consoleWrite("Making sure all " + maxPlayers + " audio elements
are in playing state:"); |
42 for (var i = 0; i < maxPlayers; i++) { | 41 for (var i = 0; i < maxPlayers; i++) { |
43 testElement = document.getElementsByTagName('audio')[i]; | 42 testElement = document.getElementsByTagName('audio')[i]; |
44 testExpected(i + ", testElement.paused", false); | 43 testExpected(i + ", testElement.paused", false); |
45 } | |
46 endTest(); | |
47 } else { | |
48 // Start the next audio element | |
49 testAudioElement(audioElementCount); | |
50 } | 44 } |
| 45 endTest(); |
| 46 } else { |
| 47 // Start the next audio element |
| 48 testAudioElement(audioElementCount); |
51 } | 49 } |
52 } | 50 } |
53 | 51 |
54 function testAudioElement(count) | 52 function testAudioElement(count) |
55 { | 53 { |
56 var audioElement = document.getElementsByTagName('audio')[count]; | 54 var audioElement = document.getElementsByTagName('audio')[count]; |
57 audioElement.addEventListener('error', errorListener); | 55 audioElement.addEventListener('error', errorListener); |
58 audioElement.addEventListener('canplaythrough', canplaythroughListen
er); | 56 audioElement.addEventListener('canplaythrough', canplaythroughListen
er); |
59 timeupdateEventCount = 0; | |
60 audioElement.addEventListener('timeupdate', timeupdateListener); | 57 audioElement.addEventListener('timeupdate', timeupdateListener); |
61 audioElement.addEventListener('playing', playingListener); | 58 audioElement.addEventListener('playing', playingListener); |
62 audioElement.src = findMediaFile("audio", "content/silence"); | 59 audioElement.src = findMediaFile("audio", "content/silence"); |
63 } | 60 } |
64 | 61 |
65 consoleWrite("Starting a total of " + maxPlayers + " concurrent audio el
ements."); | 62 consoleWrite("Starting a total of " + maxPlayers + " concurrent audio el
ements."); |
66 for (var i = 0; i < maxPlayers; i++) | 63 for (var i = 0; i < maxPlayers; i++) |
67 document.write("<audio controls></audio>"); | 64 document.write("<audio controls></audio>"); |
68 | 65 |
69 testAudioElement(0); | 66 testAudioElement(0); |
70 </script> | 67 </script> |
71 | 68 |
72 </body> | 69 </body> |
73 </html> | 70 </html> |
OLD | NEW |