Chromium Code Reviews| 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..1bc1a1406f85c663d16da2f9d08f0acabea892d2 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 |
| @@ -4,50 +4,122 @@ |
| <script src="/w3c/resources/testharness.js"></script> |
| <script src="/w3c/resources/testharnessreport.js"></script> |
| <script src="mediasource-util.js"></script> |
| - |
| - <link rel='stylesheet' href='/w3c/resources/testharness.css'> |
| </head> |
| <body> |
| - <div id="log"></div> |
| <script> |
| - mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| - { |
| - var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); |
| - test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.'); |
| - test.expectEvent(sourceBuffer.audioTracks, 'addtrack', 'sourceBuffer.videoTracks addtrack event'); |
| - 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'); |
| - sourceBuffer.appendBuffer(initSegment); |
| - test.waitForExpectedEvents(function() |
| - { |
| - assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.length"); |
| - assert_equals(sourceBuffer.videoTracks[0].id, "1", "videoTrack.id"); |
| - assert_equals(sourceBuffer.videoTracks[0].kind, "main", "videoTrack.kind"); |
| - assert_equals(sourceBuffer.videoTracks[0].label, "", "videoTrack.label"); |
| - assert_equals(sourceBuffer.videoTracks[0].language, "eng", "videoTrack.language"); |
| - assert_equals(sourceBuffer.videoTracks[0].sourceBuffer, sourceBuffer, "videoTrack.sourceBuffer"); |
| - // The first video track is selected by default. |
| - assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuffer.videoTracks[0].selected"); |
| + function loadMediaAndVerifyAddedTracks(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, successCallback) |
|
wolenetz
2016/04/28 00:46:47
nit: mediaSource is unused param. remove please.
servolk
2016/04/28 18:37:53
Done.
|
| + { |
| + var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); |
| + test.expectEvent(sourceBuffer.audioTracks, "addtrack", "sourceBuffer.audioTracks addtrack event"); |
| + test.expectEvent(sourceBuffer.videoTracks, "addtrack", "sourceBuffer.videoTracks addtrack event"); |
| + test.expectEvent(mediaElement.audioTracks, "addtrack", "mediaElement.audioTracks 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); |
| + test.waitForExpectedEvents(function() |
| + { |
| + assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.length"); |
| + assert_equals(sourceBuffer.videoTracks[0].id, "1", "videoTrack.id"); |
|
wolenetz
2016/04/28 00:46:46
nit: to help upstream this, all that's needed is f
servolk
2016/04/28 18:37:53
Done.
|
| + assert_equals(sourceBuffer.videoTracks[0].kind, "main", "videoTrack.kind"); |
| + assert_equals(sourceBuffer.videoTracks[0].label, "", "videoTrack.label"); |
| + assert_equals(sourceBuffer.videoTracks[0].language, "eng", "videoTrack.language"); |
| + assert_equals(sourceBuffer.videoTracks[0].sourceBuffer, sourceBuffer, "videoTrack.sourceBuffer"); |
| + // The first video track is selected by default. |
| + assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuffer.videoTracks[0].selected"); |
| + |
| + assert_equals(sourceBuffer.audioTracks.length, 1, "audioTracks.length"); |
| + assert_equals(sourceBuffer.audioTracks[0].id, "2", "audioTrack.id"); |
|
wolenetz
2016/04/28 00:46:47
nit ditto
servolk
2016/04/28 18:37:52
Done.
|
| + assert_equals(sourceBuffer.audioTracks[0].kind, "main", "audioTrack.kind"); |
| + assert_equals(sourceBuffer.audioTracks[0].label, "", "audioTrack.label"); |
| + assert_equals(sourceBuffer.audioTracks[0].language, "eng", "audioTrack.language"); |
| + assert_equals(sourceBuffer.audioTracks[0].sourceBuffer, sourceBuffer, "audioTrack.sourceBuffer"); |
| + // The first audio track is enabled by default. |
| + assert_true(sourceBuffer.audioTracks[0].enabled, "sourceBuffer.audioTracks[0].enabled"); |
| + |
| + assert_equals(mediaElement.videoTracks.length, 1, "videoTracks.length"); |
| + assert_equals(mediaElement.videoTracks[0], sourceBuffer.videoTracks[0], "mediaElement.videoTrack == sourceBuffer.videoTrack"); |
| + |
| + assert_equals(mediaElement.audioTracks.length, 1, "audioTracks.length"); |
| + assert_equals(mediaElement.audioTracks[0], sourceBuffer.audioTracks[0], "mediaElement.audioTrack == sourceBuffer.audioTrack"); |
| + |
| + successCallback(); |
| + }); |
| + } |
| + |
| + mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| + { |
| + loadMediaAndVerifyAddedTracks(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function() { test.done(); }); |
| + }, "Check that media tracks and their properties are populated properly"); |
| + function verifyTrackRemoval(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, trackRemovalAction, successCallback) { |
|
wolenetz
2016/04/28 00:46:46
nit: mediaSource, segmentInfo, mediaData are unuse
servolk
2016/04/28 18:37:53
mediaSource is used to verify that sourceBuffers c
wolenetz
2016/04/28 18:48:29
Acknowledged.
|
| assert_equals(sourceBuffer.audioTracks.length, 1, "audioTracks.length"); |
| - assert_equals(sourceBuffer.audioTracks[0].id, "2", "audioTrack.id"); |
| - assert_equals(sourceBuffer.audioTracks[0].kind, "main", "audioTrack.kind"); |
| - assert_equals(sourceBuffer.audioTracks[0].label, "", "audioTrack.label"); |
| - assert_equals(sourceBuffer.audioTracks[0].language, "eng", "audioTrack.language"); |
| - assert_equals(sourceBuffer.audioTracks[0].sourceBuffer, sourceBuffer, "audioTrack.sourceBuffer"); |
| - // The first audio track is enabled by default. |
| assert_true(sourceBuffer.audioTracks[0].enabled, "sourceBuffer.audioTracks[0].enabled"); |
| + assert_equals(sourceBuffer.videoTracks.length, 1, "videoTracks.length"); |
| + assert_true(sourceBuffer.videoTracks[0].selected, "sourceBuffer.videoTracks[0].selected"); |
| + |
| + var audioTrack = sourceBuffer.audioTracks[0]; |
| + var videoTrack = sourceBuffer.videoTracks[0]; |
| + |
| + // Verify removetrack events. |
| + test.expectEvent(sourceBuffer.audioTracks, "removetrack", "sourceBuffer.audioTracks removetrack event"); |
| + test.expectEvent(sourceBuffer.videoTracks, "removetrack", "sourceBuffer.videoTracks removetrack event"); |
| + test.expectEvent(mediaElement.audioTracks, "removetrack", "mediaElement.audioTracks 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."); |
| + |
| + trackRemovalAction(); |
| + |
| + test.waitForExpectedEvents(function() |
| + { |
| + assert_equals(mediaSource.sourceBuffers.length, 0, "mediaSource.sourceBuffers.length"); |
| + 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"); |
| + successCallback(); |
| + }); |
| + } |
| + |
| + mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| + { |
| + loadMediaAndVerifyAddedTracks(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function() { |
|
wolenetz
2016/04/28 00:46:47
nit: s/function()/test.step_func()/
servolk
2016/04/28 18:37:53
Done.
|
| + verifyTrackRemoval(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function removeSB() { |
|
wolenetz
2016/04/28 00:46:46
nit: s/function removeSB()/test.step_func()/
servolk
2016/04/28 18:37:53
Done.
|
| + mediaSource.removeSourceBuffer(sourceBuffer); |
| + }, function successCallback() { |
|
wolenetz
2016/04/28 00:46:46
nit: s/function successCallback(){...}/test.step_f
servolk
2016/04/28 18:37:52
Done.
|
| + test.done(); |
| + }); |
| + }); |
| + }, "Media tracks must be removed when the SourceBuffer is removed from the MediaSource"); |
| - assert_equals(mediaElement.videoTracks.length, 1, "videoTracks.length"); |
| - assert_equals(mediaElement.videoTracks[0], sourceBuffer.videoTracks[0], "mediaElement.videoTrack == sourceBuffer.videoTrack"); |
| + mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| + { |
| + loadMediaAndVerifyAddedTracks(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function() { |
|
wolenetz
2016/04/28 00:46:47
nit ditto
servolk
2016/04/28 18:37:52
Done.
|
| + verifyTrackRemoval(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function removeSB() { |
|
wolenetz
2016/04/28 00:46:47
nit ditto
servolk
2016/04/28 18:37:52
Done.
|
| + mediaElement.src = ""; |
| + }, function successCallback() { |
|
wolenetz
2016/04/28 00:46:47
nit ditto
servolk
2016/04/28 18:37:52
Done.
|
| + test.done(); |
| + }); |
| + }); |
| + }, "Media tracks must be removed when the HTMLMediaElement is reset"); |
|
wolenetz
2016/04/28 00:46:46
nit:s/is reset/src is changed/
servolk
2016/04/28 18:37:52
Done.
|
| - assert_equals(mediaElement.audioTracks.length, 1, "audioTracks.length"); |
| - assert_equals(mediaElement.audioTracks[0], sourceBuffer.audioTracks[0], "mediaElement.audioTrack == sourceBuffer.audioTrack"); |
| + mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| + { |
| + loadMediaAndVerifyAddedTracks(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function() { |
|
wolenetz
2016/04/28 00:46:47
nit ditto
servolk
2016/04/28 18:37:52
Done.
|
| + verifyTrackRemoval(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData, function removeSB() { |
|
wolenetz
2016/04/28 00:46:46
nit ditto
servolk
2016/04/28 18:37:53
Done.
|
| + mediaElement.load(); |
| + }, function successCallback() { |
| + test.done(); |
|
wolenetz
2016/04/28 00:46:46
nit ditto
servolk
2016/04/28 18:37:52
Done.
|
| + }); |
| + }); |
| + }, "Media tracks must be removed when the HTMLMediaElement is reset"); |
|
wolenetz
2016/04/28 00:46:46
nit:s/is reset/load() is called/
servolk
2016/04/28 18:37:53
Done.
|
| - test.done(); |
| - }); |
| - }, "MediaSource media track properties"); |
| </script> |
| </body> |
| </html> |