Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <html> | 1 <!DOCTYPE html> |
| 2 <title>Test of concurrent HTML5 audio</title> | 2 <title>Test that multiple audio elements can play concurrently.</title> |
| 3 <body> | 3 <script src="../resources/testharness.js"></script> |
| 4 <script src="../resources/testharnessreport.js"></script> | |
| 5 <script src="media-file.js"></script> | |
| 6 <script> | |
| 7 async_test(function(t) { | |
| 8 // Number of concurrent audio elements to test. | |
| 9 // For larger values a longer media file is needed. | |
| 10 var maxPlayers = 2; | |
| 11 var audioElementCount = 0; | |
| 4 | 12 |
| 5 <p>Test that multiple audio elements can play concurrently.</p> | 13 for (var i = 0; i < maxPlayers; i++) |
| 14 document.write("<audio controls></audio>"); | |
|
fs
2016/07/02 18:33:45
I don't see a reason to use document.write here (m
Srirama
2016/07/03 04:31:33
Done.
| |
| 6 | 15 |
| 7 <!-- TODO(foolip): Convert test to testharness.js. crbug.com/588956 | 16 testAudioElement(0); |
| 8 (Please avoid writing new tests using video-test.js) --> | |
| 9 <script src=video-test.js></script> | |
| 10 <script src=media-file.js></script> | |
| 11 <script> | |
| 12 var maxPlayers = 2; // Number of concurrent audio elements to test. For larger values a longer media file is needed. | |
| 13 var audioElementCount = 0; | |
| 14 | 17 |
| 15 function errorListener(event) | 18 function testAudioElement(count) { |
| 16 { | 19 var audioElement = document.querySelectorAll("audio")[count]; |
| 17 logResult(false, "Element " + audioElementCount + " caught 'error' event, audio.error.code = " + this.error.code); | 20 audioElement.onerror = t.unreached_func(); |
| 18 endTest(); | 21 audioElement.onplaying = t.step_func(function() {}); |
| 19 } | |
| 20 | 22 |
| 21 function canplaythroughListener(event) | 23 audioElement.oncanplaythrough = t.step_func(function(event) { |
| 22 { | 24 var currentAudio = event.target; |
| 23 consoleWrite("EVENT(" + audioElementCount + ", canplaythrough)"); | 25 assert_equals(currentAudio.currentTime, 0, "audioElement: " + audio ElementCount); |
|
fs
2016/07/02 18:33:45
"audioElement: "... => "audio element " + (i + 1)
Srirama
2016/07/03 04:31:33
Done.
| |
| 24 testElement = this; | 26 currentAudio.play(); |
| 25 testExpected(audioElementCount + ", testElement.currentTime", 0); | 27 }); |
| 26 this.play(); | |
| 27 } | |
| 28 | 28 |
| 29 function playingListener(event) | 29 audioElement.ontimeupdate = t.step_func(function(event) { |
| 30 { | 30 var currentAudio = event.target; |
| 31 consoleWrite("EVENT(" + audioElementCount + ", playing)"); | 31 assert_greater_than(currentAudio.currentTime, 0, "audioElement: " + audioElementCount); |
| 32 } | 32 currentAudio.ontimeupdate = null; |
| 33 | 33 if (++audioElementCount == maxPlayers) { |
| 34 function timeupdateListener(event) | 34 // All audio elements have been started playing. |
| 35 { | 35 // Make sure all of them are still playing. |
| 36 testElement = this; | |
| 37 testExpected(audioElementCount + ", testElement.currentTime", 0, '>' ); | |
| 38 this.removeEventListener('timeupdate', timeupdateListener); | |
| 39 if (++audioElementCount >= maxPlayers) { | |
| 40 // All audio elements have been started playing. Make sure | |
| 41 // all of them are still playing. | |
| 42 consoleWrite("Making sure all " + maxPlayers + " audio elements are in playing state:"); | |
| 43 for (var i = 0; i < maxPlayers; i++) { | 36 for (var i = 0; i < maxPlayers; i++) { |
| 44 testElement = document.getElementsByTagName('audio')[i]; | 37 currentAudio = document.getElementsByTagName('audio')[i]; |
| 45 testExpected(i + ", testElement.paused", false); | 38 assert_false(currentAudio.paused, "audioElement: " + i); |
| 46 } | 39 } |
| 47 endTest(); | 40 t.done(); |
| 48 } else { | 41 } else { |
| 49 // Start the next audio element | 42 // Start the next audio element. |
| 50 testAudioElement(audioElementCount); | 43 testAudioElement(audioElementCount); |
| 51 } | 44 } |
| 52 } | 45 }); |
| 53 | 46 |
| 54 function testAudioElement(count) | 47 audioElement.src = findMediaFile("audio", "content/silence"); |
| 55 { | 48 } |
| 56 var audioElement = document.getElementsByTagName('audio')[count]; | 49 }); |
| 57 audioElement.addEventListener('error', errorListener); | 50 </script> |
| 58 audioElement.addEventListener('canplaythrough', canplaythroughListen er); | |
| 59 audioElement.addEventListener('timeupdate', timeupdateListener); | |
| 60 audioElement.addEventListener('playing', playingListener); | |
| 61 audioElement.src = findMediaFile("audio", "content/silence"); | |
| 62 } | |
| 63 | |
| 64 consoleWrite("Starting a total of " + maxPlayers + " concurrent audio el ements."); | |
| 65 for (var i = 0; i < maxPlayers; i++) | |
| 66 document.write("<audio controls></audio>"); | |
| 67 | |
| 68 testAudioElement(0); | |
| 69 </script> | |
| 70 | |
| 71 </body> | |
| 72 </html> | |
| OLD | NEW |