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

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

Issue 1846863002: Remove SourceBuffer media tracks on detach from media element (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blink-sb-tracks6
Patch Set: Don't attempt to remove anything if there's no tracks Created 4 years, 7 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
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <script src="/w3c/resources/testharness.js"></script> 4 <script src="/w3c/resources/testharness.js"></script>
5 <script src="/w3c/resources/testharnessreport.js"></script> 5 <script src="/w3c/resources/testharnessreport.js"></script>
6 <script src="mediasource-util.js"></script> 6 <script src="mediasource-util.js"></script>
7 7
8 <link rel='stylesheet' href='/w3c/resources/testharness.css'> 8 <link rel='stylesheet' href='/w3c/resources/testharness.css'>
wolenetz 2016/04/27 21:39:55 nit: remove this line. css is added by testharness
servolk 2016/04/27 23:41:35 Done.
9 </head> 9 </head>
10 <body> 10 <body>
11 <div id="log"></div> 11 <div id="log"></div>
wolenetz 2016/04/27 21:39:55 nit: remove this line. unnecessary now..
servolk 2016/04/27 23:41:36 Done.
12 <script> 12 <script>
13 mediasource_testafterdataloaded(function(test, mediaElement, mediaSour ce, segmentInfo, sourceBuffer, mediaData) 13 mediasource_testafterdataloaded(function(test, mediaElement, mediaSour ce, segmentInfo, sourceBuffer, mediaData)
wolenetz 2016/04/27 21:39:54 nit indent everything 2 more columns between <scri
servolk 2016/04/27 23:41:35 Done.
14 { 14 {
15 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, se gmentInfo.init); 15 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, se gmentInfo.init);
16 test.expectEvent(sourceBuffer, 'updateend', 'initSegment append en ded.');
17 test.expectEvent(sourceBuffer.audioTracks, 'addtrack', 'sourceBuff er.videoTracks addtrack event'); 16 test.expectEvent(sourceBuffer.audioTracks, 'addtrack', 'sourceBuff er.videoTracks addtrack event');
wolenetz 2016/04/27 21:39:54 nit: use either ' or ", not mixed, to contain stri
wolenetz 2016/04/27 21:39:55 nit: s/video/audio/ in message.
servolk 2016/04/27 23:41:35 Done.
servolk 2016/04/27 23:41:36 Done.
18 test.expectEvent(sourceBuffer.videoTracks, 'addtrack', 'sourceBuff er.videoTracks addtrack event'); 17 test.expectEvent(sourceBuffer.videoTracks, 'addtrack', 'sourceBuff er.videoTracks addtrack event');
19 test.expectEvent(mediaElement.audioTracks, 'addtrack', 'mediaEleme nt.videoTracks addtrack event'); 18 test.expectEvent(mediaElement.audioTracks, 'addtrack', 'mediaEleme nt.videoTracks addtrack event');
wolenetz 2016/04/27 21:39:55 nit ditto here and below as appropriate.
servolk 2016/04/27 23:41:35 Done.
20 test.expectEvent(mediaElement.videoTracks, 'addtrack', 'mediaEleme nt.videoTracks addtrack event'); 19 test.expectEvent(mediaElement.videoTracks, 'addtrack', 'mediaEleme nt.videoTracks addtrack event');
20 test.expectEvent(mediaElement, 'loadedmetadata', 'loadedmetadata d one.');
21 test.expectEvent(sourceBuffer, 'updateend', 'initSegment append en ded.');
21 sourceBuffer.appendBuffer(initSegment); 22 sourceBuffer.appendBuffer(initSegment);
22 test.waitForExpectedEvents(function() 23 test.waitForExpectedEvents(function()
23 { 24 {
24 assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.l ength"); 25 assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.l ength");
wolenetz 2016/04/27 21:39:55 nit:indentation
servolk 2016/04/27 23:41:36 Done.
25 assert_equals(sourceBuffer.videoTracks[0].id, "1", "videoTrack.i d"); 26 assert_equals(sourceBuffer.videoTracks[0].id, "1", "videoTrack.i d");
26 assert_equals(sourceBuffer.videoTracks[0].kind, "main", "videoTr ack.kind"); 27 assert_equals(sourceBuffer.videoTracks[0].kind, "main", "videoTr ack.kind");
27 assert_equals(sourceBuffer.videoTracks[0].label, "", "videoTrack .label"); 28 assert_equals(sourceBuffer.videoTracks[0].label, "", "videoTrack .label");
28 assert_equals(sourceBuffer.videoTracks[0].language, "eng", "vide oTrack.language"); 29 assert_equals(sourceBuffer.videoTracks[0].language, "eng", "vide oTrack.language");
29 assert_equals(sourceBuffer.videoTracks[0].sourceBuffer, sourceBu ffer, "videoTrack.sourceBuffer"); 30 assert_equals(sourceBuffer.videoTracks[0].sourceBuffer, sourceBu ffer, "videoTrack.sourceBuffer");
30 // The first video track is selected by default. 31 // The first video track is selected by default.
31 assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuffer. videoTracks[0].selected"); 32 assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuffer. videoTracks[0].selected");
32 33
33 assert_equals(sourceBuffer.audioTracks.length, 1, "audioTracks.l ength"); 34 assert_equals(sourceBuffer.audioTracks.length, 1, "audioTracks.l ength");
34 assert_equals(sourceBuffer.audioTracks[0].id, "2", "audioTrack.i d"); 35 assert_equals(sourceBuffer.audioTracks[0].id, "2", "audioTrack.i d");
35 assert_equals(sourceBuffer.audioTracks[0].kind, "main", "audioTr ack.kind"); 36 assert_equals(sourceBuffer.audioTracks[0].kind, "main", "audioTr ack.kind");
36 assert_equals(sourceBuffer.audioTracks[0].label, "", "audioTrack .label"); 37 assert_equals(sourceBuffer.audioTracks[0].label, "", "audioTrack .label");
37 assert_equals(sourceBuffer.audioTracks[0].language, "eng", "audi oTrack.language"); 38 assert_equals(sourceBuffer.audioTracks[0].language, "eng", "audi oTrack.language");
38 assert_equals(sourceBuffer.audioTracks[0].sourceBuffer, sourceBu ffer, "audioTrack.sourceBuffer"); 39 assert_equals(sourceBuffer.audioTracks[0].sourceBuffer, sourceBu ffer, "audioTrack.sourceBuffer");
39 // The first audio track is enabled by default. 40 // The first audio track is enabled by default.
40 assert_true(sourceBuffer.audioTracks[0].enabled, "sourceBuffer.a udioTracks[0].enabled"); 41 assert_true(sourceBuffer.audioTracks[0].enabled, "sourceBuffer.a udioTracks[0].enabled");
41 42
42 assert_equals(mediaElement.videoTracks.length, 1, "videoTracks.l ength"); 43 assert_equals(mediaElement.videoTracks.length, 1, "videoTracks.l ength");
43 assert_equals(mediaElement.videoTracks[0], sourceBuffer.videoTra cks[0], "mediaElement.videoTrack == sourceBuffer.videoTrack"); 44 assert_equals(mediaElement.videoTracks[0], sourceBuffer.videoTra cks[0], "mediaElement.videoTrack == sourceBuffer.videoTrack");
44 45
45 assert_equals(mediaElement.audioTracks.length, 1, "audioTracks.l ength"); 46 assert_equals(mediaElement.audioTracks.length, 1, "audioTracks.l ength");
46 assert_equals(mediaElement.audioTracks[0], sourceBuffer.audioTra cks[0], "mediaElement.audioTrack == sourceBuffer.audioTrack"); 47 assert_equals(mediaElement.audioTracks[0], sourceBuffer.audioTra cks[0], "mediaElement.audioTrack == sourceBuffer.audioTrack");
47 48
48 test.done(); 49 test.done();
49 }); 50 });
50 }, "MediaSource media track properties"); 51 }, "MediaSource media track properties");
52
53 mediasource_testafterdataloaded(function(test, mediaElement, mediaSour ce, segmentInfo, sourceBuffer, mediaData)
54 {
55 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, se gmentInfo.init);
56 test.expectEvent(sourceBuffer.audioTracks, 'addtrack', 'sourceBuff er.videoTracks addtrack event');
wolenetz 2016/04/27 21:39:55 nit ditto (audio <-> video) here and below as appr
servolk 2016/04/27 23:41:35 Done.
57 test.expectEvent(sourceBuffer.videoTracks, 'addtrack', 'sourceBuff er.videoTracks addtrack event');
58 test.expectEvent(mediaElement.audioTracks, 'addtrack', 'mediaEleme nt.videoTracks addtrack event');
59 test.expectEvent(mediaElement.videoTracks, 'addtrack', 'mediaEleme nt.videoTracks addtrack event');
60 test.expectEvent(mediaElement, 'loadedmetadata', 'loadedmetadata d one.');
61 test.expectEvent(sourceBuffer, 'updateend', 'initSegment append en ded.');
62 sourceBuffer.appendBuffer(initSegment);
63
64 var audioTrack;
65 var videoTrack;
66 test.waitForExpectedEvents(function()
wolenetz 2016/04/27 21:39:55 Since these first few lines are common across thes
servolk 2016/04/27 23:41:35 Done.
67 {
68 assert_equals(mediaElement.videoTracks.length, 1, "videoTracks.l ength");
wolenetz 2016/04/27 21:39:54 nit:indentation
servolk 2016/04/27 23:41:35 Done.
69 assert_equals(mediaElement.audioTracks.length, 1, "audioTracks.l ength");
70 assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.l ength");
71 assert_equals(sourceBuffer.audioTracks.length, 1, "audioTracks.l ength");
72
73 // The first video track is selected by default.
74 videoTrack = sourceBuffer.videoTracks[0];
75 assert_true(videoTrack.selected, "sourceBuffer.videoTracks[0].se lected");
76 assert_equals(videoTrack.sourceBuffer, sourceBuffer, "videoTrack .sourceBuffer");
77 // The first audio track is enabled by default.
78 audioTrack = sourceBuffer.audioTracks[0];
79 assert_true(audioTrack.enabled, "sourceBuffer.audioTracks[0].ena bled");
80 assert_equals(audioTrack.sourceBuffer, sourceBuffer, "audioTrack .sourceBuffer");
81
82 test.expectEvent(sourceBuffer.audioTracks, 'removetrack', 'sourc eBuffer.videoTracks removetrack event');
wolenetz 2016/04/27 21:39:55 nit ditto (audio <-> video) here and below as appr
servolk 2016/04/27 23:41:35 Done.
83 test.expectEvent(sourceBuffer.videoTracks, 'removetrack', 'sourc eBuffer.videoTracks removetrack event');
84 test.expectEvent(mediaElement.audioTracks, 'removetrack', 'media Element.videoTracks removetrack event');
85 test.expectEvent(mediaElement.videoTracks, 'removetrack', 'media Element.videoTracks removetrack event');
86 // Removing enabled audio track and selected video track should fire 'change' events on mediaElement track lists.
87 test.expectEvent(mediaElement.audioTracks, 'change', 'mediaEleme nt.audioTracks changed.');
88 test.expectEvent(mediaElement.videoTracks, 'change', 'mediaEleme nt.videoTracks changed.');
89 test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffer' , 'mediaSource.sourceBuffers removesourcebuffer event');
90 mediaSource.removeSourceBuffer(sourceBuffer);
91 });
92
93 test.waitForExpectedEvents(function()
94 {
95 assert_equals(mediaSource.sourceBuffers.length, 0, "mediaSource. sourceBuffers.length");
wolenetz 2016/04/27 21:39:55 nit:indentation
servolk 2016/04/27 23:41:35 Done.
96 assert_equals(mediaElement.videoTracks.length, 0, "videoTracks.l ength");
97 assert_equals(mediaElement.audioTracks.length, 0, "audioTracks.l ength");
98 assert_equals(sourceBuffer.videoTracks.length, 0, "videoTracks.l ength");
99 assert_equals(sourceBuffer.audioTracks.length, 0, "audioTracks.l ength");
100 // Since audio and video tracks have been removed, their .source Buffer property should be null now.
101 assert_equals(audioTrack.sourceBuffer, null, "audioTrack.sourceB uffer");
102 assert_equals(videoTrack.sourceBuffer, null, "videoTrack.sourceB uffer");
103 test.done();
104 });
105 }, "MediaSource media tracks must be removed when a SourceBuffer is re moved");
51 </script> 106 </script>
wolenetz 2016/04/27 21:39:55 Please add a test specifically for this removal al
servolk 2016/04/27 23:41:36 Done.
52 </body> 107 </body>
53 </html> 108 </html>
54 109
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698