4 <script src="/media-resources/video-test.js"></script>
5 <script src="/media/resources/media-source/webm/segment-info.js"></script>
6 <script src="webkitmediasource-util.js"></script>
8 var segmentHelper = new MediaSourceTest.SegmentHelper(WebMSegmentInfo.testWebM);
10 function appendUntilMetadataLoaded(videoTag, doneCallback)
12 segmentHelper.appendMediaSegment(0);
13 segmentHelper.appendMediaSegment(1);
15 var eventHandler = function(event)
17 videoTag.removeEventListener('loadedmetadata', eventHandler);
20 videoTag.addEventListener('loadedmetadata', eventHandler);
23 function didNotSendInitSegmentFirst(runNextTestCase, videoTag)
25 consoleWrite("Test appending a media segment before sending the initialization segment.");
26 segmentHelper.addSourceBuffer();
27 segmentHelper.appendMediaSegment(0);
30 function immediateDecodeErrorViaEndOfStream(runNextTestCase, videoTag)
32 consoleWrite("Test signalling a decode error with MediaSource.endOfStream.");
33 mediaSource = event.target;
34 mediaSource.endOfStream("decode");
37 function immediateNetworkErrorViaEndOfStream(runNextTestCase, videoTag)
39 consoleWrite("Test signalling a network error with MediaSource.endOfStream.");
40 mediaSource = event.target;
41 mediaSource.endOfStream("network");
44 function decodeErrorAfterHaveMetadata(runNextTestCase, videoTag)
46 consoleWrite("Test signalling a decode error with MediaSource.endOfStream after we have appended enough data to get to the HAVE_METADATA state.");
47 mediaSource = event.target;
48 segmentHelper.addSourceBuffer();
49 segmentHelper.appendInitSegment();
51 appendUntilMetadataLoaded(videoTag, function()
53 mediaSource.endOfStream("decode");
57 function networkErrorAfterHaveMetadata(runNextTestCase, videoTag)
59 consoleWrite("Test signalling a network error with MediaSource.endOfStream after we have appended enough data to get to the HAVE_METADATA state.");
60 mediaSource = event.target;
61 segmentHelper.addSourceBuffer();
62 segmentHelper.appendInitSegment();
63 appendUntilMetadataLoaded(videoTag, function()
65 mediaSource.endOfStream("network");
73 waitForEvent('loadedmetadata');
74 waitForEvent('webkitsourceopen', "", false, false, mediaSource);
75 waitForEvent('playing');
76 waitForEvent('webkitsourceended', "", false, false, mediaSource);
77 waitForEvent('ended');
78 waitForEvent('emptied');
80 segmentHelper.init(video, function(success)
83 failTest("Failed to load segment data");
88 didNotSendInitSegmentFirst,
89 immediateDecodeErrorViaEndOfStream,
90 immediateNetworkErrorViaEndOfStream,
91 decodeErrorAfterHaveMetadata,
92 networkErrorAfterHaveMetadata
95 MediaSourceTest.startSourceOpenTesting(video, testCases);
100 <body onload="onLoad()">
102 <p>Tests error cases with MediaSource API</p>