Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / media / avtrack / addtrack.html
1 <!doctype html>
2 <html>
3     <head>
4         <title>AudioTrackList &amp; VideoTrackList addtrack event</title>
5         <script src="../../resources/testharness.js"></script>
6         <script src="../../resources/testharnessreport.js"></script>
7         <script src="../media-file.js"></script>
8     </head>
9     <body>
10         <div id="log"></div>
11         <script>
12             function addtrack_test(tagName, src, label)
13             {
14                 function onTrackListEvent(actualEventList, e)
15                 {
16                     actualEventList.push(e.type);
17
18                     if (e.type == "addtrack") {
19                         assert_equals(e.track, e.target[0], "Track property matches first track in list.");
20                     }
21                 }
22
23                 function setupTrackListHandlers(t, trackList, actualEventList)
24                 {
25                     trackList.addEventListener("addtrack", t.step_func(onTrackListEvent.bind(this, actualEventList)));
26                     trackList.addEventListener("change", t.step_func(onTrackListEvent.bind(this, actualEventList)));
27                     trackList.addEventListener("removetrack", t.step_func(onTrackListEvent.bind(this, actualEventList)));
28                 }
29
30                 async_test(function(t)
31                 {
32                     var e = document.createElement(tagName);
33                     e.src = src;
34
35                     var expectedEvents = ["addtrack"];
36                     var actualAudioEvents = [];
37                     var actualVideoEvents = [];
38                     setupTrackListHandlers(t, e.audioTracks, actualAudioEvents, "audioTracks events");
39                     setupTrackListHandlers(t, e.videoTracks, actualVideoEvents, "videoTracks events");
40
41                     e.load();
42
43                     e.addEventListener("loadedmetadata", t.step_func(function()
44                     {
45                         assert_array_equals(actualAudioEvents, expectedEvents);
46
47                         if (e.videoTracks.length > 0) {
48                             assert_equals(label, "audio-video");
49                             assert_array_equals(actualVideoEvents, expectedEvents);
50                         } else {
51                             assert_equals(label, "audio-only");
52                             assert_equals(actualVideoEvents.length, 0);
53                         }
54
55                         t.done();
56                     }));
57                 }, tagName + " : " + label);
58             }
59
60             addtrack_test("audio", findMediaFile("audio", "../content/test"), "audio-only");
61             addtrack_test("audio", findMediaFile("video", "../content/test"), "audio-video");
62             addtrack_test("video", findMediaFile("audio", "../content/test"), "audio-only");
63             addtrack_test("video", findMediaFile("video", "../content/test"), "audio-video");
64         </script>
65     </body>
66 </html>