Chromium Code Reviews| 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 |