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