OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE html> | |
2 <html> | |
3 <head> | |
4 <script src="/w3c/resources/testharness.js"></script> | |
wolenetz
2016/06/27 19:31:06
nits: Since this is going shortly to upstream w-p-
servolk
2016/06/29 22:23:25
Since all existing tests under third_party/WebKit/
wolenetz
2016/06/30 21:03:06
Acknowledged. And it appears the guidance I was gi
| |
5 <script src="/w3c/resources/testharnessreport.js"></script> | |
6 <script src="mediasource-util.js"></script> | |
7 </head> | |
8 <body> | |
9 <script> | |
10 function verifyTrackProperties(trackType, track, expectedTrackInfo) { | |
11 assert_equals(track.id, expectedTrackInfo.id, trackType + ".id") ; | |
12 assert_equals(track.kind, expectedTrackInfo.kind, trackType + ". kind"); | |
13 assert_equals(track.label, expectedTrackInfo.label, trackType + ".label"); | |
14 assert_equals(track.language, expectedTrackInfo.language, trackT ype + ".language"); | |
15 } | |
16 | |
17 function loadMediaAndVerifyAddedTracks(test, mediaElement, segmentIn fo, sourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, suc cessCallback) | |
18 { | |
19 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); | |
20 test.expectEvent(sourceBuffer.audioTracks, "addtrack", "sourceBu ffer.audioTracks addtrack event"); | |
21 test.expectEvent(sourceBuffer.videoTracks, "addtrack", "sourceBu ffer.videoTracks addtrack event"); | |
22 test.expectEvent(mediaElement.audioTracks, "addtrack", "mediaEle ment.audioTracks addtrack event"); | |
23 test.expectEvent(mediaElement.videoTracks, "addtrack", "mediaEle ment.videoTracks addtrack event"); | |
24 test.expectEvent(mediaElement, "loadedmetadata", "loadedmetadata done."); | |
25 test.expectEvent(sourceBuffer, "updateend", "initSegment append ended."); | |
26 sourceBuffer.appendBuffer(initSegment); | |
27 test.waitForExpectedEvents(function() | |
28 { | |
29 assert_equals(sourceBuffer.audioTracks.length, 1, "audioTrac ks.length"); | |
30 verifyTrackProperties("audio", sourceBuffer.audioTracks[0], expectedAudioTrackInfo); | |
31 assert_equals(sourceBuffer.audioTracks[0].sourceBuffer, sour ceBuffer, "audioTrack.sourceBuffer"); | |
32 // The first audio track is enabled by default. | |
33 assert_true(sourceBuffer.audioTracks[0].enabled, "sourceBuff er.audioTracks[0].enabled"); | |
34 | |
35 assert_equals(sourceBuffer.videoTracks.length, 1, "videoTrac ks.length"); | |
36 verifyTrackProperties("video", sourceBuffer.videoTracks[0], expectedVideoTrackInfo); | |
37 assert_equals(sourceBuffer.videoTracks[0].sourceBuffer, sour ceBuffer, "videoTrack.sourceBuffer"); | |
38 // The first video track is selected by default. | |
39 assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuf fer.videoTracks[0].selected"); | |
40 | |
41 assert_not_equals(sourceBuffer.audioTracks[0].id, sourceBuff er.videoTracks[0].id, "track ids must be unique"); | |
42 | |
43 assert_equals(mediaElement.videoTracks.length, 1, "videoTrac ks.length"); | |
44 assert_equals(mediaElement.videoTracks[0], sourceBuffer.vide oTracks[0], "mediaElement.videoTrack == sourceBuffer.videoTrack"); | |
45 | |
46 assert_equals(mediaElement.audioTracks.length, 1, "audioTrac ks.length"); | |
47 assert_equals(mediaElement.audioTracks[0], sourceBuffer.audi oTracks[0], "mediaElement.audioTrack == sourceBuffer.audioTrack"); | |
48 | |
49 successCallback(); | |
50 }); | |
51 } | |
52 | |
53 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData) | |
54 { | |
55 var expectedAudioTrackInfo = { id: "2", kind: "main", label: "", language: "" }; | |
wolenetz
2016/06/27 19:31:07
Hmm. This may be too specific to our implementatio
servolk
2016/06/29 22:23:24
I'm not sure what exactly you mean by 'make it mor
wolenetz
2016/06/30 21:03:06
Yes, that is what I meant. Sorry if confusing.
| |
56 var expectedVideoTrackInfo = { id: "1", kind: "main", label: "", language: "" }; | |
57 | |
58 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func(function () | |
59 { | |
60 // Now append the same exact init segment again. This should succeed, but no new tracks should | |
61 // be added to the SourceBuffer or MediaElement. | |
62 test.failOnEvent(sourceBuffer.audioTracks, "addtrack", "Unex pected addtrack event on sourceBuffer.audioTracks for second init segment"); | |
63 test.failOnEvent(sourceBuffer.videoTracks, "addtrack", "Unex pected addtrack event on sourceBuffer.videoTracks for second init segment"); | |
64 test.failOnEvent(mediaElement.audioTracks, "addtrack", "Unex pected addtrack event on mediaElement.audioTracks for second init segment"); | |
65 test.failOnEvent(mediaElement.videoTracks, "addtrack", "Unex pected addtrack event on mediaElement.videoTracks for second init segment"); | |
66 | |
67 test.expectEvent(sourceBuffer, "updateend", "InitSegment app end ended."); | |
68 var initSegment = MediaSourceUtil.extractSegmentData(mediaDa ta, segmentInfo.init); | |
69 sourceBuffer.appendBuffer(initSegment); | |
70 test.waitForExpectedEvents(function() | |
71 { | |
72 assert_equals(mediaElement.audioTracks.length, 1, "media Element.audioTracks.length"); | |
73 assert_equals(mediaElement.videoTracks.length, 1, "media Element.videoTracks.length"); | |
74 assert_equals(sourceBuffer.audioTracks.length, 1, "sourc eBuffer.audioTracks.length"); | |
75 assert_equals(sourceBuffer.videoTracks.length, 1, "sourc eBuffer.videoTracks.length"); | |
76 test.done(); | |
77 }); | |
78 })); | |
79 }, "Same init segment appended twice"); | |
80 | |
81 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData) | |
82 { | |
83 var originalTrackDefaults = [ | |
84 new TrackDefault("audio", "audio-language", "audio-label", [ "main"], "2"), | |
wolenetz
2016/06/27 19:31:07
aside: these bytestreamTrackIDs ("2" and "1") are
servolk
2016/06/29 22:23:24
Acknowledged.
servolk
2016/06/29 22:23:24
Acknowledged.
| |
85 new TrackDefault("video", "video-language", "video-label", [ "main"], "1") | |
86 ]; | |
87 var trackDefaultList = new TrackDefaultList(originalTrackDefault s.slice()); | |
88 sourceBuffer.trackDefaults = trackDefaultList; | |
89 | |
90 var expectedAudioTrackInfo = { id: "2", kind: "main", label: "au dio-label", language: "audio-language" }; | |
wolenetz
2016/06/27 19:31:07
This "2" is a generated track ID, not the same as
servolk
2016/06/29 22:23:25
Acknowledged.
| |
91 var expectedVideoTrackInfo = { id: "1", kind: "main", label: "vi deo-label", language: "video-language" }; | |
92 | |
93 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func_done()); | |
94 }, "Track defaults processing in the init segment algorithm (explici t bytestream ids)"); | |
95 | |
96 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData) | |
97 { | |
98 var originalTrackDefaults = [ | |
99 new TrackDefault("audio", "audio-language", "audio-label", [ "main"], ""), | |
100 new TrackDefault("video", "video-language", "video-label", [ "main"], "") | |
101 ]; | |
102 var trackDefaultList = new TrackDefaultList(originalTrackDefault s.slice()); | |
103 sourceBuffer.trackDefaults = trackDefaultList; | |
104 | |
105 var expectedAudioTrackInfo = { id: "2", kind: "main", label: "au dio-label", language: "audio-language" }; | |
wolenetz
2016/06/27 19:31:07
ditto: more generic track ID uniqueness verificati
servolk
2016/06/29 22:23:25
Acknowledged.
| |
106 var expectedVideoTrackInfo = { id: "1", kind: "main", label: "vi deo-label", language: "video-language" }; | |
107 | |
108 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func_done()); | |
109 }, "Track defaults processing in the init segment algorithm (no byte stream ids)"); | |
110 | |
111 </script> | |
112 </body> | |
113 </html> | |
OLD | NEW |