Index: LayoutTests/http/tests/media/media-source/mediasource-append-buffer.html |
diff --git a/LayoutTests/http/tests/media/media-source/mediasource-append-buffer.html b/LayoutTests/http/tests/media/media-source/mediasource-append-buffer.html |
index 16347a57dbf6bfc4311f68b2957c956789e40531..175bbe369dd2ca67ddcf72d3f1a81726810e0f35 100644 |
--- a/LayoutTests/http/tests/media/media-source/mediasource-append-buffer.html |
+++ b/LayoutTests/http/tests/media/media-source/mediasource-append-buffer.html |
@@ -345,6 +345,68 @@ |
mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
{ |
var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); |
+ var halfIndex = (initSegment.length + 1) / 2; |
+ var partialInitSegment = initSegment.subarray(0, halfIndex); |
+ var remainingInitSegment = initSegment.subarray(halfIndex); |
+ var mediaSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]); |
+ |
+ test.expectEvent(sourceBuffer, "updateend", "partialInitSegment append ended."); |
wolenetz
2014/07/26 00:07:14
eek! :) there's lots of " vs ' inconsistency in th
prabhur1
2014/07/28 21:36:48
Done.
|
+ sourceBuffer.appendBuffer(partialInitSegment); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ test.expectEvent(sourceBuffer, "updateend", "remainingInitSegment append ended."); |
wolenetz
2014/07/26 00:07:14
Also, verify the init segment received algorithm h
prabhur1
2014/07/28 21:36:48
Done.
|
+ sourceBuffer.appendBuffer(remainingInitSegment); |
wolenetz
2014/07/26 00:07:15
Also, expect loadedmetadata event on media element
prabhur1
2014/07/28 21:36:48
Done.
|
+ }); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ test.expectEvent(sourceBuffer, "updateend", "mediaSegment append ended."); |
wolenetz
2014/07/26 00:07:14
Also, verify the init segment received algorithm H
prabhur1
2014/07/28 21:36:48
Done.
|
+ test.expectEvent(mediaElement, "loadeddata", "loadeddata fired."); |
+ sourceBuffer.appendBuffer(mediaSegment); |
+ }); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ assert_equals(sourceBuffer.updating, false); |
wolenetz
2014/07/26 00:07:15
Also verify HAVE_CURRENT_DATA readyState, though t
prabhur1
2014/07/28 21:36:47
Done.
prabhur1
2014/07/28 21:36:48
It appears to be responding with HAVE_ENOUGH_DATA
wolenetz
2014/07/29 22:33:20
Acknowledged.
|
+ test.done(); |
+ }); |
+ }, "Test appendBuffer with partial init segments."); |
+ |
+ mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
+ { |
+ var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); |
+ var mediaSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]); |
+ var halfIndex = (mediaSegment.length + 1) / 2; |
+ var partialMediaSegment = mediaSegment.subarray(0, halfIndex); |
+ var remainingMediaSegment = mediaSegment.subarray(halfIndex); |
+ |
+ test.expectEvent(sourceBuffer, "updateend", "InitSegment append ended."); |
wolenetz
2014/07/26 00:07:14
nit: also expect loadedmetadata?
prabhur1
2014/07/28 21:36:48
Done.
|
+ sourceBuffer.appendBuffer(initSegment); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ test.expectEvent(sourceBuffer, "updateend", "partial media segment append ended."); |
wolenetz
2014/07/26 00:07:14
verify HAVE_METADATA readyState and non-NaN durati
prabhur1
2014/07/28 21:36:48
Done.
|
+ sourceBuffer.appendBuffer(partialMediaSegment); |
+ }); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ test.expectEvent(sourceBuffer, "updateend", "mediaSegment append ended."); |
wolenetz
2014/07/26 00:07:14
// Aside: we cannot assume HAVE_CURRENT_DATA at th
prabhur1
2014/07/28 21:36:48
Done.
|
+ test.expectEvent(mediaElement, "loadeddata", "loadeddata fired."); |
+ sourceBuffer.appendBuffer(remainingMediaSegment); |
+ }); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ assert_equals(sourceBuffer.updating, false); |
wolenetz
2014/07/26 00:07:14
verify >= HAVE_CURRENT_DATA element readyState (bu
prabhur1
2014/07/28 21:36:48
Done.
|
+ test.done(); |
+ }); |
+ }, "Test appendBuffer with partial media segments."); |
+ |
+ mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
+ { |
+ var initSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.init); |
var partialInitSegment = initSegment.subarray(0, initSegment.length / 2); |
var mediaSegment = MediaSourceUtil.extractSegmentData(mediaData, segmentInfo.media[0]); |
@@ -415,7 +477,60 @@ |
test.done(); |
}); |
}, "Test abort in the middle of a media segment."); |
+ |
+ mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
+ { |
+ test.expectEvent(mediaSource.activeSourceBuffers, "removesourcebuffer", "SourceBuffer removed."); |
wolenetz
2014/07/26 00:07:14
I think this line is actually testing non-complian
prabhur1
2014/07/28 21:36:47
New test added to mediasource-removesourcebuffer.h
prabhur1
2014/07/28 21:36:48
Done.
|
+ mediaSource.removeSourceBuffer(sourceBuffer); |
+ test.waitForExpectedEvents(function() |
+ { |
+ assert_throws("InvalidStateError", |
+ function() { sourceBuffer.abort(); }, |
+ "sourceBuffer.abort() throws an exception for InvalidStateError."); |
+ |
+ test.done(); |
+ }); |
wolenetz
2014/07/26 00:07:14
nit: remove empty line.
prabhur1
2014/07/28 21:36:47
Done.
|
+ }, "Test abort after removing sourcebuffer."); |
+ |
+ mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
+ { |
+ test.expectEvent(mediaSource, 'sourceended', "source ended"); |
+ |
+ assert_equals(mediaSource.readyState, 'open', "readyState is open."); |
+ mediaSource.endOfStream(); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ assert_equals(mediaSource.readyState, 'ended', "readyState is ended."); |
+ assert_throws("InvalidStateError", |
+ function() { sourceBuffer.abort(); }, |
+ "sourceBuffer.abort() throws an exception for InvalidStateError."); |
+ |
+ test.done(); |
+ }); |
+ |
+ }, "Test abort after readyState is ended."); |
+ |
+ mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) |
+ { |
+ test.failOnEvent(mediaElement, "error"); |
wolenetz
2014/07/26 00:07:13
This is already done in mediasource_testafterdatal
prabhur1
2014/07/28 21:36:48
Done.
|
+ |
+ test.expectEvent(sourceBuffer, "updatestart", "Append started."); |
+ test.expectEvent(sourceBuffer, "updateend", "Append ended."); |
+ sourceBuffer.appendBuffer(mediaData); |
+ |
+ test.waitForExpectedEvents(function() |
+ { |
+ assert_false(sourceBuffer.updating, "updating attribute is false"); |
+ sourceBuffer.abort(); |
+ assert_equals(sourceBuffer.appendWindowStart, 0, "appendWindowStart is reset to 0"); |
wolenetz
2014/07/26 00:07:14
Improve this test by setting non-default appendwin
prabhur1
2014/07/28 21:36:47
Done.
|
+ assert_equals(sourceBuffer.appendWindowEnd, Number.POSITIVE_INFINITY, |
+ "appendWindowEnd is reset to +INFINITY"); |
wolenetz
2014/07/26 00:07:15
nit: indentation
prabhur1
2014/07/28 21:36:48
Done.
|
+ test.done(); |
+ }); |
+ }, "Test abort after appendBuffer."); |
wolenetz
2014/07/26 00:07:15
nit: s/ffer/ffer update ends/
prabhur1
2014/07/28 21:36:48
Done.
|
+ |
mediasource_test(function(test, mediaElement, mediaSource) |
{ |
var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.VIDEO_ONLY_TYPE); |