| Index: LayoutTests/http/tests/media/media-source/mediasource-buffered.html
|
| diff --git a/LayoutTests/http/tests/media/media-source/mediasource-buffered.html b/LayoutTests/http/tests/media/media-source/mediasource-buffered.html
|
| index 3c34916fe61c1548633907db5980338038184ba3..20ce8c89d3d1bd0d4e7e2848f13f2a4bbd362e11 100644
|
| --- a/LayoutTests/http/tests/media/media-source/mediasource-buffered.html
|
| +++ b/LayoutTests/http/tests/media/media-source/mediasource-buffered.html
|
| @@ -38,7 +38,7 @@
|
| {
|
| mediaSource.addSourceBuffer(typeA);
|
| mediaSource.addSourceBuffer(typeB);
|
| - assert_equals(mediaSource.activeSourceBuffers.length, 2);
|
| + assert_equals(mediaSource.sourceBuffers.length, 2);
|
|
|
| callback(test, mediaElement, mediaSource, dataA, dataB);
|
| });
|
| @@ -46,27 +46,54 @@
|
| }, description);
|
| };
|
|
|
| - function appendData(test, mediaSource, dataA, dataB, callback)
|
| + function appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, swapAppendBufferOrder, forceParsingOrder, callback)
|
| {
|
| - var sourceBufferA = mediaSource.activeSourceBuffers[0];
|
| - var sourceBufferB = mediaSource.activeSourceBuffers[1];
|
| -
|
| - test.expectEvent(sourceBufferA, 'update');
|
| - test.expectEvent(sourceBufferA, 'updateend');
|
| - sourceBufferA.appendBuffer(dataA);
|
| + // Verification here assumes no prior initialization segment received for any of mediaSource's sourceBuffers.
|
| + assert_equals(mediaSource.sourceBuffers.length, 2, 'mediaSource sourceBuffers length before appends');
|
| + assert_equals(mediaSource.activeSourceBuffers.length, 0, 'mediaSource activeSourceBuffers length before appends');
|
| + var sourceBufferA = mediaSource.sourceBuffers[0];
|
| + var sourceBufferB = mediaSource.sourceBuffers[1];
|
| +
|
| + var firstBuffer = swapAppendBufferOrder ? sourceBufferB : sourceBufferA;
|
| + var firstData = swapAppendBufferOrder ? dataB : dataA;
|
| + var secondBuffer = swapAppendBufferOrder ? sourceBufferA : sourceBufferB;
|
| + var secondData = swapAppendBufferOrder ? dataA : dataB;
|
| +
|
| + test.expectEvent(firstBuffer, 'update');
|
| + test.expectEvent(firstBuffer, 'updateend');
|
| + firstBuffer.appendBuffer(firstData);
|
| +
|
| + var doSecondAppend = function()
|
| + {
|
| + test.expectEvent(secondBuffer, 'update');
|
| + test.expectEvent(secondBuffer, 'updateend');
|
| + secondBuffer.appendBuffer(secondData);
|
| + };
|
|
|
| - test.expectEvent(sourceBufferB, 'update');
|
| - test.expectEvent(sourceBufferB, 'updateend');
|
| - sourceBufferB.appendBuffer(dataB);
|
| + if (forceParsingOrder) {
|
| + test.waitForExpectedEvents(function()
|
| + {
|
| + assert_equals(mediaSource.sourceBuffers.length, 2, 'mediaSource sourceBuffers length between completed appends');
|
| + assert_equals(mediaSource.activeSourceBuffers.length, 1, 'mediaSource activeSourceBuffers length between completed appends');
|
| + assert_equals(mediaSource.activeSourceBuffers[0], firstBuffer);
|
| + doSecondAppend();
|
| + });
|
| + } else {
|
| + doSecondAppend();
|
| + }
|
|
|
| test.waitForExpectedEvents(function()
|
| {
|
| - callback();
|
| + assert_equals(mediaSource.sourceBuffers.length, 2, 'mediaSource sourceBuffers length after appends completed');
|
| + assert_equals(mediaSource.activeSourceBuffers.length, 2, 'mediaSource activeSourceBuffers length after appends completed');
|
| + assert_equals(mediaSource.activeSourceBuffers[0], sourceBufferA);
|
| + assert_equals(mediaSource.activeSourceBuffers[1], sourceBufferB);
|
| + callback();
|
| });
|
| }
|
|
|
| mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
|
| - appendData(test, mediaSource, dataA, dataB, function()
|
| + appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, false, false, function()
|
| {
|
| assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
|
| assertBufferedEquals(mediaSource.activeSourceBuffers[1], expectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
|
| @@ -82,6 +109,26 @@
|
| });
|
| }, 'Demuxed content with different lengths');
|
|
|
| + mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
|
| + appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, false, true, function()
|
| + {
|
| + assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
|
| + assertBufferedEquals(mediaSource.activeSourceBuffers[1], expectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
|
| + assertBufferedEquals(mediaElement, expectationsB[subType], 'mediaElement.buffered');
|
| + test.done();
|
| + });
|
| + }, 'Process first init segment for sourceBuffer[0] first');
|
| +
|
| + mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
|
| + appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB, true, true, function()
|
| + {
|
| + assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
|
| + assertBufferedEquals(mediaSource.activeSourceBuffers[1], expectationsB[subType], 'mediaSource.activeSourceBuffers[1]');
|
| + assertBufferedEquals(mediaElement, expectationsB[subType], 'mediaElement.buffered');
|
| + test.done();
|
| + });
|
| + }, 'Process first init segment for sourceBuffer[1] first');
|
| +
|
| mediasource_test(function(test, mediaElement, mediaSource)
|
| {
|
| mediaElement.pause();
|
| @@ -118,9 +165,8 @@
|
| });
|
| }, 'Muxed tracks with different lengths');
|
|
|
| -
|
| mediaSourceDemuxedTest(function(test, mediaElement, mediaSource, dataA, dataB) {
|
| - appendData(test, mediaSource, dataA, dataB.subarray(0, 318), function()
|
| + appendDataAndVerifyAddedToActiveSourceBuffers(test, mediaSource, dataA, dataB.subarray(0, 318), false, false, function()
|
| {
|
| assertBufferedEquals(mediaSource.activeSourceBuffers[0], expectationsA[subType], 'mediaSource.activeSourceBuffers[0]');
|
| assertBufferedEquals(mediaSource.activeSourceBuffers[1], '{ }', 'mediaSource.activeSourceBuffers[1]');
|
| @@ -171,9 +217,7 @@
|
| test.endOnEvent(mediaElement, 'ended');
|
|
|
| var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE);
|
| -
|
| - // FIXME: verify activeSourceBuffers is empty until init segment with at least
|
| - // one active track is appended.
|
| +
|
| assertBufferedEquals(mediaSource.sourceBuffers[0], '{ }', 'mediaSource.sourceBuffers[0]');
|
| assertBufferedEquals(mediaElement, '{ }', 'mediaElement.buffered');
|
| test.done();
|
| @@ -183,9 +227,9 @@
|
| mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
|
| {
|
| var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init);
|
| -
|
| +
|
| test.expectEvent(sourceBuffer, 'updateend', 'initSegment append ended.');
|
| - sourceBuffer.appendBuffer(initSegment);
|
| + sourceBuffer.appendBuffer(initSegment);
|
| test.waitForExpectedEvents(function()
|
| {
|
| assertBufferedEquals(mediaSource.sourceBuffers[0], '{ }', 'mediaSource.sourceBuffers[0]');
|
| @@ -199,7 +243,7 @@
|
| mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData)
|
| {
|
| test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffer', 'SourceBuffer removed.');
|
| - mediaSource.removeSourceBuffer(sourceBuffer);
|
| + mediaSource.removeSourceBuffer(sourceBuffer);
|
|
|
| test.waitForExpectedEvents(function()
|
| {
|
|
|