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

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: Extend tests 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>
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.kind, expectedTrackInfo.kind, trackType + ". kind");
12 assert_equals(track.label, expectedTrackInfo.label, trackType + ".label");
13 assert_equals(track.language, expectedTrackInfo.language, trackT ype + ".language");
14 }
15
16 function loadMediaAndVerifyAddedTracks(test, mediaElement, segmentIn fo, sourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, suc cessCallback)
17 {
18 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
19 test.expectEvent(sourceBuffer.audioTracks, "addtrack", "sourceBu ffer.audioTracks addtrack event");
20 test.expectEvent(sourceBuffer.videoTracks, "addtrack", "sourceBu ffer.videoTracks addtrack event");
21 test.expectEvent(mediaElement.audioTracks, "addtrack", "mediaEle ment.audioTracks addtrack event");
22 test.expectEvent(mediaElement.videoTracks, "addtrack", "mediaEle ment.videoTracks addtrack event");
23 test.expectEvent(mediaElement, "loadedmetadata", "loadedmetadata done.");
24 test.expectEvent(sourceBuffer, "updateend", "initSegment append ended.");
25 sourceBuffer.appendBuffer(initSegment);
26 test.waitForExpectedEvents(function()
27 {
28 assert_equals(sourceBuffer.audioTracks.length, 1, "audioTrac ks.length");
29 verifyTrackProperties("audio", sourceBuffer.audioTracks[0], expectedAudioTrackInfo);
30 assert_equals(sourceBuffer.audioTracks[0].sourceBuffer, sour ceBuffer, "audioTrack.sourceBuffer");
31 // The first audio track is enabled by default.
32 assert_true(sourceBuffer.audioTracks[0].enabled, "sourceBuff er.audioTracks[0].enabled");
33
34 assert_equals(sourceBuffer.videoTracks.length, 1, "videoTrac ks.length");
35 verifyTrackProperties("audio", sourceBuffer.videoTracks[0], expectedVideoTrackInfo);
36 assert_equals(sourceBuffer.videoTracks[0].sourceBuffer, sour ceBuffer, "videoTrack.sourceBuffer");
37 // The first video track is selected by default.
38 assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuf fer.videoTracks[0].selected");
39
40 assert_not_equals(sourceBuffer.audioTracks[0].id, sourceBuff er.videoTracks[0].id, "track ids must be unique");
41
42 assert_equals(mediaElement.videoTracks.length, 1, "videoTrac ks.length");
43 assert_equals(mediaElement.videoTracks[0], sourceBuffer.vide oTracks[0], "mediaElement.videoTrack == sourceBuffer.videoTrack");
44
45 assert_equals(mediaElement.audioTracks.length, 1, "audioTrac ks.length");
46 assert_equals(mediaElement.audioTracks[0], sourceBuffer.audi oTracks[0], "mediaElement.audioTrack == sourceBuffer.audioTrack");
47
48 successCallback();
49 });
50 }
51
52 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
53 {
54 var audioTrackInfo = { kind: "main", label: "", language: "eng" };
55 var videoTrackInfo = { kind: "main", label: "", language: "eng" };
56
57 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, audioTrackInfo, videoTrackInfo, test.step_func(function ()
58 {
59 // Now append the same exact init segment again. This should succeed, but no new tracks should
60 // be added to the SourceBuffer or MediaElement.
61 test.failOnEvent(sourceBuffer.audioTracks, "addtrack", "Unex pected addtrack event on sourceBuffer.audioTracks for second init segment");
62 test.failOnEvent(sourceBuffer.videoTracks, "addtrack", "Unex pected addtrack event on sourceBuffer.videoTracks for second init segment");
63 test.failOnEvent(mediaElement.audioTracks, "addtrack", "Unex pected addtrack event on mediaElement.audioTracks for second init segment");
64 test.failOnEvent(mediaElement.videoTracks, "addtrack", "Unex pected addtrack event on mediaElement.videoTracks for second init segment");
65
66 test.expectEvent(sourceBuffer, "updateend", "InitSegment app end ended.");
67 var initSegment = MediaSourceUtil.extractSegmentData(mediaDa ta, segmentInfo.init);
68 sourceBuffer.appendBuffer(initSegment);
69 test.waitForExpectedEvents(function()
70 {
71 assert_equals(mediaElement.audioTracks.length, 1, "media Element.audioTracks.length");
72 assert_equals(mediaElement.videoTracks.length, 1, "media Element.videoTracks.length");
73 assert_equals(sourceBuffer.audioTracks.length, 1, "sourc eBuffer.audioTracks.length");
74 assert_equals(sourceBuffer.videoTracks.length, 1, "sourc eBuffer.videoTracks.length");
75 test.done();
76 });
77 }));
78 }, "Init segment received algorithm");
79
80 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
81 {
82 var originalTrackDefaults = [
83 new TrackDefault("audio", "en-US", "audio-label", ["main"], ""),
84 new TrackDefault("video", "en-US", "video-label", ["main"], "")
85 ];
86 var trackDefaultList = new TrackDefaultList(originalTrackDefault s.slice());
87 sourceBuffer.trackDefaults = trackDefaultList;
88
89 var expectedAudioTrackInfo = { kind: "main", label: "audio-label ", language: "eng" };
90 var expectedVideoTrackInfo = { kind: "main", label: "video-labe l", language: "eng" };
91
92 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func(function ()
93 {
94 test.done();
95 }));
96 }, "Track defauls processing in the init segment algorithm (no bytes tream ids)");
97
98 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
99 {
100 var originalTrackDefaults = [
101 new TrackDefault("audio", "en-US", "audio-label", ["main"], "2"),
102 new TrackDefault("video", "en-US", "video-label", ["main"], "1")
103 ];
104 var trackDefaultList = new TrackDefaultList(originalTrackDefault s.slice());
105 sourceBuffer.trackDefaults = trackDefaultList;
106
107 var expectedAudioTrackInfo = { kind: "main", label: "audio-label ", language: "eng" };
108 var expectedVideoTrackInfo = { kind: "main", label: "video-labe l", language: "eng" };
109
110 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func(function ()
111 {
112 test.done();
113 }));
114 }, "Track defauls processing in the init segment algorithm (explicit bytestream ids)");
115
116 </script>
117 </body>
118 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698