Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-initsegmentreceived-alg.html

Issue 1678523003: Implement InitSegmentReceived algorithm in blink (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blink-sb-audiotrack
Patch Set: rebase Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698