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

Unified 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, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-avtracks.html
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-avtracks.html b/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-avtracks.html
index 131e1d05683727ecd9dbf16088ea921b4a7fe022..8ab1aa7a323b1704ad397b6a306129eccf4b4109 100644
--- a/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-avtracks.html
+++ b/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-avtracks.html
@@ -13,11 +13,12 @@
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, 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.
{
var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
- test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.');
test.expectEvent(sourceBuffer.audioTracks, 'addtrack', 'sourceBuffer.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.
test.expectEvent(sourceBuffer.videoTracks, 'addtrack', 'sourceBuffer.videoTracks addtrack event');
test.expectEvent(mediaElement.audioTracks, 'addtrack', 'mediaElement.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.
test.expectEvent(mediaElement.videoTracks, 'addtrack', 'mediaElement.videoTracks addtrack event');
+ test.expectEvent(mediaElement, 'loadedmetadata', 'loadedmetadata done.');
+ test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.');
sourceBuffer.appendBuffer(initSegment);
test.waitForExpectedEvents(function()
{
@@ -48,6 +49,60 @@
test.done();
});
}, "MediaSource media track properties");
+
+ mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
+ {
+ var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
+ test.expectEvent(sourceBuffer.audioTracks, 'addtrack', 'sourceBuffer.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.
+ test.expectEvent(sourceBuffer.videoTracks, 'addtrack', 'sourceBuffer.videoTracks addtrack event');
+ test.expectEvent(mediaElement.audioTracks, 'addtrack', 'mediaElement.videoTracks addtrack event');
+ test.expectEvent(mediaElement.videoTracks, 'addtrack', 'mediaElement.videoTracks addtrack event');
+ test.expectEvent(mediaElement, 'loadedmetadata', 'loadedmetadata done.');
+ test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.');
+ sourceBuffer.appendBuffer(initSegment);
+
+ var audioTrack;
+ var videoTrack;
+ 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.
+ {
+ assert_equals(mediaElement.videoTracks.length, 1, "videoTracks.length");
wolenetz 2016/04/27 21:39:54 nit:indentation
servolk 2016/04/27 23:41:35 Done.
+ assert_equals(mediaElement.audioTracks.length, 1, "audioTracks.length");
+ assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.length");
+ assert_equals(sourceBuffer.audioTracks.length, 1, "audioTracks.length");
+
+ // The first video track is selected by default.
+ videoTrack = sourceBuffer.videoTracks[0];
+ assert_true(videoTrack.selected, "sourceBuffer.videoTracks[0].selected");
+ assert_equals(videoTrack.sourceBuffer, sourceBuffer, "videoTrack.sourceBuffer");
+ // The first audio track is enabled by default.
+ audioTrack = sourceBuffer.audioTracks[0];
+ assert_true(audioTrack.enabled, "sourceBuffer.audioTracks[0].enabled");
+ assert_equals(audioTrack.sourceBuffer, sourceBuffer, "audioTrack.sourceBuffer");
+
+ test.expectEvent(sourceBuffer.audioTracks, 'removetrack', 'sourceBuffer.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.
+ test.expectEvent(sourceBuffer.videoTracks, 'removetrack', 'sourceBuffer.videoTracks removetrack event');
+ test.expectEvent(mediaElement.audioTracks, 'removetrack', 'mediaElement.videoTracks removetrack event');
+ test.expectEvent(mediaElement.videoTracks, 'removetrack', 'mediaElement.videoTracks removetrack event');
+ // Removing enabled audio track and selected video track should fire 'change' events on mediaElement track lists.
+ test.expectEvent(mediaElement.audioTracks, 'change', 'mediaElement.audioTracks changed.');
+ test.expectEvent(mediaElement.videoTracks, 'change', 'mediaElement.videoTracks changed.');
+ test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffer', 'mediaSource.sourceBuffers removesourcebuffer event');
+ mediaSource.removeSourceBuffer(sourceBuffer);
+ });
+
+ test.waitForExpectedEvents(function()
+ {
+ 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.
+ assert_equals(mediaElement.videoTracks.length, 0, "videoTracks.length");
+ assert_equals(mediaElement.audioTracks.length, 0, "audioTracks.length");
+ assert_equals(sourceBuffer.videoTracks.length, 0, "videoTracks.length");
+ assert_equals(sourceBuffer.audioTracks.length, 0, "audioTracks.length");
+ // Since audio and video tracks have been removed, their .sourceBuffer property should be null now.
+ assert_equals(audioTrack.sourceBuffer, null, "audioTrack.sourceBuffer");
+ assert_equals(videoTrack.sourceBuffer, null, "videoTrack.sourceBuffer");
+ test.done();
+ });
+ }, "MediaSource media tracks must be removed when a SourceBuffer is removed");
</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.
</body>
</html>

Powered by Google App Engine
This is Rietveld 408576698