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

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: Don't check track ids in tests Created 4 years, 5 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("video", 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 expectedAudioTrackInfo = { kind: "main", label: "", language : "" };
55 var expectedVideoTrackInfo = { kind: "main", label: "", language : "" };
56
57 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_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 }, "Same init segment appended twice");
79
80 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
81 {
82 var originalTrackDefaults = [
83 new TrackDefault("audio", "audio-language", "audio-label", [ "main"], "2"),
84 new TrackDefault("video", "video-language", "video-label", [ "main"], "1")
85 ];
86 var trackDefaultList = new TrackDefaultList(originalTrackDefault s.slice());
87 sourceBuffer.trackDefaults = trackDefaultList;
88
89 var expectedAudioTrackInfo = { kind: "main", label: "audio-label ", language: "audio-language" };
90 var expectedVideoTrackInfo = { kind: "main", label: "video-label ", language: "video-language" };
91
92 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func_done());
93 }, "Track defaults processing in the init segment algorithm (explici t bytestream ids)");
94
95 mediasource_testafterdataloaded(function(test, mediaElement, mediaSo urce, segmentInfo, sourceBuffer, mediaData)
96 {
97 var originalTrackDefaults = [
98 new TrackDefault("audio", "audio-language", "audio-label", [ "main"], ""),
99 new TrackDefault("video", "video-language", "video-label", [ "main"], "")
100 ];
101 var trackDefaultList = new TrackDefaultList(originalTrackDefault s.slice());
102 sourceBuffer.trackDefaults = trackDefaultList;
103
104 var expectedAudioTrackInfo = { kind: "main", label: "audio-label ", language: "audio-language" };
105 var expectedVideoTrackInfo = { kind: "main", label: "video-label ", language: "video-language" };
106
107 loadMediaAndVerifyAddedTracks(test, mediaElement, segmentInfo, s ourceBuffer, mediaData, expectedAudioTrackInfo, expectedVideoTrackInfo, test.ste p_func_done());
108 }, "Track defaults processing in the init segment algorithm (no byte stream ids)");
109
110 </script>
111 </body>
112 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698