| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="/w3c/resources/testharness.js"></script> | 4 <script src="/w3c/resources/testharness.js"></script> |
| 5 <script src="/w3c/resources/testharnessreport.js"></script> | 5 <script src="/w3c/resources/testharnessreport.js"></script> |
| 6 <script src="mediasource-util.js"></script> | 6 <script src="mediasource-util.js"></script> |
| 7 | 7 |
| 8 <link rel='stylesheet' href='/w3c/resources/testharness.css'> | 8 <link rel='stylesheet' href='/w3c/resources/testharness.css'> |
| 9 </head> | 9 </head> |
| 10 <body> | 10 <body> |
| 11 <div id="log"></div> | 11 <div id="log"></div> |
| 12 <script> | 12 <script> |
| 13 function verifySourceBufferLists(mediaSource, expected) | 13 function verifySourceBufferLists(mediaSource, expected) |
| 14 { | 14 { |
| 15 assert_equals(mediaSource.sourceBuffers.length, expected.length, "
sourceBuffers length"); | 15 assert_equals(mediaSource.sourceBuffers.length, expected.length, '
sourceBuffers length'); |
| 16 assert_equals(mediaSource.activeSourceBuffers.length, expected.len
gth, "activeSourceBuffers length"); | 16 assert_equals(mediaSource.activeSourceBuffers.length, 0, 'activeSo
urceBuffers length'); |
| 17 for (var i = 0; i < expected.length; ++i) { | 17 for (var i = 0; i < expected.length; ++i) |
| 18 assert_equals(mediaSource.sourceBuffers[i], expected[i], "Verify
ing mediaSource.sourceBuffers[" + i + "]"); | 18 assert_equals(mediaSource.sourceBuffers[i], expected[i], 'Verify
ing mediaSource.sourceBuffers[' + i + ']'); |
| 19 assert_equals(mediaSource.activeSourceBuffers[i], expected[i], "
Verifying mediaSource.activeSourceBuffers[" + i + "]"); | |
| 20 } | |
| 21 } | 19 } |
| 22 | 20 |
| 23 mediasource_test(function(test, mediaElement, mediaSource) | 21 mediasource_test(function(test, mediaElement, mediaSource) |
| 24 { | 22 { |
| 25 test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "so
urceBuffers"); | 23 test.expectEvent(mediaSource.sourceBuffers, 'addsourcebuffer', 'so
urceBuffers'); |
| 26 test.expectEvent(mediaSource.activeSourceBuffers, "addsourcebuffer
", "activeSourceBuffers"); | |
| 27 var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VI
DEO_ONLY_TYPE); | 24 var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VI
DEO_ONLY_TYPE); |
| 28 var sourceBufferB = null; | 25 var sourceBufferB = null; |
| 29 | 26 |
| 30 test.waitForExpectedEvents(function() | 27 test.waitForExpectedEvents(function() |
| 31 { | 28 { |
| 32 test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer",
"sourceBuffers"); | 29 test.expectEvent(mediaSource.sourceBuffers, 'addsourcebuffer',
'sourceBuffers'); |
| 33 test.expectEvent(mediaSource.activeSourceBuffers, "addsourcebu
ffer", "activeSourceBuffers"); | |
| 34 sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AU
DIO_ONLY_TYPE); | 30 sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AU
DIO_ONLY_TYPE); |
| 35 | 31 |
| 36 verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBuf
ferB]); | 32 verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBuf
ferB]); |
| 37 }); | 33 }); |
| 38 | 34 |
| 39 test.waitForExpectedEvents(function() | 35 test.waitForExpectedEvents(function() |
| 40 { | 36 { |
| 41 test.expectEvent(mediaSource.activeSourceBuffers, "removesourc
ebuffer", "activeSourceBuffers"); | 37 test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffe
r', 'sourceBuffers'); |
| 42 test.expectEvent(mediaSource.sourceBuffers, "removesourcebuffe
r", "sourceBuffers"); | |
| 43 mediaSource.removeSourceBuffer(sourceBufferA); | 38 mediaSource.removeSourceBuffer(sourceBufferA); |
| 44 | 39 |
| 45 verifySourceBufferLists(mediaSource, [sourceBufferB]); | 40 verifySourceBufferLists(mediaSource, [sourceBufferB]); |
| 46 | 41 |
| 47 test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer",
"sourceBuffers"); | 42 test.expectEvent(mediaSource.sourceBuffers, 'addsourcebuffer',
'sourceBuffers'); |
| 48 test.expectEvent(mediaSource.activeSourceBuffers, "addsourcebu
ffer", "activeSourceBuffers"); | |
| 49 sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VI
DEO_ONLY_TYPE); | 43 sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VI
DEO_ONLY_TYPE); |
| 50 | 44 |
| 51 verifySourceBufferLists(mediaSource, [sourceBufferB, sourceBuf
ferA]); | 45 verifySourceBufferLists(mediaSource, [sourceBufferB, sourceBuf
ferA]); |
| 52 }); | 46 }); |
| 53 | 47 |
| 54 test.waitForExpectedEvents(function() | 48 test.waitForExpectedEvents(function() |
| 55 { | 49 { |
| 56 test.done(); | 50 test.done(); |
| 57 }); | 51 }); |
| 58 }, "Test SourceBufferList event dispatching."); | 52 }, 'Test SourceBufferList event dispatching.'); |
| 59 | 53 |
| 60 mediasource_test(function(test, mediaElement, mediaSource) | 54 mediasource_test(function(test, mediaElement, mediaSource) |
| 61 { | 55 { |
| 62 test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "so
urceBuffers"); | 56 test.expectEvent(mediaSource.sourceBuffers, 'addsourcebuffer', 'so
urceBuffers'); |
| 63 test.expectEvent(mediaSource.activeSourceBuffers, "addsourcebuffer
", "activeSourceBuffers"); | 57 test.expectEvent(mediaSource.sourceBuffers, 'addsourcebuffer', 'so
urceBuffers'); |
| 64 test.expectEvent(mediaSource.sourceBuffers, "addsourcebuffer", "so
urceBuffers"); | |
| 65 test.expectEvent(mediaSource.activeSourceBuffers, "addsourcebuffer
", "activeSourceBuffers"); | |
| 66 var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VI
DEO_ONLY_TYPE); | 58 var sourceBufferA = mediaSource.addSourceBuffer(MediaSourceUtil.VI
DEO_ONLY_TYPE); |
| 67 var sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AU
DIO_ONLY_TYPE); | 59 var sourceBufferB = mediaSource.addSourceBuffer(MediaSourceUtil.AU
DIO_ONLY_TYPE); |
| 68 | 60 |
| 69 verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB
]); | 61 verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBufferB
]); |
| 70 | 62 |
| 71 test.waitForExpectedEvents(function() | 63 test.waitForExpectedEvents(function() |
| 72 { | 64 { |
| 73 verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBuf
ferB]); | 65 verifySourceBufferLists(mediaSource, [sourceBufferA, sourceBuf
ferB]); |
| 74 | 66 |
| 75 // Force the media element to close the MediaSource object. | 67 // Force the media element to close the MediaSource object. |
| 76 test.expectEvent(mediaSource.activeSourceBuffers, "removesourc
ebuffer", "activeSourceBuffers"); | 68 test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffe
r', 'sourceBuffers'); |
| 77 test.expectEvent(mediaSource.sourceBuffers, "removesourcebuffe
r", "sourceBuffers"); | 69 test.expectEvent(mediaSource, 'sourceclose', 'mediaSource clos
ing'); |
| 78 test.expectEvent(mediaSource, "sourceclose", "mediaSource clos
ing"); | 70 test.expectEvent(mediaElement, 'error', 'mediaElement error lo
ading'); |
| 79 mediaElement.src = ""; | 71 mediaElement.src = ''; |
| 80 }); | 72 }); |
| 81 | 73 |
| 82 test.waitForExpectedEvents(function() | 74 test.waitForExpectedEvents(function() |
| 83 { | 75 { |
| 84 assert_equals(mediaSource.readyState, "closed", "mediaSource i
s closed."); | 76 assert_equals(mediaElement.error.code, MediaError.MEDIA_ERR_SR
C_NOT_SUPPORTED, 'Expected error code'); |
| 77 assert_equals(mediaSource.readyState, 'closed', 'mediaSource i
s closed.'); |
| 85 | 78 |
| 86 verifySourceBufferLists(mediaSource, []); | 79 verifySourceBufferLists(mediaSource, []); |
| 87 test.done(); | 80 test.done(); |
| 88 }); | 81 }); |
| 89 }, "Test that only 1 removesourcebuffer event fires on each SourceBuff
erList when the MediaSource closes."); | 82 }, 'Test that only 1 removesourcebuffer event fires on sourceBuffers w
hen the MediaSource closes.'); |
| 90 | 83 |
| 84 mediasource_testafterdataloaded_nofailonerror(function(test, mediaElem
ent, mediaSource, segmentInfo, sourceBuffer, mediaData) |
| 85 { |
| 86 // FIXME: Test two activeSourceBuffers, either demuxed or once mul
titrack is supported. |
| 87 var initSegment = MediaSourceUtil.extractSegmentData(mediaData, se
gmentInfo.init); |
| 88 |
| 89 test.expectEvent(sourceBuffer, 'updateend', 'initSegment append en
ded.'); |
| 90 test.expectEvent(mediaElement, 'loadedmetadata', 'loadedmetadata d
one.'); |
| 91 sourceBuffer.appendBuffer(initSegment); |
| 92 |
| 93 test.waitForExpectedEvents(function() |
| 94 { |
| 95 assert_equals(mediaSource.sourceBuffers.length, 1, 'mediaSourc
e sourceBuffers'); |
| 96 assert_equals(mediaSource.activeSourceBuffers.length, 1, 'medi
aSource activeSourceBuffers'); |
| 97 |
| 98 // Force the media element to close the MediaSource object. |
| 99 test.expectEvent(mediaSource.sourceBuffers, 'removesourcebuffe
r', 'sourcebuffers'); |
| 100 test.expectEvent(mediaSource.activeSourceBuffers, 'removesourc
ebuffer', 'activesourcebuffers'); |
| 101 test.expectEvent(mediaSource, 'sourceclose', 'mediaSource clos
ing'); |
| 102 test.expectEvent(mediaElement, 'error', 'mediaElement error lo
ading'); |
| 103 mediaElement.src = ''; |
| 104 }); |
| 105 |
| 106 test.waitForExpectedEvents(function() |
| 107 { |
| 108 assert_equals(mediaElement.error.code, MediaError.MEDIA_ERR_SR
C_NOT_SUPPORTED, 'Expected error code'); |
| 109 assert_equals(mediaSource.readyState, 'closed', 'mediaSource i
s closed.'); |
| 110 assert_equals(mediaSource.sourceBuffers.length, 0, 'mediaSourc
e sourceBuffers'); |
| 111 assert_equals(mediaSource.activeSourceBuffers.length, 0, 'medi
aSource activeSourceBuffers'); |
| 112 test.done(); |
| 113 }); |
| 114 }, 'Test removesourcebuffer event firing on sourceBuffers and activeSo
urceBuffers when MediaSource closes.'); |
| 91 </script> | 115 </script> |
| 92 </body> | 116 </body> |
| 93 </html> | 117 </html> |
| OLD | NEW |